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