Skip to content

Commit a50ab68

Browse files
committed
Update preferences
1 parent aa226ce commit a50ab68

19 files changed

Lines changed: 90 additions & 15 deletions

Core/Sources/HostApp/AccountSettings/AzureView.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ final class AzureViewSettings: ObservableObject {
99
@AppStorage(\.azureOpenAIAPIKey) var azureOpenAIAPIKey: String
1010
@AppStorage(\.azureOpenAIBaseURL) var azureOpenAIBaseURL: String
1111
@AppStorage(\.azureChatGPTDeployment) var azureChatGPTDeployment: String
12+
@AppStorage(\.azureEmbeddingDeployment) var azureEmbeddingDeployment: String
1213
init() {}
1314
}
1415

@@ -58,6 +59,15 @@ struct AzureView: View {
5859
}
5960
.disabled(isTesting)
6061
}
62+
63+
HStack {
64+
TextField(
65+
text: $settings.azureEmbeddingDeployment,
66+
prompt: Text("")
67+
) {
68+
Text("Embedding Model Deployment Name")
69+
}.textFieldStyle(.roundedBorder)
70+
}
6171
}
6272
}
6373
}

Core/Sources/HostApp/AccountSettings/OpenAIView.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ struct OpenAIView: View {
99
final class Settings: ObservableObject {
1010
@AppStorage(\.openAIAPIKey) var openAIAPIKey: String
1111
@AppStorage(\.chatGPTModel) var chatGPTModel: String
12+
@AppStorage(\.embeddingModel) var embeddingModel: String
1213
@AppStorage(\.openAIBaseURL) var openAIBaseURL: String
1314
init() {}
1415
}
@@ -82,6 +83,26 @@ struct OpenAIView: View {
8283
Image(systemName: "questionmark.circle.fill")
8384
}.buttonStyle(.plain)
8485
}
86+
87+
HStack {
88+
Picker(selection: $settings.embeddingModel) {
89+
if !settings.embeddingModel.isEmpty,
90+
OpenAIEmbeddingModel(rawValue: settings.embeddingModel) == nil
91+
{
92+
Text(settings.embeddingModel).tag(settings.embeddingModel)
93+
}
94+
ForEach(OpenAIEmbeddingModel.allCases, id: \.self) { model in
95+
Text(model.rawValue).tag(model.rawValue)
96+
}
97+
} label: {
98+
Text("Embedding Model")
99+
}.pickerStyle(.menu)
100+
Button(action: {
101+
openURL(modelURL)
102+
}) {
103+
Image(systemName: "questionmark.circle.fill")
104+
}.buttonStyle(.plain)
105+
}
85106
}
86107
}
87108
}

Core/Sources/HostApp/FeatureSettings/ChatSettingsView.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ struct ChatSettingsView: View {
2121
@AppStorage(\.chatGPTModel) var chatGPTModel
2222
@AppStorage(\.defaultChatSystemPrompt) var defaultChatSystemPrompt
2323
@AppStorage(\.chatSearchPluginMaxIterations) var chatSearchPluginMaxIterations
24+
25+
@AppStorage(\.embeddingFeatureProvider) var embeddingFeatureProvider
2426

2527
init() {}
2628
}
@@ -46,12 +48,20 @@ struct ChatSettingsView: View {
4648
var chatSettingsForm: some View {
4749
Form {
4850
Picker(
49-
"Feature Provider",
51+
"Chat Feature Provider",
5052
selection: $settings.chatFeatureProvider
5153
) {
5254
Text("OpenAI").tag(ChatFeatureProvider.openAI)
5355
Text("Azure OpenAI").tag(ChatFeatureProvider.azureOpenAI)
5456
}
57+
58+
Picker(
59+
"Embedding Feature Provider",
60+
selection: $settings.embeddingFeatureProvider
61+
) {
62+
Text("OpenAI").tag(EmbeddingFeatureProvider.openAI)
63+
Text("Azure OpenAI").tag(EmbeddingFeatureProvider.azureOpenAI)
64+
}
5565

5666
if #available(macOS 13.0, *) {
5767
LabeledContent("Reply in Language") {

Tool/Sources/LangChain/VectorStore/TemporaryUSearch.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ private actor TemporaryUSearchActor {
77
static let shared = TemporaryUSearchActor()
88
}
99

10+
#warning(
11+
"It's not working yet because of a bug in USearch https://github.com/unum-cloud/usearch/issues/131"
12+
)
13+
1014
/// A temporary USearch index for small and temporary documents.
1115
public actor TemporaryUSearch: VectorStore {
1216
public let identifier: String

Tool/Sources/OpenAIService/Configuration/EmbeddingConfiguration.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import Foundation
22
import Preferences
33

4-
public typealias EmbeddingFeatureProvider = ChatFeatureProvider
5-
64
public protocol EmbeddingConfiguration {
75
var featureProvider: EmbeddingFeatureProvider { get }
86
var endpoint: String { get }
@@ -27,7 +25,7 @@ extension EmbeddingConfiguration {
2725
}
2826
}
2927

30-
func apiKey(for provider: ChatFeatureProvider) -> String {
28+
func apiKey(for provider: EmbeddingFeatureProvider) -> String {
3129
switch provider {
3230
case .openAI:
3331
return UserDefaults.shared.value(for: \.openAIAPIKey)

Tool/Sources/OpenAIService/Configuration/UserPreferenceEmbeddingConfiguration.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import Foundation
22
import Preferences
33

44
public struct UserPreferenceEmbeddingConfiguration: EmbeddingConfiguration {
5-
public var featureProvider: ChatFeatureProvider {
6-
UserDefaults.shared.value(for: \.chatFeatureProvider)
5+
public var featureProvider: EmbeddingFeatureProvider {
6+
UserDefaults.shared.value(for: \.embeddingFeatureProvider)
77
}
88

99
public var model: String {
10-
return "text-embedding-ada-002"
10+
OpenAIEmbeddingModel.textEmbeddingAda002.rawValue
1111
}
1212

1313
public var endpoint: String {
@@ -19,7 +19,7 @@ public struct UserPreferenceEmbeddingConfiguration: EmbeddingConfiguration {
1919
}
2020

2121
public var maxToken: Int {
22-
8191
22+
OpenAIEmbeddingModel.textEmbeddingAda002.maxToken
2323
}
2424

2525
public init() {}
@@ -29,15 +29,15 @@ public class OverridingEmbeddingConfiguration<
2929
Configuration: EmbeddingConfiguration
3030
>: EmbeddingConfiguration {
3131
public struct Overriding {
32-
var featureProvider: ChatFeatureProvider?
32+
var featureProvider: EmbeddingFeatureProvider?
3333
var model: String?
3434
var endPoint: String?
3535
var apiKey: String?
3636
var maxTokens: Int?
3737

3838
public init(
3939
model: String? = nil,
40-
featureProvider: ChatFeatureProvider? = nil,
40+
featureProvider: EmbeddingFeatureProvider? = nil,
4141
endPoint: String? = nil,
4242
apiKey: String? = nil,
4343
maxTokens: Int? = nil
@@ -58,7 +58,7 @@ public class OverridingEmbeddingConfiguration<
5858
self.configuration = configuration
5959
}
6060

61-
public var featureProvider: ChatFeatureProvider {
61+
public var featureProvider: EmbeddingFeatureProvider {
6262
overriding.featureProvider ?? configuration.featureProvider
6363
}
6464

Tool/Sources/Preferences/Keys.swift

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public extension UserDefaultPreferenceKeys {
7979
}
8080

8181
var chatGPTModel: PreferenceKey<String> {
82-
.init(defaultValue: Preferences.ChatGPTModel.gpt35Turbo.rawValue, key: "ChatGPTModel")
82+
.init(defaultValue: ChatGPTModel.gpt35Turbo.rawValue, key: "ChatGPTModel")
8383
}
8484

8585
var chatGPTMaxToken: PreferenceKey<Int> {
@@ -97,6 +97,13 @@ public extension UserDefaultPreferenceKeys {
9797
var chatGPTTemperature: PreferenceKey<Double> {
9898
.init(defaultValue: 0.7, key: "ChatGPTTemperature")
9999
}
100+
101+
var embeddingModel: PreferenceKey<String> {
102+
.init(
103+
defaultValue: OpenAIEmbeddingModel.textEmbeddingAda002.rawValue,
104+
key: "OpenAIEmbeddingModel"
105+
)
106+
}
100107
}
101108

102109
// MARK: - Azure OpenAI Settings
@@ -113,6 +120,10 @@ public extension UserDefaultPreferenceKeys {
113120
var azureChatGPTDeployment: PreferenceKey<String> {
114121
.init(defaultValue: "", key: "AzureChatGPTDeployment")
115122
}
123+
124+
var azureEmbeddingDeployment: PreferenceKey<String> {
125+
.init(defaultValue: "", key: "AzureEmbeddingDeployment")
126+
}
116127
}
117128

118129
// MARK: - GitHub Copilot Settings
@@ -125,7 +136,7 @@ public extension UserDefaultPreferenceKeys {
125136
var gitHubCopilotProxyHost: PreferenceKey<String> {
126137
.init(defaultValue: "", key: "GitHubCopilotProxyHost")
127138
}
128-
139+
129140
var gitHubCopilotProxyPort: PreferenceKey<String> {
130141
.init(defaultValue: "", key: "GitHubCopilotProxyPort")
131142
}
@@ -221,6 +232,10 @@ public extension UserDefaultPreferenceKeys {
221232
var chatFeatureProvider: PreferenceKey<ChatFeatureProvider> {
222233
.init(defaultValue: .openAI, key: "ChatFeatureProvider")
223234
}
235+
236+
var embeddingFeatureProvider: PreferenceKey<EmbeddingFeatureProvider> {
237+
.init(defaultValue: .openAI, key: "EmbeddingFeatureProvider")
238+
}
224239

225240
var chatFontSize: PreferenceKey<Double> {
226241
.init(defaultValue: 12, key: "ChatFontSize")
@@ -345,7 +360,7 @@ public extension UserDefaultPreferenceKeys {
345360
var triggerActionWithAccessibilityAPI: FeatureFlag {
346361
.init(defaultValue: true, key: "FeatureFlag-TriggerActionWithAccessibilityAPI")
347362
}
348-
363+
349364
var alwaysAcceptSuggestionWithAccessibilityAPI: FeatureFlag {
350365
.init(defaultValue: false, key: "FeatureFlag-AlwaysAcceptSuggestionWithAccessibilityAPI")
351366
}
@@ -361,7 +376,7 @@ public extension UserDefaultPreferenceKeys {
361376
var animationCCrashSuggestion: FeatureFlag {
362377
.init(defaultValue: true, key: "FeatureFlag-AnimationCCrashSuggestion")
363378
}
364-
379+
365380
var enableXcodeInspectorDebugMenu: FeatureFlag {
366381
.init(defaultValue: false, key: "FeatureFlag-EnableXcodeInspectorDebugMenu")
367382
}
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)