Skip to content

Commit e2e6440

Browse files
committed
Update model format to match CopilotForXcode
1 parent 9ac9515 commit e2e6440

File tree

5 files changed

+56
-29
lines changed

5 files changed

+56
-29
lines changed

Core/Sources/CodeCompletionService/CodeCompletionService.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public struct CodeCompletionService {
121121
endpoint: .chatCompletion,
122122
modelName: model.info.modelName,
123123
stopWords: prompt.stopWords,
124-
keepAlive: model.info.ollamaKeepAlive,
124+
keepAlive: model.info.ollamaInfo.keepAlive,
125125
format: .none
126126
)
127127
let result = try await service.getCompletions(prompt, count: count)
@@ -168,7 +168,7 @@ public struct CodeCompletionService {
168168
endpoint: .completion,
169169
modelName: model.info.modelName,
170170
stopWords: prompt.stopWords,
171-
keepAlive: model.info.ollamaKeepAlive,
171+
keepAlive: model.info.ollamaInfo.keepAlive,
172172
format: .none
173173
)
174174
let result = try await service.getCompletions(prompt, count: count)

Core/Sources/Fundamental/Models/ChatModel.swift

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,29 @@ public struct ChatModel: Codable, Equatable, Identifiable {
2323
case openAICompatible
2424
case googleAI
2525
case ollama
26-
26+
2727
case unknown
2828
}
2929

3030
public struct Info: Codable, Equatable {
31+
public struct OllamaInfo: Codable, Equatable {
32+
@FallbackDecoding<EmptyString>
33+
public var keepAlive: String
34+
35+
public init(keepAlive: String = "") {
36+
self.keepAlive = keepAlive
37+
}
38+
}
39+
40+
public struct OpenAIInfo: Codable, Equatable {
41+
@FallbackDecoding<EmptyString>
42+
public var organizationID: String
43+
44+
public init(organizationID: String = "") {
45+
self.organizationID = organizationID
46+
}
47+
}
48+
3149
@FallbackDecoding<EmptyString>
3250
public var apiKeyName: String
3351
@FallbackDecoding<EmptyString>
@@ -38,35 +56,32 @@ public struct ChatModel: Codable, Equatable, Identifiable {
3856
public var maxTokens: Int
3957
@FallbackDecoding<EmptyBool>
4058
public var supportsFunctionCalling: Bool
41-
@FallbackDecoding<EmptyBool>
42-
public var supportsOpenAIAPI2023_11: Bool
4359
@FallbackDecoding<EmptyString>
4460
public var modelName: String
45-
public var azureOpenAIDeploymentName: String {
46-
get { modelName }
47-
set { modelName = newValue }
48-
}
49-
@FallbackDecoding<EmptyString>
50-
public var ollamaKeepAlive: String
61+
62+
@FallbackDecoding<EmptyChatModelOpenAIInfo>
63+
public var openAIInfo: OpenAIInfo
64+
@FallbackDecoding<EmptyChatModelOllamaInfo>
65+
public var ollamaInfo: OllamaInfo
5166

5267
public init(
5368
apiKeyName: String = "",
5469
baseURL: String = "",
5570
isFullURL: Bool = false,
5671
maxTokens: Int = 4000,
5772
supportsFunctionCalling: Bool = true,
58-
supportsOpenAIAPI2023_11: Bool = false,
5973
modelName: String = "",
60-
ollamaKeepAlive: String = ""
74+
openAIInfo: OpenAIInfo = OpenAIInfo(),
75+
ollamaInfo: OllamaInfo = OllamaInfo()
6176
) {
6277
self.apiKeyName = apiKeyName
6378
self.baseURL = baseURL
6479
self.isFullURL = isFullURL
6580
self.maxTokens = maxTokens
6681
self.supportsFunctionCalling = supportsFunctionCalling
67-
self.supportsOpenAIAPI2023_11 = supportsOpenAIAPI2023_11
6882
self.modelName = modelName
69-
self.ollamaKeepAlive = ollamaKeepAlive
83+
self.openAIInfo = openAIInfo
84+
self.ollamaInfo = ollamaInfo
7085
}
7186
}
7287

@@ -83,7 +98,7 @@ public struct ChatModel: Codable, Equatable, Identifiable {
8398
return "\(baseURL)/v1/chat/completions"
8499
case .azureOpenAI:
85100
let baseURL = info.baseURL
86-
let deployment = info.azureOpenAIDeploymentName
101+
let deployment = info.modelName
87102
let version = "2023-07-01-preview"
88103
if baseURL.isEmpty { return "" }
89104
return "\(baseURL)/openai/deployments/\(deployment)/chat/completions?api-version=\(version)"
@@ -109,3 +124,11 @@ public struct EmptyChatModelFormat: FallbackValueProvider {
109124
public static var defaultValue: ChatModel.Format { .unknown }
110125
}
111126

127+
public struct EmptyChatModelOllamaInfo: FallbackValueProvider {
128+
public static var defaultValue: ChatModel.Info.OllamaInfo { .init() }
129+
}
130+
131+
public struct EmptyChatModelOpenAIInfo: FallbackValueProvider {
132+
public static var defaultValue: ChatModel.Info.OpenAIInfo { .init() }
133+
}
134+

Core/Sources/Fundamental/Models/CompletionModel.swift

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ public struct CompletionModel: Codable, Equatable, Identifiable {
2727
}
2828

2929
public struct Info: Codable, Equatable {
30+
public typealias OllamaInfo = ChatModel.Info.OllamaInfo
31+
public typealias OpenAIInfo = ChatModel.Info.OpenAIInfo
32+
3033
@FallbackDecoding<EmptyString>
3134
public var apiKeyName: String
3235
@FallbackDecoding<EmptyString>
@@ -37,27 +40,28 @@ public struct CompletionModel: Codable, Equatable, Identifiable {
3740
public var maxTokens: Int
3841
@FallbackDecoding<EmptyString>
3942
public var modelName: String
40-
public var azureOpenAIDeploymentName: String {
41-
get { modelName }
42-
set { modelName = newValue }
43-
}
44-
@FallbackDecoding<EmptyString>
45-
public var ollamaKeepAlive: String
43+
44+
@FallbackDecoding<EmptyChatModelOpenAIInfo>
45+
public var openAIInfo: OpenAIInfo
46+
@FallbackDecoding<EmptyChatModelOllamaInfo>
47+
public var ollamaInfo: OllamaInfo
4648

4749
public init(
4850
apiKeyName: String = "",
4951
baseURL: String = "",
5052
isFullURL: Bool = false,
5153
maxTokens: Int = 4000,
5254
modelName: String = "",
53-
ollamaKeepAlive: String = ""
55+
openAIInfo: OpenAIInfo = OpenAIInfo(),
56+
ollamaInfo: OllamaInfo = OllamaInfo()
5457
) {
5558
self.apiKeyName = apiKeyName
5659
self.baseURL = baseURL
5760
self.isFullURL = isFullURL
5861
self.maxTokens = maxTokens
5962
self.modelName = modelName
60-
self.ollamaKeepAlive = ollamaKeepAlive
63+
self.openAIInfo = openAIInfo
64+
self.ollamaInfo = ollamaInfo
6165
}
6266
}
6367

@@ -74,7 +78,7 @@ public struct CompletionModel: Codable, Equatable, Identifiable {
7478
return "\(baseURL)/v1/completions"
7579
case .azureOpenAI:
7680
let baseURL = info.baseURL
77-
let deployment = info.azureOpenAIDeploymentName
81+
let deployment = info.modelName
7882
let version = "2023-07-01-preview"
7983
if baseURL.isEmpty { return "" }
8084
return "\(baseURL)/openai/deployments/\(deployment)/completions?api-version=\(version)"

CustomSuggestionService/ChatModelManagement/ChatModelEdit.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ extension ChatModel {
154154
apiKeyManagement: .init(availableAPIKeyNames: [info.apiKeyName])
155155
),
156156
baseURLSelection: .init(baseURL: info.baseURL),
157-
ollamaKeepAlive: info.ollamaKeepAlive
157+
ollamaKeepAlive: info.ollamaInfo.keepAlive
158158
)
159159
}
160160

@@ -169,7 +169,7 @@ extension ChatModel {
169169
maxTokens: state.maxTokens,
170170
supportsFunctionCalling: false,
171171
modelName: state.modelName.trimmingCharacters(in: .whitespacesAndNewlines),
172-
ollamaKeepAlive: state.ollamaKeepAlive
172+
ollamaInfo: .init(keepAlive: state.ollamaKeepAlive)
173173
)
174174
)
175175
}

CustomSuggestionService/ChatModelManagement/CompletionModelEdit.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ extension CompletionModel {
145145
apiKeyManagement: .init(availableAPIKeyNames: [info.apiKeyName])
146146
),
147147
baseURLSelection: .init(baseURL: info.baseURL),
148-
ollamaKeepAlive: info.ollamaKeepAlive
148+
ollamaKeepAlive: info.ollamaInfo.keepAlive
149149
)
150150
}
151151

@@ -159,7 +159,7 @@ extension CompletionModel {
159159
baseURL: state.baseURL.trimmingCharacters(in: .whitespacesAndNewlines),
160160
maxTokens: state.maxTokens,
161161
modelName: state.modelName.trimmingCharacters(in: .whitespacesAndNewlines),
162-
ollamaKeepAlive: state.ollamaKeepAlive
162+
ollamaInfo: .init(keepAlive: state.ollamaKeepAlive)
163163
)
164164
)
165165
}

0 commit comments

Comments
 (0)