1 /*
2  * Copyright (c) Meta Platforms, Inc. and affiliates.
3  * All rights reserved.
4  *
5  * This source code is licensed under the BSD-style license found in the
6  * LICENSE file in the root directory of this source tree.
7  */
8 
9 package com.example.executorchllamademo;
10 
11 public class SettingsFields {
12 
getModelFilePath()13   public String getModelFilePath() {
14     return modelFilePath;
15   }
16 
getTokenizerFilePath()17   public String getTokenizerFilePath() {
18     return tokenizerFilePath;
19   }
20 
getTemperature()21   public double getTemperature() {
22     return temperature;
23   }
24 
getSystemPrompt()25   public String getSystemPrompt() {
26     return systemPrompt;
27   }
28 
getModelType()29   public ModelType getModelType() {
30     return modelType;
31   }
32 
getBackendType()33   public BackendType getBackendType() {
34     return backendType;
35   }
36 
getUserPrompt()37   public String getUserPrompt() {
38     return userPrompt;
39   }
40 
getFormattedSystemAndUserPrompt(String prompt)41   public String getFormattedSystemAndUserPrompt(String prompt) {
42     return getFormattedSystemPrompt() + getFormattedUserPrompt(prompt);
43   }
44 
getFormattedSystemPrompt()45   public String getFormattedSystemPrompt() {
46     return PromptFormat.getSystemPromptTemplate(modelType)
47         .replace(PromptFormat.SYSTEM_PLACEHOLDER, systemPrompt);
48   }
49 
getFormattedUserPrompt(String prompt)50   public String getFormattedUserPrompt(String prompt) {
51     return userPrompt.replace(PromptFormat.USER_PLACEHOLDER, prompt);
52   }
53 
getIsClearChatHistory()54   public boolean getIsClearChatHistory() {
55     return isClearChatHistory;
56   }
57 
getIsLoadModel()58   public boolean getIsLoadModel() {
59     return isLoadModel;
60   }
61 
62   private String modelFilePath;
63   private String tokenizerFilePath;
64   private double temperature;
65   private String systemPrompt;
66   private String userPrompt;
67   private boolean isClearChatHistory;
68   private boolean isLoadModel;
69   private ModelType modelType;
70   private BackendType backendType;
71 
SettingsFields()72   public SettingsFields() {
73     ModelType DEFAULT_MODEL = ModelType.LLAMA_3;
74     BackendType DEFAULT_BACKEND = BackendType.XNNPACK;
75 
76     modelFilePath = "";
77     tokenizerFilePath = "";
78     temperature = SettingsActivity.TEMPERATURE_MIN_VALUE;
79     systemPrompt = "";
80     userPrompt = PromptFormat.getUserPromptTemplate(DEFAULT_MODEL);
81     isClearChatHistory = false;
82     isLoadModel = false;
83     modelType = DEFAULT_MODEL;
84     backendType = DEFAULT_BACKEND;
85   }
86 
SettingsFields(SettingsFields settingsFields)87   public SettingsFields(SettingsFields settingsFields) {
88     this.modelFilePath = settingsFields.modelFilePath;
89     this.tokenizerFilePath = settingsFields.tokenizerFilePath;
90     this.temperature = settingsFields.temperature;
91     this.systemPrompt = settingsFields.getSystemPrompt();
92     this.userPrompt = settingsFields.getUserPrompt();
93     this.isClearChatHistory = settingsFields.getIsClearChatHistory();
94     this.isLoadModel = settingsFields.getIsLoadModel();
95     this.modelType = settingsFields.modelType;
96     this.backendType = settingsFields.backendType;
97   }
98 
saveModelPath(String modelFilePath)99   public void saveModelPath(String modelFilePath) {
100     this.modelFilePath = modelFilePath;
101   }
102 
saveTokenizerPath(String tokenizerFilePath)103   public void saveTokenizerPath(String tokenizerFilePath) {
104     this.tokenizerFilePath = tokenizerFilePath;
105   }
106 
saveModelType(ModelType modelType)107   public void saveModelType(ModelType modelType) {
108     this.modelType = modelType;
109   }
110 
saveBackendType(BackendType backendType)111   public void saveBackendType(BackendType backendType) {
112     this.backendType = backendType;
113   }
114 
saveParameters(Double temperature)115   public void saveParameters(Double temperature) {
116     this.temperature = temperature;
117   }
118 
savePrompts(String systemPrompt, String userPrompt)119   public void savePrompts(String systemPrompt, String userPrompt) {
120     this.systemPrompt = systemPrompt;
121     this.userPrompt = userPrompt;
122   }
123 
saveIsClearChatHistory(boolean needToClear)124   public void saveIsClearChatHistory(boolean needToClear) {
125     this.isClearChatHistory = needToClear;
126   }
127 
saveLoadModelAction(boolean shouldLoadModel)128   public void saveLoadModelAction(boolean shouldLoadModel) {
129     this.isLoadModel = shouldLoadModel;
130   }
131 
equals(SettingsFields anotherSettingsFields)132   public boolean equals(SettingsFields anotherSettingsFields) {
133     if (this == anotherSettingsFields) return true;
134     return modelFilePath.equals(anotherSettingsFields.modelFilePath)
135         && tokenizerFilePath.equals(anotherSettingsFields.tokenizerFilePath)
136         && temperature == anotherSettingsFields.temperature
137         && systemPrompt.equals(anotherSettingsFields.systemPrompt)
138         && userPrompt.equals(anotherSettingsFields.userPrompt)
139         && isClearChatHistory == anotherSettingsFields.isClearChatHistory
140         && isLoadModel == anotherSettingsFields.isLoadModel
141         && modelType == anotherSettingsFields.modelType
142         && backendType == anotherSettingsFields.backendType;
143   }
144 }
145