Skip to content

Commit 95291e0

Browse files
committed
bug
1 parent 9a44537 commit 95291e0

File tree

3 files changed

+31
-23
lines changed

3 files changed

+31
-23
lines changed

Sources/GenKit/Services/Llama/LlamaDecoders.swift

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@ extension GenKit.Message.Content {
1919
init?(_ content: Llama.ChatResponse.CompletionMessage.Content) {
2020
if let text = content.text {
2121
self = .text(text)
22-
}
23-
if let reasoning = content.reasoning {
22+
} else if let reasoning = content.reasoning {
2423
self = .text(reasoning)
25-
}
26-
if let answer = content.answer {
24+
} else if let answer = content.answer {
2725
self = .text(answer)
26+
} else {
27+
return nil
2828
}
29-
return nil
3029
}
3130
}
3231

@@ -62,24 +61,25 @@ extension GenKit.Message.FinishReason {
6261

6362
extension GenKit.Message {
6463
mutating func patch(with resp: Llama.ChatStreamResponse) {
64+
var contents = self.contents ?? []
6565

66-
// Get the last item in the contents array so it can be patched
67-
if var contents = self.contents {
68-
if resp.event.event_type == "text" {
69-
if case .text(let text) = contents.last, let delta = resp.event.delta.text {
70-
if let patched = GenKit.patch(string: text, with: delta) {
71-
contents[contents.count-1] = .text(patched)
72-
self.contents = contents
73-
}
66+
if resp.event.event_type == "progress" {
67+
if case .text(let text) = contents.last, let delta = resp.event.delta.text {
68+
if let patched = GenKit.patch(string: text, with: delta) {
69+
contents[contents.count-1] = .text(patched)
7470
}
71+
} else if let delta = resp.event.delta.text {
72+
contents.append(.text(delta))
7573
}
76-
if resp.event.event_type == "reasoning" {
77-
print("not implemented")
78-
}
79-
if resp.event.event_type == "function" {
80-
print("not implemented")
81-
}
8274
}
75+
if resp.event.event_type == "reasoning" {
76+
print("not implemented")
77+
}
78+
if resp.event.event_type == "function" {
79+
print("not implemented")
80+
}
81+
82+
self.contents = (contents.isEmpty) ? nil : contents
8383

8484
// Patch remaining properties
8585
self.toolCalls = []

Sources/GenKit/Services/Llama/LlamaEncoders.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ extension Llama.ChatRequest.Message.Content {
1818
init?(_ content: GenKit.Message.Content) {
1919
switch content {
2020
case .text(let text):
21-
self.init(text: text)
21+
self = .init(text: text)
22+
return
2223
case .image(let image):
2324
if let data = try? Data(contentsOf: image.url) {
24-
self.init(image: "data:image/\(image.format);base64,\(data.base64EncodedString())")
25+
self = .init(image: "data:image/\(image.format);base64,\(data.base64EncodedString())")
26+
return
2527
}
26-
default:
27-
fatalError("Unknown message content type")
28+
case .audio, .json:
29+
return nil
2830
}
2931
return nil
3032
}

Sources/GenKit/Sessions/ChatSession.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ public class ChatSession {
4141
break
4242
}
4343
let lastMessage = messages.last!
44+
guard (lastMessage.toolCalls?.count ?? 0) > 0 else {
45+
break
46+
}
4447
let (toolMessages, shouldContinue) = try await processToolCalls(in: lastMessage, callback: request.toolCallback, maxConcurrent: maxConcurrentToolCalls)
4548
for message in toolMessages {
4649
let message = apply(runID: runID, message: message)
@@ -93,6 +96,9 @@ public class ChatSession {
9396
guard request.toolCallback != nil else {
9497
break
9598
}
99+
guard (message.toolCalls?.count ?? 0) > 0 else {
100+
break
101+
}
96102
let (toolMessages, shouldContinue) = try await processToolCalls(in: message, callback: request.toolCallback, maxConcurrent: maxConcurrentToolCalls)
97103
for message in toolMessages {
98104
let message = apply(runID: runID, message: message)

0 commit comments

Comments
 (0)