Skip to content

Commit a27f5c7

Browse files
committed
Allow setting max token that is larger than the size defined in the model
1 parent 90bacd9 commit a27f5c7

File tree

2 files changed

+38
-26
lines changed

2 files changed

+38
-26
lines changed

Core/Sources/HostApp/AccountSettings/OpenAIView.swift

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ struct OpenAIView: View {
2323
)!
2424
@Environment(\.openURL) var openURL
2525
@StateObject var settings = OpenAIViewSettings()
26+
@State var maxTokenOverLimit = false
2627

2728
var body: some View {
2829
Form {
@@ -76,33 +77,39 @@ struct OpenAIView: View {
7677
}
7778
}
7879

79-
if let model = ChatGPTModel(rawValue: settings.chatGPTModel) {
80-
let binding = Binding(
81-
get: { String(settings.chatGPTMaxToken) },
82-
set: {
83-
if let selectionMaxToken = Int($0) {
84-
settings.chatGPTMaxToken = model
85-
.maxToken < selectionMaxToken ? model
86-
.maxToken : selectionMaxToken
80+
let binding = Binding(
81+
get: { String(settings.chatGPTMaxToken) },
82+
set: {
83+
if let selectionMaxToken = Int($0) {
84+
if let model = ChatGPTModel(rawValue: settings.chatGPTModel) {
85+
maxTokenOverLimit = model.maxToken < selectionMaxToken
8786
} else {
88-
settings.chatGPTMaxToken = 0
87+
maxTokenOverLimit = false
8988
}
89+
settings.chatGPTMaxToken = selectionMaxToken
90+
} else {
91+
settings.chatGPTMaxToken = 0
9092
}
91-
)
92-
HStack {
93-
Stepper(
94-
value: $settings.chatGPTMaxToken,
95-
in: 0...model.maxToken,
96-
step: 1
97-
) {
98-
Text("Max Token (Including Reply)")
99-
.multilineTextAlignment(.trailing)
100-
}
101-
TextField(text: binding) {
102-
EmptyView()
103-
}
104-
.labelsHidden()
105-
.textFieldStyle(.roundedBorder)
93+
}
94+
)
95+
HStack {
96+
Stepper(
97+
value: $settings.chatGPTMaxToken,
98+
in: 0...Int.max,
99+
step: 1
100+
) {
101+
Text("Max Token (Including Reply)")
102+
.multilineTextAlignment(.trailing)
103+
}
104+
TextField(text: binding) {
105+
EmptyView()
106+
}
107+
.labelsHidden()
108+
.textFieldStyle(.roundedBorder)
109+
.foregroundColor(maxTokenOverLimit ? .red : .primary)
110+
111+
if let model = ChatGPTModel(rawValue: settings.chatGPTModel) {
112+
Text("Max: \(model.maxToken)")
106113
}
107114
}
108115

@@ -134,6 +141,11 @@ struct OpenAIView: View {
134141
Text("7 Messages").tag(7)
135142
}
136143
}
144+
.onAppear {
145+
if let model = ChatGPTModel(rawValue: settings.chatGPTModel) {
146+
maxTokenOverLimit = model.maxToken < settings.chatGPTMaxToken
147+
}
148+
}
137149
}
138150

139151
var languagePicker: some View {

Core/Sources/Preferences/ChatGPTModel.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ public extension ChatGPTModel {
3030
case .gpt432k0314:
3131
return 32768
3232
case .gpt35Turbo:
33-
return 8192
33+
return 4096
3434
case .gpt35Turbo0301:
35-
return 8192
35+
return 4096
3636
}
3737
}
3838
}

0 commit comments

Comments
 (0)