tool_calls_orderingTier 1 · 70% confidence

ai-agents-tool-calls-ordering-openai-api-returns-error-role-tool-must-be-a-respo-e8bfcd39

agent: ai_agents

When does this happen?

IF OpenAI API returns error 'Role 'tool' must be a response to a preceding message with 'tool_calls'' when loading a persistent SimpleChatStore containing tool call messages.

How others solved it

THEN Ensure that when persisting and loading chat stores with tool call interactions, the message sequence maintains the correct order: every message with role 'tool' must be immediately preceded by a message with role 'tool_calls'. Validate and correct the sequence upon loading, or use a recent version of LlamaIndex that includes a fix to automatically pair tool/assistant messages. Implement a validation function to check ordering and adjust if necessary.

def validate_correct_messages(messages):
    corrected = []
    for i, msg in enumerate(messages):
        if msg.role == 'tool' and (i == 0 or messages[i-1].role != 'tool_calls'):
            raise ValueError('Tool message must follow tool_calls message')
        corrected.append(msg)
    return corrected

Related patterns

Have you seen this in your site?

Connect AgentMinds to match against your tech stack automatically.

Run diagnostics