Skip to content

Commit 2346fad

Browse files
committed
Update chat settings to use new models
1 parent 90b72d1 commit 2346fad

1 file changed

Lines changed: 27 additions & 67 deletions

File tree

Core/Sources/HostApp/FeatureSettings/ChatSettingsView.swift

Lines changed: 27 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ struct ChatSettingsView: View {
55
class Settings: ObservableObject {
66
static let availableLocalizedLocales = Locale.availableLocalizedLocales
77
@AppStorage(\.chatGPTLanguage) var chatGPTLanguage
8-
@AppStorage(\.chatGPTMaxToken) var chatGPTMaxToken
98
@AppStorage(\.chatGPTTemperature) var chatGPTTemperature
109
@AppStorage(\.chatGPTMaxMessageCount) var chatGPTMaxMessageCount
1110
@AppStorage(\.chatFontSize) var chatFontSize
@@ -14,13 +13,12 @@ struct ChatSettingsView: View {
1413
var maxFocusedCodeLineCount
1514
@AppStorage(\.useCodeScopeByDefaultInChatContext)
1615
var useCodeScopeByDefaultInChatContext
17-
18-
@AppStorage(\.chatFeatureProvider) var chatFeatureProvider
19-
@AppStorage(\.chatGPTModel) var chatGPTModel
16+
@AppStorage(\.defaultChatFeatureChatModelId) var defaultChatFeatureChatModelId
2017
@AppStorage(\.defaultChatSystemPrompt) var defaultChatSystemPrompt
2118
@AppStorage(\.chatSearchPluginMaxIterations) var chatSearchPluginMaxIterations
22-
23-
@AppStorage(\.embeddingFeatureProvider) var embeddingFeatureProvider
19+
@AppStorage(\.defaultChatFeatureEmbeddingModelId) var defaultChatFeatureEmbeddingModelId
20+
@AppStorage(\.chatModels) var chatModels
21+
@AppStorage(\.embeddingModels) var embeddingModels
2422

2523
init() {}
2624
}
@@ -47,18 +45,34 @@ struct ChatSettingsView: View {
4745
Form {
4846
Picker(
4947
"Chat Feature Provider",
50-
selection: $settings.chatFeatureProvider
48+
selection: $settings.defaultChatFeatureChatModelId
5149
) {
52-
Text("OpenAI").tag(ChatFeatureProvider.openAI)
53-
Text("Azure OpenAI").tag(ChatFeatureProvider.azureOpenAI)
50+
if !settings.chatModels
51+
.contains(where: { $0.id == settings.defaultChatFeatureChatModelId })
52+
{
53+
Text(settings.chatModels.first?.name ?? "No Model Found")
54+
.tag(settings.defaultChatFeatureChatModelId)
55+
}
56+
57+
ForEach(settings.chatModels, id: \.id) { chatModel in
58+
Text(chatModel.name).tag(chatModel.id)
59+
}
5460
}
55-
61+
5662
Picker(
5763
"Embedding Feature Provider",
58-
selection: $settings.embeddingFeatureProvider
64+
selection: $settings.defaultChatFeatureEmbeddingModelId
5965
) {
60-
Text("OpenAI").tag(EmbeddingFeatureProvider.openAI)
61-
Text("Azure OpenAI").tag(EmbeddingFeatureProvider.azureOpenAI)
66+
if !settings.embeddingModels
67+
.contains(where: { $0.id == settings.defaultChatFeatureEmbeddingModelId })
68+
{
69+
Text(settings.embeddingModels.first?.name ?? "No Model Found")
70+
.tag(settings.defaultChatFeatureEmbeddingModelId)
71+
}
72+
73+
ForEach(settings.embeddingModels, id: \.id) { embeddingModel in
74+
Text(embeddingModel.name).tag(embeddingModel.id)
75+
}
6276
}
6377

6478
if #available(macOS 13.0, *) {
@@ -72,39 +86,6 @@ struct ChatSettingsView: View {
7286
}
7387
}
7488

75-
let binding = Binding(
76-
get: { String(settings.chatGPTMaxToken) },
77-
set: {
78-
if let selectionMaxToken = Int($0) {
79-
settings.chatGPTMaxToken = selectionMaxToken
80-
} else {
81-
settings.chatGPTMaxToken = 0
82-
}
83-
}
84-
)
85-
HStack {
86-
Stepper(
87-
value: $settings.chatGPTMaxToken,
88-
in: 0...Int.max,
89-
step: 1
90-
) {
91-
Text("Max Token (Including Reply)")
92-
.multilineTextAlignment(.trailing)
93-
}
94-
TextField(text: binding) {
95-
EmptyView()
96-
}
97-
.labelsHidden()
98-
.textFieldStyle(.roundedBorder)
99-
.foregroundColor(maxTokenOverLimit ? .red : .primary)
100-
101-
if let model = ChatGPTModel(rawValue: settings.chatGPTModel),
102-
settings.chatFeatureProvider == .openAI
103-
{
104-
Text("Max: \(model.maxToken)")
105-
}
106-
}
107-
10889
HStack {
10990
Slider(value: $settings.chatGPTTemperature, in: 0...2, step: 0.1) {
11091
Text("Temperature")
@@ -141,14 +122,6 @@ struct ChatSettingsView: View {
141122
.lineLimit(6)
142123
}
143124
.padding(.vertical, 4)
144-
}.onAppear {
145-
checkMaxToken()
146-
}.onChange(of: settings.chatFeatureProvider) { _ in
147-
checkMaxToken()
148-
}.onChange(of: settings.chatGPTModel) { _ in
149-
checkMaxToken()
150-
}.onChange(of: settings.chatGPTMaxToken) { _ in
151-
checkMaxToken()
152125
}
153126
}
154127

@@ -251,19 +224,6 @@ struct ChatSettingsView: View {
251224
)
252225
}
253226
}
254-
255-
func checkMaxToken() {
256-
switch settings.chatFeatureProvider {
257-
case .openAI:
258-
if let model = ChatGPTModel(rawValue: settings.chatGPTModel) {
259-
maxTokenOverLimit = model.maxToken < settings.chatGPTMaxToken
260-
} else {
261-
maxTokenOverLimit = false
262-
}
263-
case .azureOpenAI:
264-
maxTokenOverLimit = false
265-
}
266-
}
267227
}
268228

269229
// MARK: - Preview

0 commit comments

Comments
 (0)