> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Claude Agent SDK

> Tracez avec Weave un agent créé à l’aide du Claude Agent SDK.

export const AgentLensBanner = ({href}) => <Tip>
    <strong>This workflow is also available in CoreWeave Agent Lens.</strong> Agent Lens is the Forge experience built for tracing, monitoring, and analyzing AI agents, with automated insights into agent failures and user intents. It uses the same trace data as Weights & Biases Weave, so the traces you already send appear there with nothing to migrate.{' '}
    <a href={href || '/products/agent-lens'}>{href ? 'See how to do this in Agent Lens' : 'Learn about Agent Lens'}</a>.
  </Tip>;

<AgentLensBanner href="/fr/products/agent-lens/integrations/claude-agents-sdk" />

Le Claude Agent SDK vous permet de créer rapidement des applications d’agents basées sur Claude. Vous pouvez intégrer Weave à vos agents Claude pour tracer automatiquement leurs appels, notamment les requêtes des agents, les réponses du modèle, l’utilisation d’outils et les conversations sur plusieurs tours de conversation. Weave affiche les données capturées dans la vue **Agents** de votre projet.

<h2 id="trace-claude-agent-sdk-agents-with-weave">
  Tracer des agents Claude Agent SDK avec Weave
</h2>

<Tabs>
  <Tab title="Python">
    Le SDK Weave patche automatiquement le [Claude Agent SDK pour Python](https://github.com/anthropics/claude-agent-sdk-python), ce qui vous permet de capturer les traces de vos agents Claude avec une configuration minimale.

    Ce guide explique comment initialiser Weave et exécuter un agent Claude doté d’outils MCP via `ClaudeSDKClient`. Weave trace automatiquement, de bout en bout, la conversation, les appels de modèle et les appels d’outil.

    <h3 id="prerequisites">
      Prérequis
    </h3>

    * Un compte CoreWeave Forge et une [clé API](https://forge.coreweave.com/settings#apikeys) définie dans la variable d’environnement `WANDB_API_KEY`.
    * Une clé API Anthropic définie dans la variable d’environnement `ANTHROPIC_API_KEY`.
    * Python 3.10 ou version ultérieure.
  </Tab>

  <Tab title="TypeScript">
    Weave s’intègre à [`@anthropic-ai/claude-agent-sdk`](https://github.com/anthropics/claude-agent-sdk) pour tracer automatiquement les appels `query()`, notamment les spans d’agent, les réponses du modèle et les appels d’outil.

    <h3 id="prerequisites-2">
      Prérequis
    </h3>

    * Un compte CoreWeave Forge et une [clé API](https://forge.coreweave.com/settings#apikeys) définie dans la variable d’environnement `WANDB_API_KEY`.
    * Une clé API Anthropic définie dans la variable d’environnement `ANTHROPIC_API_KEY`.
    * Node.js 18 ou version ultérieure.
    * `@anthropic-ai/claude-agent-sdk` version `0.3.178` ou ultérieure.
  </Tab>
</Tabs>

<h3 id="install-packages">
  Installer les paquets
</h3>

Installez les paquets suivants dans votre environnement de développement. Le paquet `weave` capture les traces et `claude-agent-sdk` fournit l’environnement d’exécution de l’agent.

<CodeGroup>
  ```bash Python theme={"system"}
  pip install weave claude-agent-sdk
  ```

  ```bash TypeScript theme={"system"}
  npm install weave @anthropic-ai/claude-agent-sdk
  ```
</CodeGroup>

<h3 id="initialize-weave-in-your-code">
  Initialiser Weave dans votre code
</h3>

<Tabs>
  <Tab title="Python">
    Ajoutez `weave.init` au projet, mettez à jour les noms de votre équipe et de votre projet CoreWeave Forge, puis créez un agent comme vous le feriez habituellement. `weave.init` active le patching automatique qui capture les traces issues du Claude Agent SDK.

    Le code suivant crée un agent Claude doté de deux outils MCP de calcul et l’exécute pendant que Weave capture les traces.

    ```python lines highlight="11" theme={"system"}
    import anyio
    import weave

    from claude_agent_sdk import (
        ClaudeAgentOptions,
        ClaudeSDKClient,
        create_sdk_mcp_server,
        tool,
    )

    weave.init("<your-team>/<your-project-name>")

    @tool("add", "Add two numbers", {"a": float, "b": float})
    async def add(args: dict) -> dict:
        return {"content": [{"type": "text", "text": str(args["a"] + args["b"])}]}

    @tool("multiply", "Multiply two numbers", {"a": float, "b": float})
    async def multiply(args: dict) -> dict:
        return {"content": [{"type": "text", "text": str(args["a"] * args["b"])}]}

    math_server = create_sdk_mcp_server(
        name="math",
        version="1.0.0",
        tools=[add, multiply],
    )

    async def main():
        options = ClaudeAgentOptions(
            mcp_servers={"math": math_server},
            allowed_tools=["mcp__math__add", "mcp__math__multiply"],
        )

        async with ClaudeSDKClient(options=options) as client:
            await client.query("Using the math tools, compute (3 + 7) * 2.")

            async for message in client.receive_response():
                print(message)


    anyio.run(main)
    ```

    Lors de l’exécution du script, `weave.init()` affiche un lien vers votre projet. Ouvrez ce lien pour examiner les traces capturées pour la requête de l'agent, les réponses du modèle et les appels d’outil.
  </Tab>

  <Tab title="TypeScript">
    Weave instrumente automatiquement `query()` grâce aux hooks du chargeur de modules. La configuration requise diffère légèrement selon le système de modules. Pour plus d'informations sur les différences entre CommonJS et ESM et sur le fonctionnement des hooks du chargeur de Weave, consultez le [guide d'intégration tierce du SDK TypeScript](/fr/products/wandb/weave/guides/integrations/js).

    * **Projets CommonJS** : aucune configuration supplémentaire n'est nécessaire. Chargez `weave` avec require avant `@anthropic-ai/claude-agent-sdk` afin que l'instrumentation automatique s'exécute en premier.
    * **Projets ESM** : démarrez Node avec l'option `--import=weave/instrument` afin que l'instrumentation se charge avant tout autre module.

    Cet exemple définit un outil MCP `wikipedia_search` et exécute une conversation en trois tours. Chaque tour de conversation correspond à un appel `query()` distinct, mais les tours suivants transmettent `resume` avec le `session_id` du premier tour afin que tous les tours soient regroupés en une seule session dans la vue Weave Agents. Les deux premiers tours déclenchent des recherches sur Wikipédia, tandis que le troisième s'appuie sur le contexte de la conversation précédente pour produire une synthèse sans appel d'outil.

    ```typescript lines highlight="36" title="main.mjs" theme={"system"}
    import * as weave from "weave";
    import { createSdkMcpServer, query, tool, type Options } from "@anthropic-ai/claude-agent-sdk";
    import { z } from "zod";

    const wikipediaSearch = tool(
        "wikipedia_search",
        "Search Wikipedia for a topic and return its title and intro paragraph.",
        { query: z.string().describe("The topic to search for") },
        async ({ query }) => {
        const url = new URL("https://en.wikipedia.org/w/api.php");
        url.search = new URLSearchParams({
            action: "query",
            generator: "search",
            gsrsearch: query,
            gsrlimit: "1",
            prop: "extracts",
            exintro: "true",
            explaintext: "true",
            format: "json",
        }).toString();

        const response = await fetch(url, { headers: { "User-Agent": "weave-demo" } });
        const data = await response.json();
        const page = Object.values(data.query.pages)[0] as { title: string; extract: string };
        return { content: [{ type: "text" as const, text: `${page.title}: ${page.extract}` }] };
        },
    );

    const wikiServer = createSdkMcpServer({
        name: "wiki",
        version: "1.0.0",
        tools: [wikipediaSearch],
    });

    async function main() {
        await weave.init("<your-team>/<your-project-name>");

        const baseOptions: Options = {
        model: "claude-sonnet-4-5",
        maxTurns: 4,
        mcpServers: { wiki: wikiServer },
        allowedTools: ["mcp__wiki__wikipedia_search"],
        };

        const questions = [
        "Who founded Anthropic?",
        "What is Claude (the AI assistant)?",
        "Summarize what we discussed in one sentence.",
        ];

        let sessionId: string | undefined;

        for (const prompt of questions) {
        const options: Options = sessionId
            ? { ...baseOptions, resume: sessionId }
            : baseOptions;

        console.log(`USER: ${prompt}`);
        for await (const message of query({ prompt, options })) {
            if (message.type === "system" && message.subtype === "init") {
            sessionId ??= message.session_id;
            }
            if (message.type === "result" && message.subtype === "success") {
            console.log(`AGENT: ${message.result}\n`);
            }
        }
        }
    }

    main().catch(console.error);
    ```

    Chaque appel à `query()` produit un span racine `invoke_agent`. Comme les tours de conversation suivants reprennent le même `session_id`, Weave attribue le même `gen_ai.conversation.id` à tous les spans et les regroupe en une seule session dans la vue Agents.

    Enregistrez l’exemple sous le nom `main.mjs` et exécutez-le avec l’option `--import=weave/instrument` afin que le hook du chargeur s’exécute avant tout autre module :

    ```bash theme={"system"}
    node --import=weave/instrument main.mjs
    ```
  </Tab>
</Tabs>

<h3 id="see-your-agent-traces-in-the-agents-view">
  Consulter les traces de votre agent dans la vue Agents
</h3>

Une fois le script exécuté, `weave.init()` affiche un lien vers votre projet. Ouvrez la vue **Agents** pour examiner :

* Une session regroupant les tours de conversation.
* Chaque tour de conversation, représenté par un span `invoke_agent` contenant des spans enfants imbriqués `chat` et `execute_tool`.
* L’entrée complète, le modèle, la sortie, l’utilisation des jetons et les résultats des outils à chaque étape.

Pour en savoir plus sur l’affichage des données Agents dans Weave, consultez [Afficher l’activité des agents](/fr/products/wandb/weave/guides/tracking/view-agent-activity).
