Learning CenterAI AgentsSingle Agent Setup
Beginner8 min read

Single Agent Setup

Build and configure a production-ready single agent with tools, memory, and error handling.

The Minimal Agent Template

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic();

const tools = [
  {
    name: "web_search",
    description: "Search the web for current information",
    input_schema: {
      type: "object",
      properties: {
        query: { type: "string", description: "Search query" }
      },
      required: ["query"]
    }
  }
];

async function runAgent(userMessage: string) {
  const messages = [{ role: "user", content: userMessage }];

  while (true) {
    const response = await client.messages.create({
      model: "claude-sonnet-4-5",
      max_tokens: 4096,
      tools,
      messages,
      system: "You are a research assistant. Use tools to gather information."
    });

    if (response.stop_reason === "end_turn") {
      return response.content;
    }

    if (response.stop_reason === "tool_use") {
      const toolUse = response.content.find(c => c.type === "tool_use");
      const toolResult = await executeTool(toolUse);
      messages.push({ role: "assistant", content: response.content });
      messages.push({ role: "user", content: [toolResult] });
    }
  }
}

Key Design Decisions

System prompt — Define the agent's role, capabilities, and constraints clearly. This is the most important configuration.

Tool selection — Give the agent only the tools it needs. Fewer tools = less confusion and fewer edge cases.

Max iterations — Always cap the loop. An agent stuck in a bad state can loop forever. Set a max turns limit (10–20 for most tasks).

Error handling — Tool calls fail. Handle errors gracefully: retry with backoff, provide fallback behavior, or surface the failure cleanly.

State Management

For agents that maintain state across conversations, persist the message history to a database. On each new conversation, retrieve relevant history and inject it into context.

Don't try to maintain everything in memory — it doesn't scale and won't survive process restarts.

Loading…