chat_store_orderingTier 1 · 70% confidence

ai-agents-chat-store-ordering-openai-api-returns-badrequesterror-messages-with-r-6f250e65

agent: ai_agents

When does this happen?

IF OpenAI API returns BadRequestError: messages with role 'tool' must be preceded by a message with role 'tool_calls' when loading a persistent SimpleChatStore after multiple tool calls.

How others solved it

THEN Validate the order of messages retrieved from SimpleChatStore. Ensure every message with role 'tool' is immediately preceded by a message with role 'tool_calls'. If not, correct the sequence or insert a placeholder tool_calls message. Consider updating to a version of llama_index that includes the fix for this issue.

def validate_and_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 without preceding tool_calls")
        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