File tree Expand file tree Collapse file tree
Core/Sources/HostApp/AccountSettings/ChatModelManagement
Tool/Sources/Preferences/Types Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -114,15 +114,26 @@ struct ChatModelEdit: ReducerProtocol {
114114 return . none
115115
116116 case . checkSuggestedMaxTokens:
117- guard state. format == . openAI,
118- let knownModel = ChatGPTModel ( rawValue: state. modelName)
119- else {
117+ switch state. format {
118+ case . openAI:
119+ if let knownModel = ChatGPTModel ( rawValue: state. modelName) {
120+ state. suggestedMaxTokens = knownModel. maxToken
121+ } else {
122+ state. suggestedMaxTokens = nil
123+ }
124+ return . none
125+ case . googleAI:
126+ if let knownModel = GoogleGenerativeAIModel ( rawValue: state. modelName) {
127+ state. suggestedMaxTokens = knownModel. maxToken
128+ } else {
129+ state. suggestedMaxTokens = nil
130+ }
131+ return . none
132+ default :
120133 state. suggestedMaxTokens = nil
121134 return . none
122135 }
123- state. suggestedMaxTokens = knownModel. maxToken
124- return . none
125-
136+
126137 case . apiKeySelection:
127138 return . none
128139
Original file line number Diff line number Diff line change @@ -277,12 +277,27 @@ struct ChatModelEditView: View {
277277 @ViewBuilder
278278 var googleAI : some View {
279279 apiKeyNamePicker
280-
280+
281281 WithViewStore (
282282 store,
283283 removeDuplicates: { $0. modelName == $1. modelName }
284284 ) { viewStore in
285285 TextField ( " Model Name " , text: viewStore. $modelName)
286+ . overlay ( alignment: . trailing) {
287+ Picker (
288+ " " ,
289+ selection: viewStore. $modelName,
290+ content: {
291+ if GoogleGenerativeAIModel ( rawValue: viewStore. state. modelName) == nil {
292+ Text ( " Custom Model " ) . tag ( viewStore. state. modelName)
293+ }
294+ ForEach ( GoogleGenerativeAIModel . allCases, id: \. self) { model in
295+ Text ( model. rawValue) . tag ( model. rawValue)
296+ }
297+ }
298+ )
299+ . frame ( width: 20 )
300+ }
286301 }
287302
288303 maxTokensTextField
Original file line number Diff line number Diff line change 1+ import Foundation
2+
3+ public enum GoogleGenerativeAIModel : String {
4+ case geminiPro = " gemini-pro "
5+ }
6+
7+ public extension GoogleGenerativeAIModel {
8+ var maxToken : Int {
9+ switch self {
10+ case . geminiPro:
11+ return 32768
12+ }
13+ }
14+ }
15+
16+ extension GoogleGenerativeAIModel : CaseIterable { }
17+
You can’t perform that action at this time.
0 commit comments