Skip to content

Commit 15c8ba8

Browse files
committed
Add shouldEndTextWindow to configuration
1 parent 0f3f3e6 commit 15c8ba8

3 files changed

Lines changed: 15 additions & 1 deletion

File tree

Core/Sources/ChatService/ChatService.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ public final class ChatService: ObservableObject {
4242
let configuration = UserPreferenceChatGPTConfiguration().overriding()
4343
/// Used by context collector
4444
let extraConfiguration = configuration.overriding()
45+
extraConfiguration.textWindowTerminator = {
46+
guard let last = $0.last else { return false }
47+
return last.isNewline || last.isPunctuation
48+
}
4549
let memory = ContextAwareAutoManagedChatGPTMemory(
4650
configuration: extraConfiguration,
4751
functionProvider: ChatFunctionProvider()

Tool/Sources/OpenAIService/Configuration/ChatGPTConfiguration.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public protocol ChatGPTConfiguration {
1111
var maxTokens: Int { get }
1212
var minimumReplyTokens: Int { get }
1313
var runFunctionsAutomatically: Bool { get }
14+
var shouldEndTextWindow: (String) -> Bool { get }
1415
}
1516

1617
public extension ChatGPTConfiguration {

Tool/Sources/OpenAIService/Configuration/UserPreferenceChatGPTConfiguration.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ public struct UserPreferenceChatGPTConfiguration: ChatGPTConfiguration {
4040
public var runFunctionsAutomatically: Bool {
4141
true
4242
}
43+
44+
public var shouldEndTextWindow: (String) -> Bool {
45+
{ _ in true }
46+
}
4347

4448
public init(chatModelKey: KeyPath<UserDefaultPreferenceKeys, PreferenceKey<String>>? = nil) {
4549
self.chatModelKey = chatModelKey
@@ -56,7 +60,7 @@ public class OverridingChatGPTConfiguration: ChatGPTConfiguration {
5660
public var minimumReplyTokens: Int?
5761
public var runFunctionsAutomatically: Bool?
5862
public var apiKey: String?
59-
63+
6064
public init(
6165
temperature: Double? = nil,
6266
modelId: String? = nil,
@@ -80,6 +84,7 @@ public class OverridingChatGPTConfiguration: ChatGPTConfiguration {
8084

8185
private let configuration: ChatGPTConfiguration
8286
public var overriding = Overriding()
87+
public var textWindowTerminator: ((String) -> Bool)?
8388

8489
public init(
8590
overriding configuration: any ChatGPTConfiguration,
@@ -126,5 +131,9 @@ public class OverridingChatGPTConfiguration: ChatGPTConfiguration {
126131
guard let name = model?.info.apiKeyName else { return configuration.apiKey }
127132
return (try? Keychain.apiKey.get(name)) ?? configuration.apiKey
128133
}
134+
135+
public var shouldEndTextWindow: (String) -> Bool {
136+
textWindowTerminator ?? configuration.shouldEndTextWindow
137+
}
129138
}
130139

0 commit comments

Comments
 (0)