Skip to content

Commit a2bf1bc

Browse files
committed
Adjust overriding configuration interface
1 parent 6349fa4 commit a2bf1bc

File tree

8 files changed

+41
-37
lines changed

8 files changed

+41
-37
lines changed

Core/Sources/ChatPlugin/AskChatGPT.swift

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,13 @@ public func askChatGPT(
77
question: String,
88
temperature: Double? = nil
99
) async throws -> String? {
10-
let configuration = OverridingUserPreferenceChatGPTConfiguration(
11-
overriding: .init(temperature: temperature)
12-
)
10+
let configuration = UserPreferenceChatGPTConfiguration()
11+
.overriding(.init(temperature: temperature))
1312
let memory = AutoManagedChatGPTMemory(systemPrompt: systemPrompt, configuration: configuration)
1413
let service = ChatGPTService(
1514
memory: memory,
16-
configuration: OverridingUserPreferenceChatGPTConfiguration(
17-
overriding: .init(temperature: temperature)
18-
)
15+
configuration: UserPreferenceChatGPTConfiguration()
16+
.overriding(.init(temperature: temperature))
1917
)
2018
return try await service.sendAndWait(content: question)
2119
}

Core/Sources/ChatPlugin/CallAIFunction.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,8 @@ func callAIFunction(
1616
}
1717
}
1818
let argsString = args.joined(separator: ", ")
19-
let configuration = OverridingUserPreferenceChatGPTConfiguration(
20-
overriding: .init(temperature: 0)
21-
)
19+
let configuration = UserPreferenceChatGPTConfiguration()
20+
.overriding(.init(temperature: 0))
2221
let service = ChatGPTService(
2322
memory: AutoManagedChatGPTMemory(
2423
systemPrompt: "You are now the following python function: ```# \(description)\n\(function)```\n\nOnly respond with your `return` value.",

Core/Sources/ChatService/ChatService.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import OpenAIService
66

77
public final class ChatService: ObservableObject {
88
public let memory: AutoManagedChatGPTMemory
9-
public let configuration: OverridingUserPreferenceChatGPTConfiguration
9+
public let configuration: OverridingChatGPTConfiguration<UserPreferenceChatGPTConfiguration>
1010
public let chatGPTService: any ChatGPTServiceType
1111
public var allPluginCommands: [String] { allPlugins.map { $0.command } }
1212
@Published public internal(set) var isReceivingMessage = false
@@ -20,7 +20,7 @@ public final class ChatService: ObservableObject {
2020

2121
init<T: ChatGPTServiceType>(
2222
memory: AutoManagedChatGPTMemory,
23-
configuration: OverridingUserPreferenceChatGPTConfiguration,
23+
configuration: OverridingChatGPTConfiguration<UserPreferenceChatGPTConfiguration>,
2424
chatGPTService: T
2525
) {
2626
self.memory = memory
@@ -36,7 +36,7 @@ public final class ChatService: ObservableObject {
3636
}
3737

3838
public init() {
39-
configuration = OverridingUserPreferenceChatGPTConfiguration()
39+
configuration = UserPreferenceChatGPTConfiguration().overriding()
4040
memory = AutoManagedChatGPTMemory(systemPrompt: "", configuration: configuration)
4141
chatGPTService = ChatGPTService(memory: memory, configuration: configuration)
4242
pluginController = ChatPluginController(chatGPTService: chatGPTService, plugins: allPlugins)

Core/Sources/PromptToCodeService/OpenAIPromptToCodeAPI.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,8 @@ final class OpenAIPromptToCodeAPI: PromptToCodeAPI {
147147
###
148148
"""
149149

150-
let configuration = OverridingUserPreferenceChatGPTConfiguration(
151-
overriding: .init(temperature: 0)
152-
)
150+
let configuration = UserPreferenceChatGPTConfiguration()
151+
.overriding(.init(temperature: 0))
153152
let memory = AutoManagedChatGPTMemory(
154153
systemPrompt: systemPrompt,
155154
configuration: configuration

Tool/Sources/LangChain/ChatModel/OpenAIChat.swift

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,10 @@ public struct OpenAIChat: ChatModel {
1818
stops: [String],
1919
callbackManagers: [ChainCallbackManager]
2020
) async throws -> String {
21-
let configuration = OverridingUserPreferenceChatGPTConfiguration(
22-
overriding: .init(
23-
temperature: temperature,
24-
stop: stops
25-
)
26-
)
21+
let configuration = UserPreferenceChatGPTConfiguration().overriding(.init(
22+
temperature: temperature,
23+
stop: stops
24+
))
2725
let memory = AutoManagedChatGPTMemory(systemPrompt: "", configuration: configuration)
2826
let service = ChatGPTService(memory: memory, configuration: configuration)
2927
for message in prompt {
@@ -39,7 +37,7 @@ public struct OpenAIChat: ChatModel {
3937
}()
4038
await memory.appendMessage(.init(role: role, content: message.content))
4139
}
42-
40+
4341
if stream {
4442
let stream = try await service.send(content: "")
4543
var message = ""

Tool/Sources/OpenAIService/Configuration/ChatGPTConfiguration.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public protocol ChatGPTConfiguration {
1212
var minimumReplyTokens: Int { get }
1313
}
1414

15-
extension ChatGPTConfiguration {
15+
public extension ChatGPTConfiguration {
1616
func endpoint(for provider: ChatFeatureProvider) -> String {
1717
switch provider {
1818
case .openAI:
@@ -36,4 +36,11 @@ extension ChatGPTConfiguration {
3636
return UserDefaults.shared.value(for: \.azureOpenAIAPIKey)
3737
}
3838
}
39+
40+
func overriding(
41+
_ overrides: OverridingChatGPTConfiguration<Self>.Overriding = .init()
42+
) -> OverridingChatGPTConfiguration<Self> {
43+
.init(overriding: self, with: overrides)
44+
}
3945
}
46+

Tool/Sources/OpenAIService/Configuration/UserPreferenceChatGPTConfiguration.swift

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ public struct UserPreferenceChatGPTConfiguration: ChatGPTConfiguration {
3939
public init() {}
4040
}
4141

42-
public class OverridingUserPreferenceChatGPTConfiguration: ChatGPTConfiguration {
42+
public class OverridingChatGPTConfiguration<
43+
Configuration: ChatGPTConfiguration
44+
>: ChatGPTConfiguration {
4345
public struct Overriding {
4446
var featureProvider: ChatFeatureProvider?
4547
var temperature: Double?
@@ -71,47 +73,48 @@ public class OverridingUserPreferenceChatGPTConfiguration: ChatGPTConfiguration
7173
}
7274
}
7375

74-
private let userPreference = UserPreferenceChatGPTConfiguration()
76+
private let configuration: Configuration
7577
public var overriding = Overriding()
7678

77-
public init(overriding: Overriding = .init()) {
78-
self.overriding = overriding
79+
public init(overriding configuration: Configuration, with overrides: Overriding = .init()) {
80+
self.overriding = overrides
81+
self.configuration = configuration
7982
}
8083

8184
public var featureProvider: ChatFeatureProvider {
82-
overriding.featureProvider ?? userPreference.featureProvider
85+
overriding.featureProvider ?? configuration.featureProvider
8386
}
8487

8588
public var temperature: Double {
86-
overriding.temperature ?? userPreference.temperature
89+
overriding.temperature ?? configuration.temperature
8790
}
8891

8992
public var model: String {
90-
overriding.model ?? userPreference.model
93+
overriding.model ?? configuration.model
9194
}
9295

9396
public var endpoint: String {
9497
overriding.endPoint
9598
?? overriding.featureProvider.map(endpoint(for:))
96-
?? userPreference.endpoint
99+
?? configuration.endpoint
97100
}
98101

99102
public var apiKey: String {
100103
overriding.apiKey
101104
?? overriding.featureProvider.map(apiKey(for:))
102-
?? userPreference.apiKey
105+
?? configuration.apiKey
103106
}
104107

105108
public var stop: [String] {
106-
overriding.stop ?? userPreference.stop
109+
overriding.stop ?? configuration.stop
107110
}
108111

109112
public var maxTokens: Int {
110-
overriding.maxTokens ?? userPreference.maxTokens
113+
overriding.maxTokens ?? configuration.maxTokens
111114
}
112115

113116
public var minimumReplyTokens: Int {
114-
overriding.minimumReplyTokens ?? userPreference.minimumReplyTokens
117+
overriding.minimumReplyTokens ?? configuration.minimumReplyTokens
115118
}
116119
}
117120

Tool/Sources/OpenAIService/FucntionCall/ChatGPTFuntionProvider.swift

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

33
public protocol ChatGPTFunctionProvider {
44
var functionSchemas: [String] { get }
5-
func function(named: String) -> ChatGPTFunction?
5+
func function(named: String) -> (any ChatGPTFunction)?
66
}
77

88
public struct NoChatGPTFunctionProvider: ChatGPTFunctionProvider {
99
public init() {}
1010

1111
public var functionSchemas: [String] { [] }
12-
public func function(named: String) -> ChatGPTFunction? { nil }
12+
public func function(named: String) -> (any ChatGPTFunction)? { nil }
1313
}

0 commit comments

Comments
 (0)