diff --git a/go/ai/document.go b/go/ai/document.go index 1c6407ef17..28f9fb6d19 100644 --- a/go/ai/document.go +++ b/go/ai/document.go @@ -298,11 +298,12 @@ func (p *Part) unmarshalPartFromSchema(s partSchema) { default: p.Kind = PartText p.Text = s.Text - p.ContentType = "" + p.ContentType = "plain/text" if s.Data != "" { // Note: if part is completely empty, we use text by default. p.Kind = PartData p.Text = s.Data + p.ContentType = "" } } p.Metadata = s.Metadata diff --git a/go/ai/option.go b/go/ai/option.go index d28c68e3e9..1d041e9507 100644 --- a/go/ai/option.go +++ b/go/ai/option.go @@ -204,7 +204,17 @@ func (o *commonGenOptions) applyGenerate(genOpts *generateOptions) error { func WithMessages(messages ...*Message) CommonGenOption { return &commonGenOptions{ MessagesFn: func(ctx context.Context, _ any) ([]*Message, error) { - return messages, nil + buf, err := json.Marshal(messages) + if err != nil { + return nil, err + } + + msgs := make([]*Message, 0, len(messages)) + if err := json.Unmarshal(buf, &msgs); err != nil { + return nil, err + } + + return msgs, nil }, } } diff --git a/go/ai/prompt_test.go b/go/ai/prompt_test.go index cd9be3f60b..d46f16a3dd 100644 --- a/go/ai/prompt_test.go +++ b/go/ai/prompt_test.go @@ -3292,3 +3292,34 @@ Hello {{name}}, please help me with {{task}}. } }) } + +func TestPromptWithDifferentInput(t *testing.T) { + reg := registry.New() + prompt, err := LoadPromptFromSource(reg, `Hello, {{name}}!`, "rawPrompt", "test-ns") + if err != nil { + t.Fatalf("LoadPromptFromRaw failed: %v", err) + } + + if prompt == nil { + t.Fatal("prompt is nil") + } + + for i := range 10 { + opts, err := prompt.Render(t.Context(), map[string]int{ + "name": i, + }) + + if err != nil { + t.Fatalf("Render failed on iteration %d: %v", i, err) + } + + if len(opts.Messages) != 1 { + t.Fatalf("Expected 1 message, got %d", len(opts.Messages)) + } + + expected := fmt.Sprintf("Hello, %d!", i) + if opts.Messages[0].Text() != expected { + t.Errorf("Iteration %d: got %q, want %q", i, opts.Messages[0].Text(), expected) + } + } +}