Creare un Agente AI con JavaScript e Claude: Tutorial Pratico

Creare un Agente AI con JavaScript e Claude: Tutorial Pratico

Cosa sono gli agenti AI e perché cambiano tutto

Un chatbot risponde a domande. Un agente AI prende decisioni, usa strumenti, e porta a termine obiettivi in modo autonomo. La differenza è sostanziale: un agente può cercare informazioni sul web, leggere file, scrivere codice, eseguirlo e iterare — tutto in autonomia, guidato da un obiettivo che tu gli dai.

Con l’API di Claude (Anthropic) e il meccanismo di tool use, puoi costruire agenti reali in JavaScript in poche ore. In questo tutorial costruiamo un agente completo, partendo dal setup fino al loop di esecuzione.

Setup: installazione Anthropic SDK

// Installa l'SDK
// npm install @anthropic-ai/sdk

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

const client = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY
});

// Test base: verifica che funzioni
const test = await client.messages.create({
  model: 'claude-sonnet-4-6',
  max_tokens: 100,
  messages: [{ role: 'user', content: 'Rispondi solo: OK' }]
});
console.log(test.content[0].text); // OK

Tool Use: dare strumenti all’agente

Il tool use permette a Claude di “richiedere” l’esecuzione di funzioni esterne. Tu definisci i tool (nome, descrizione, schema input), Claude decide quando e come usarli, tu esegui il codice e restituisci il risultato. Ecco la struttura di un tool:

const tools = [
  {
    name: "get_weather",
    description: "Ottieni le previsioni meteo per una città",
    input_schema: {
      type: "object",
      properties: {
        city: {
          type: "string",
          description: "Nome della città (es: 'Roma', 'Milano')"
        },
        days: {
          type: "number",
          description: "Numero di giorni di previsione (1-7)"
        }
      },
      required: ["city"]
    }
  }
];

Il loop dell’agente: run → tool_result → run

Il cuore di ogni agente AI è il loop di esecuzione. Claude risponde, eventualmente richiede un tool, tu esegui il tool e restituisci il risultato, e Claude continua. Ecco il pattern completo:

async function runAgent(task, tools, executeTool) {
  const messages = [{ role: 'user', content: task }];
  const MAX_ITERATIONS = 15; // sicurezza: evita loop infiniti
  let iterations = 0;

  while (iterations < MAX_ITERATIONS) {
    iterations++;

    const response = await client.messages.create({
      model: 'claude-sonnet-4-6',
      max_tokens: 4096,
      tools,
      messages
    });

    // Agente ha finito
    if (response.stop_reason === 'end_turn') {
      const text = response.content.find(b => b.type === 'text');
      return text?.text ?? 'Completato';
    }

    // Agente vuole usare un tool
    if (response.stop_reason === 'tool_use') {
      messages.push({ role: 'assistant', content: response.content });

      const toolResults = [];
      for (const block of response.content) {
        if (block.type === 'tool_use') {
          console.log(`🔧 Tool: ${block.name}`, block.input);
          const result = await executeTool(block.name, block.input);
          toolResults.push({
            type: 'tool_result',
            tool_use_id: block.id,
            content: JSON.stringify(result)
          });
        }
      }

      messages.push({ role: 'user', content: toolResults });
    }
  }

  return 'Max iterazioni raggiunto';
}

// Utilizzo
const result = await runAgent(
  'Cerca le previsioni meteo per Roma per i prossimi 3 giorni e scrivimi un riassunto',
  tools,
  async (name, input) => {
    if (name === 'get_weather') {
      // qui chiami la vera API meteo
      return { city: input.city, forecast: '...' };
    }
  }
);
console.log(result);

Casi d’uso reali per developer

Ecco tre agenti pratici che puoi costruire oggi:

  • Code Review Agent: riceve un diff Git, analizza il codice, suggerisce miglioramenti — automaticamente su ogni PR
  • Doc Generator Agent: legge i file sorgente JS/TS, genera JSDoc per ogni funzione, aggiorna automaticamente la documentazione
  • Email Responder Agent: legge le email in arrivo, classifica per priorità, genera bozze di risposta contestuali

Per la parte di integrazione API, ti consiglio di leggere anche il nostro articolo su Claude API: Come Automatizzare il Workflow da Developer. Per l’automazione senza codice, vedi n8n + Claude per automatizzare il business.

FAQ e Domande Frequenti

Qual è la differenza tra tool_use e function calling?

Sono la stessa cosa con nomi diversi: OpenAI chiama “function calling” quello che Anthropic chiama “tool use”. Entrambi permettono all’LLM di richiedere l’esecuzione di codice esterno per ottenere informazioni o compiere azioni nel mondo reale.

Come gestisco errori nell’esecuzione dei tool?

Quando un tool fallisce, restituisci un tool_result con is_error: true e un messaggio descrittivo. Claude capirà l’errore e potrà decidere di riprovare, usare un approccio alternativo, o comunicare il problema all’utente.

Posso usare più tool in parallelo?

Sì. Con tool_choice: "auto" Claude può richiedere più tool contemporaneamente (parallel tool use). Gestisci l’array di tool_use nel response.content e fornisci tutti i tool_result prima di fare la chiamata successiva.

Quanto costa usare Claude API per un agente?

Claude claude-sonnet-4-6 costa ~$3/1M token input e $15/1M output. Un agente che gira 100 task/giorno con ~5.000 token/task costa circa $7-15/mese. Monitora sempre il numero di iterazioni del loop con un limite massimo.

Quali modelli Claude sono migliori per gli agenti AI?

Claude Sonnet 4.6 è il punto di equilibrio ottimale: capacità avanzate a costo contenuto. Per task semplici usa Haiku (costo molto basso). Per ragionamento complesso multi-step usa Opus 4.6. Tutti supportano il tool use.

Conclusione

Costruire un agente AI con Claude e JavaScript è sorprendentemente accessibile. Il pattern è sempre lo stesso: definisci i tool, scrivi il loop, gestisci i risultati. La complessità reale sta nella qualità della descrizione dei tool — più sono precisi, meglio Claude li usa.

Inizia con un singolo tool su un problema reale che hai. In un weekend puoi avere il tuo primo agente in produzione.

💡 Pro tip: Inizia sempre con un singolo tool ben definito prima di costruire agenti complessi. Un agente che fa bene una cosa vale più di uno che fa male dieci cose.
🔧 Strumenti: @anthropic-ai/sdk, Zod (validazione schema), LangChain.js (orchestrazione avanzata)
🎯 Nota: Implementa sempre un limite di iterazioni (MAX_ITERATIONS) per evitare loop infiniti e costi non controllati in produzione.

Condividi

Articoli Recenti

Categorie popolari