@@ -10,102 +10,107 @@ func migrateTo240(
1010 let finishedMigrationKey = " MigrateTo240Finished "
1111 if defaults. bool ( forKey: finishedMigrationKey) { return }
1212
13- let chatModelOpenAIId = UUID ( ) . uuidString
14- let chatModelAzureOpenAIId = UUID ( ) . uuidString
15- let embeddingModelOpenAIId = UUID ( ) . uuidString
16- let embeddingModelAzureOpenAIId = UUID ( ) . uuidString
17-
18- let openAIAPIKeyName = " OpenAI "
19- let openAIAPIKey = defaults. deprecatedValue ( for: \. openAIAPIKey)
20- if !openAIAPIKey. isEmpty {
21- try keychain. update ( openAIAPIKey, key: openAIAPIKeyName)
22- }
23-
24- let azureOpenAIAPIKeyName = " Azure OpenAI "
25- let azureOpenAIAPIKey = defaults. deprecatedValue ( for: \. azureOpenAIAPIKey)
26- if !azureOpenAIAPIKey. isEmpty {
27- try keychain. update ( azureOpenAIAPIKey, key: azureOpenAIAPIKeyName)
28- }
29-
30- defaults. setupDefaultValue ( for: \. chatModels, defaultValue: {
31- let openAIModel = ChatGPTModel ( rawValue: defaults. deprecatedValue ( for: \. chatGPTModel) )
32-
33- let openAI = ChatModel (
34- id: chatModelOpenAIId,
35- name: " OpenAI " ,
36- format: . openAI,
37- info: . init(
38- apiKeyName: openAIAPIKeyName,
39- baseURL: defaults. deprecatedValue ( for: \. openAIBaseURL) ,
40- maxTokens: openAIModel? . maxToken ?? defaults
41- . deprecatedValue ( for: \. chatGPTMaxToken) ,
42- modelName: openAIModel? . rawValue ?? defaults
43- . deprecatedValue ( for: \. chatGPTModel)
13+ do {
14+ let chatModelOpenAIId = UUID ( ) . uuidString
15+ let chatModelAzureOpenAIId = UUID ( ) . uuidString
16+ let embeddingModelOpenAIId = UUID ( ) . uuidString
17+ let embeddingModelAzureOpenAIId = UUID ( ) . uuidString
18+
19+ let openAIAPIKeyName = " OpenAI "
20+ let openAIAPIKey = defaults. deprecatedValue ( for: \. openAIAPIKey)
21+ if !openAIAPIKey. isEmpty {
22+ try keychain. update ( openAIAPIKey, key: openAIAPIKeyName)
23+ }
24+
25+ let azureOpenAIAPIKeyName = " Azure OpenAI "
26+ let azureOpenAIAPIKey = defaults. deprecatedValue ( for: \. azureOpenAIAPIKey)
27+ if !azureOpenAIAPIKey. isEmpty {
28+ try keychain. update ( azureOpenAIAPIKey, key: azureOpenAIAPIKeyName)
29+ }
30+
31+ defaults. set ( {
32+ let openAIModel = ChatGPTModel ( rawValue: defaults. deprecatedValue ( for: \. chatGPTModel) )
33+
34+ let openAI = ChatModel (
35+ id: chatModelOpenAIId,
36+ name: " OpenAI " ,
37+ format: . openAI,
38+ info: . init(
39+ apiKeyName: openAIAPIKeyName,
40+ baseURL: defaults. deprecatedValue ( for: \. openAIBaseURL) ,
41+ maxTokens: openAIModel? . maxToken ?? defaults
42+ . deprecatedValue ( for: \. chatGPTMaxToken) ,
43+ modelName: openAIModel? . rawValue ?? defaults
44+ . deprecatedValue ( for: \. chatGPTModel)
45+ )
4446 )
45- )
46- let azureOpenAI = ChatModel (
47- id : chatModelAzureOpenAIId ,
48- name : " Azure OpenAI " ,
49- format : . azureOpenAI ,
50- info : . init (
51- apiKeyName : azureOpenAIAPIKeyName ,
52- baseURL : defaults. deprecatedValue ( for: \. azureOpenAIBaseURL ) ,
53- maxTokens : defaults . deprecatedValue ( for : \ . chatGPTMaxToken ) ,
54- modelName : defaults
55- . deprecatedValue ( for : \ . azureChatGPTDeployment )
47+ let azureOpenAI = ChatModel (
48+ id : chatModelAzureOpenAIId ,
49+ name : " Azure OpenAI " ,
50+ format : . azureOpenAI ,
51+ info : . init (
52+ apiKeyName : azureOpenAIAPIKeyName ,
53+ baseURL : defaults . deprecatedValue ( for : \ . azureOpenAIBaseURL ) ,
54+ maxTokens : defaults. deprecatedValue ( for: \. chatGPTMaxToken ) ,
55+ modelName : defaults
56+ . deprecatedValue ( for : \ . azureChatGPTDeployment )
57+ )
5658 )
57- )
58-
59- return [ openAI, azureOpenAI]
60- } ( ) )
61-
62- defaults. setupDefaultValue ( for: \. defaultChatFeatureChatModelId, defaultValue: {
63- if defaults. deprecatedValue ( for: \. chatFeatureProvider) == . azureOpenAI {
64- return chatModelAzureOpenAIId
65- }
66- return chatModelOpenAIId
67- } ( ) )
68-
69- defaults. setupDefaultValue ( for: \. embeddingModels, defaultValue: {
70- let openAIModel = OpenAIEmbeddingModel (
71- rawValue: defaults. deprecatedValue ( for: \. embeddingModel)
72- )
73-
74- let openAI = EmbeddingModel (
75- id: embeddingModelOpenAIId,
76- name: " OpenAI " ,
77- format: . openAI,
78- info: . init(
79- apiKeyName: openAIAPIKeyName,
80- baseURL: defaults. deprecatedValue ( for: \. openAIBaseURL) ,
81- maxTokens: openAIModel? . maxToken ?? 8191 ,
82- modelName: openAIModel? . rawValue ?? defaults. deprecatedValue ( for: \. embeddingModel)
59+
60+ return [ openAI, azureOpenAI]
61+ } ( ) , for: \. chatModels)
62+
63+ defaults. set ( {
64+ if defaults. deprecatedValue ( for: \. chatFeatureProvider) == . azureOpenAI {
65+ return chatModelAzureOpenAIId
66+ }
67+ return chatModelOpenAIId
68+ } ( ) , for: \. defaultChatFeatureChatModelId)
69+
70+ defaults. set ( {
71+ let openAIModel = OpenAIEmbeddingModel (
72+ rawValue: defaults. deprecatedValue ( for: \. embeddingModel)
8373 )
84- )
85-
86- let azureOpenAI = EmbeddingModel (
87- id: embeddingModelAzureOpenAIId,
88- name: " Azure OpenAI " ,
89- format: . azureOpenAI,
90- info: . init(
91- apiKeyName: azureOpenAIAPIKeyName,
92- baseURL: defaults. deprecatedValue ( for: \. azureOpenAIBaseURL) ,
93- maxTokens: 8191 ,
94- modelName: defaults
95- . deprecatedValue ( for: \. azureEmbeddingDeployment)
74+
75+ let openAI = EmbeddingModel (
76+ id: embeddingModelOpenAIId,
77+ name: " OpenAI " ,
78+ format: . openAI,
79+ info: . init(
80+ apiKeyName: openAIAPIKeyName,
81+ baseURL: defaults. deprecatedValue ( for: \. openAIBaseURL) ,
82+ maxTokens: openAIModel? . maxToken ?? 8191 ,
83+ modelName: openAIModel? . rawValue ?? defaults. deprecatedValue ( for: \. embeddingModel)
84+ )
9685 )
97- )
98-
99- return [ openAI, azureOpenAI]
100- } ( ) )
101-
102- defaults. setupDefaultValue ( for: \. defaultChatFeatureEmbeddingModelId, defaultValue: {
103- if defaults. deprecatedValue ( for: \. embeddingFeatureProvider) == . azureOpenAI {
104- return embeddingModelAzureOpenAIId
105- }
106- return embeddingModelOpenAIId
107- } ( ) )
108-
109- defaults. set ( true , forKey: finishedMigrationKey)
86+
87+ let azureOpenAI = EmbeddingModel (
88+ id: embeddingModelAzureOpenAIId,
89+ name: " Azure OpenAI " ,
90+ format: . azureOpenAI,
91+ info: . init(
92+ apiKeyName: azureOpenAIAPIKeyName,
93+ baseURL: defaults. deprecatedValue ( for: \. azureOpenAIBaseURL) ,
94+ maxTokens: 8191 ,
95+ modelName: defaults
96+ . deprecatedValue ( for: \. azureEmbeddingDeployment)
97+ )
98+ )
99+
100+ return [ openAI, azureOpenAI]
101+ } ( ) , for: \. embeddingModels)
102+
103+ defaults. set ( {
104+ if defaults. deprecatedValue ( for: \. embeddingFeatureProvider) == . azureOpenAI {
105+ return embeddingModelAzureOpenAIId
106+ }
107+ return embeddingModelOpenAIId
108+ } ( ) , for: \. defaultChatFeatureEmbeddingModelId)
109+
110+ defaults. set ( true , forKey: finishedMigrationKey)
111+ } catch {
112+ print ( error. localizedDescription)
113+ throw error
114+ }
110115}
111116
0 commit comments