Skip to content

Commit abffd06

Browse files
author
Arun Barua
committed
fix: make prompt optional (#54)
1 parent a8dd022 commit abffd06

File tree

2 files changed

+35
-7
lines changed

2 files changed

+35
-7
lines changed

agent.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -970,7 +970,8 @@ func (a *agent) validateToolCall(toolCall ToolCallContent, availableTools []Agen
970970
}
971971

972972
func (a *agent) createPrompt(system, prompt string, messages []Message, files ...FilePart) (Prompt, error) {
973-
if prompt == "" {
973+
// Prompt can't be empty if either a) there are no historical messages or b) there are files to handle.
974+
if (len(messages) == 0 || len(files) > 0) && prompt == "" {
974975
return nil, &Error{Title: "invalid argument", Message: "prompt can't be empty"}
975976
}
976977

@@ -980,7 +981,9 @@ func (a *agent) createPrompt(system, prompt string, messages []Message, files ..
980981
preparedPrompt = append(preparedPrompt, NewSystemMessage(system))
981982
}
982983
preparedPrompt = append(preparedPrompt, messages...)
983-
preparedPrompt = append(preparedPrompt, NewUserMessage(prompt, files...))
984+
if prompt != "" {
985+
preparedPrompt = append(preparedPrompt, NewUserMessage(prompt, files...))
986+
}
984987
return preparedPrompt, nil
985988
}
986989

agent_test.go

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -522,13 +522,38 @@ func TestAgent_Generate_EmptyPrompt(t *testing.T) {
522522
model := &mockLanguageModel{}
523523
agent := NewAgent(model)
524524

525-
result, err := agent.Generate(context.Background(), AgentCall{
526-
Prompt: "", // Empty prompt should cause error
525+
t.Run("fails without historical messages", func(t *testing.T) {
526+
result, err := agent.Generate(context.Background(), AgentCall{
527+
Prompt: "",
528+
})
529+
require.Error(t, err)
530+
require.Nil(t, result)
531+
require.Contains(t, err.Error(), "invalid argument: prompt can't be empty")
532+
})
533+
534+
t.Run("fails when there are files even with historical messages", func(t *testing.T) {
535+
result, err := agent.Generate(context.Background(), AgentCall{
536+
Prompt: "",
537+
Messages: []Message{
538+
{Role: MessageRoleUser, Content: []MessagePart{TextPart{Text: "hello"}}},
539+
},
540+
Files: []FilePart{{Filename: "test.txt", Data: []byte("test"), MediaType: "text/plain"}},
541+
})
542+
require.Error(t, err)
543+
require.Nil(t, result)
544+
require.Contains(t, err.Error(), "invalid argument: prompt can't be empty")
527545
})
528546

529-
require.Error(t, err)
530-
require.Nil(t, result)
531-
require.Contains(t, err.Error(), "invalid argument: prompt can't be empty")
547+
t.Run("succeeds if there are historical messages and no files", func(t *testing.T) {
548+
result, err := agent.Generate(context.Background(), AgentCall{
549+
Prompt: "",
550+
Messages: []Message{
551+
{Role: MessageRoleUser, Content: []MessagePart{TextPart{Text: "hello"}}},
552+
},
553+
})
554+
require.NoError(t, err)
555+
require.NotNil(t, result)
556+
})
532557
}
533558

534559
// Test with system prompt

0 commit comments

Comments
 (0)