Agent Frameworks

How do you build a ReAct agent loop manually with Claude?

QUICK ANSWER

Build a manual ReAct loop by creating a while-loop that passes tools, reads Claude's tool_use calls, executes the matching code locally, and posts the results back until Claude returns a text completion.

Manual ReAct Loop Code Pattern

async function runAgent(prompt: string) {
  const messages = [{ role: "user", content: prompt }];
  
  while (true) {
    const response = await anthropic.messages.create({
      model: "claude-3-5-sonnet-20241022",
      max_tokens: 1024,
      tools: myTools,
      messages
    });

    messages.push({ role: "assistant", content: response.content });

    if (response.stop_reason !== "tool_use") {
      return response.content[0].text; // Loop complete
    }

    const toolResults = await executeTools(response.content);
    messages.push({ role: "user", content: toolResults });
  }
}
Verified against: Anthropic API Tool Use v1