@@ -247,7 +247,9 @@ type errorChatStream struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *errorChatStream) Next() bool { return false }
|
func (s *errorChatStream) Next() bool { return false }
|
||||||
func (s *errorChatStream) Event() llm.ChatCompletionStreamEvent { return llm.ChatCompletionStreamEvent{} }
|
func (s *errorChatStream) Event() llm.ChatCompletionStreamEvent {
|
||||||
|
return llm.ChatCompletionStreamEvent{}
|
||||||
|
}
|
||||||
func (s *errorChatStream) Err() error { return s.err }
|
func (s *errorChatStream) Err() error { return s.err }
|
||||||
func (s *errorChatStream) Close() error { return nil }
|
func (s *errorChatStream) Close() error { return nil }
|
||||||
|
|
||||||
@@ -305,9 +307,6 @@ func toolCallResponse(toolCalls ...llm.ToolCall) *llm.ChatCompletionResponse {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func finishReasonPtr(r llm.FinishReason) *llm.FinishReason {
|
|
||||||
return &r
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRun(t *testing.T) {
|
func TestRun(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
@@ -2107,7 +2106,7 @@ func TestRunStreamed(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Delta: llm.MessageDelta{Content: "!"},
|
Delta: llm.MessageDelta{Content: "!"},
|
||||||
Usage: &llm.Usage{InputTokens: 10, OutputTokens: 3},
|
Usage: &llm.Usage{InputTokens: 10, OutputTokens: 3},
|
||||||
FinishReason: finishReasonPtr(llm.FinishReasonStop),
|
FinishReason: new(llm.FinishReasonStop),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -2172,7 +2171,7 @@ func TestRunStreamed(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
Usage: &llm.Usage{InputTokens: 10, OutputTokens: 5},
|
Usage: &llm.Usage{InputTokens: 10, OutputTokens: 5},
|
||||||
FinishReason: finishReasonPtr(llm.FinishReasonToolCalls),
|
FinishReason: new(llm.FinishReasonToolCalls),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -2183,7 +2182,7 @@ func TestRunStreamed(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Delta: llm.MessageDelta{},
|
Delta: llm.MessageDelta{},
|
||||||
Usage: &llm.Usage{InputTokens: 15, OutputTokens: 3},
|
Usage: &llm.Usage{InputTokens: 15, OutputTokens: 3},
|
||||||
FinishReason: finishReasonPtr(llm.FinishReasonStop),
|
FinishReason: new(llm.FinishReasonStop),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -2239,7 +2238,7 @@ func TestRunStreamed(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Delta: llm.MessageDelta{Content: "!"},
|
Delta: llm.MessageDelta{Content: "!"},
|
||||||
Usage: &llm.Usage{InputTokens: 10, OutputTokens: 2},
|
Usage: &llm.Usage{InputTokens: 10, OutputTokens: 2},
|
||||||
FinishReason: finishReasonPtr(llm.FinishReasonStop),
|
FinishReason: new(llm.FinishReasonStop),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -2288,7 +2287,7 @@ func TestRunStreamed(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Delta: llm.MessageDelta{Content: "!"},
|
Delta: llm.MessageDelta{Content: "!"},
|
||||||
Usage: &llm.Usage{InputTokens: 10, OutputTokens: 3},
|
Usage: &llm.Usage{InputTokens: 10, OutputTokens: 3},
|
||||||
FinishReason: finishReasonPtr(llm.FinishReasonStop),
|
FinishReason: new(llm.FinishReasonStop),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ func spanAttrMap(recorder *tracetest.SpanRecorder) map[string]any {
|
|||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
func ptr[T any](v T) *T { return &v }
|
//go:fix inline
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Message.Text
|
// Message.Text
|
||||||
@@ -357,7 +357,7 @@ func TestChatCompletionStream(t *testing.T) {
|
|||||||
{Delta: llm.MessageDelta{Content: "Hello"}},
|
{Delta: llm.MessageDelta{Content: "Hello"}},
|
||||||
{Delta: llm.MessageDelta{Content: " world"}},
|
{Delta: llm.MessageDelta{Content: " world"}},
|
||||||
{
|
{
|
||||||
FinishReason: ptr(llm.FinishReasonStop),
|
FinishReason: new(llm.FinishReasonStop),
|
||||||
Usage: &llm.Usage{InputTokens: 8, OutputTokens: 4},
|
Usage: &llm.Usage{InputTokens: 8, OutputTokens: 4},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -493,7 +493,7 @@ func TestChatCompletionStream(t *testing.T) {
|
|||||||
events := []llm.ChatCompletionStreamEvent{
|
events := []llm.ChatCompletionStreamEvent{
|
||||||
{Delta: llm.MessageDelta{Content: "done"}},
|
{Delta: llm.MessageDelta{Content: "done"}},
|
||||||
{
|
{
|
||||||
FinishReason: ptr(llm.FinishReasonLength),
|
FinishReason: new(llm.FinishReasonLength),
|
||||||
Usage: &llm.Usage{InputTokens: 100, OutputTokens: 50},
|
Usage: &llm.Usage{InputTokens: 100, OutputTokens: 50},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -554,7 +554,7 @@ func TestStreamAccumulator(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}},
|
}},
|
||||||
{
|
{
|
||||||
FinishReason: ptr(llm.FinishReasonToolCalls),
|
FinishReason: new(llm.FinishReasonToolCalls),
|
||||||
Usage: &llm.Usage{InputTokens: 20, OutputTokens: 15},
|
Usage: &llm.Usage{InputTokens: 20, OutputTokens: 15},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -604,7 +604,7 @@ func TestStreamAccumulator(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}},
|
}},
|
||||||
{
|
{
|
||||||
FinishReason: ptr(llm.FinishReasonToolCalls),
|
FinishReason: new(llm.FinishReasonToolCalls),
|
||||||
Usage: &llm.Usage{InputTokens: 30, OutputTokens: 10},
|
Usage: &llm.Usage{InputTokens: 30, OutputTokens: 10},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -632,7 +632,7 @@ func TestStreamAccumulator(t *testing.T) {
|
|||||||
events := []llm.ChatCompletionStreamEvent{
|
events := []llm.ChatCompletionStreamEvent{
|
||||||
{Delta: llm.MessageDelta{Content: "Just text."}},
|
{Delta: llm.MessageDelta{Content: "Just text."}},
|
||||||
{
|
{
|
||||||
FinishReason: ptr(llm.FinishReasonStop),
|
FinishReason: new(llm.FinishReasonStop),
|
||||||
Usage: &llm.Usage{InputTokens: 5, OutputTokens: 3},
|
Usage: &llm.Usage{InputTokens: 5, OutputTokens: 3},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -654,7 +654,7 @@ func TestStreamAccumulator(t *testing.T) {
|
|||||||
events := []llm.ChatCompletionStreamEvent{
|
events := []llm.ChatCompletionStreamEvent{
|
||||||
{Delta: llm.MessageDelta{Content: "a"}},
|
{Delta: llm.MessageDelta{Content: "a"}},
|
||||||
{Delta: llm.MessageDelta{Content: "b"}},
|
{Delta: llm.MessageDelta{Content: "b"}},
|
||||||
{FinishReason: ptr(llm.FinishReasonStop)},
|
{FinishReason: new(llm.FinishReasonStop)},
|
||||||
}
|
}
|
||||||
|
|
||||||
acc := llm.NewStreamAccumulator(&mockStream{events: events})
|
acc := llm.NewStreamAccumulator(&mockStream{events: events})
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
package llm
|
package llm
|
||||||
|
|
||||||
|
import "strings"
|
||||||
|
|
||||||
import "encoding/json"
|
import "encoding/json"
|
||||||
|
|
||||||
type (
|
type (
|
||||||
@@ -42,11 +44,11 @@ type (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (m Message) Text() string {
|
func (m Message) Text() string {
|
||||||
var s string
|
var s strings.Builder
|
||||||
for _, p := range m.Parts {
|
for _, p := range m.Parts {
|
||||||
if tp, ok := p.(TextPart); ok {
|
if tp, ok := p.(TextPart); ok {
|
||||||
s += tp.Text
|
s.WriteString(tp.Text)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return s
|
return s.String()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user