@@ -346,7 +346,10 @@ func (o responsesLanguageModel) prepareParams(call fantasy.Call) (*responses.Res
func validatePreviousResponseIDPrompt(prompt fantasy.Prompt) error {
for _, msg := range prompt {
- if msg.Role == fantasy.MessageRoleAssistant {
+ switch msg.Role {
+ case fantasy.MessageRoleSystem, fantasy.MessageRoleUser:
+ continue
+ default:
return errors.New(previousResponseIDHistoryError)
}
}
@@ -132,15 +132,14 @@ func TestPrepareParams_PreviousResponseID_Validation(t *testing.T) {
require.Empty(t, warnings)
})
- t.Run("allows tool messages without assistant history", func(t *testing.T) {
+ t.Run("rejects tool messages", func(t *testing.T) {
t.Parallel()
- _, warnings, err := lm.prepareParams(testCall(fantasy.Prompt{
+ _, _, err := lm.prepareParams(testCall(fantasy.Prompt{
testToolResultMessage("done"),
testTextMessage(fantasy.MessageRoleUser, "hello"),
}, opts))
- require.NoError(t, err)
- require.Empty(t, warnings)
+ require.EqualError(t, err, previousResponseIDHistoryError)
})
}
@@ -186,6 +185,14 @@ func TestValidatePreviousResponseIDPrompt(t *testing.T) {
},
wantErr: true,
},
+ {
+ name: "contains tool message",
+ prompt: fantasy.Prompt{
+ testToolResultMessage("done"),
+ testTextMessage(fantasy.MessageRoleUser, "follow up"),
+ },
+ wantErr: true,
+ },
}
for _, tt := range tests {