---
title: "AG2"
description: "Connectez des systèmes multi-agents AG2 à TwexAPI pour la recherche de tweets, les profils, les timelines et les workflows de recherche délégués."
---

[AG2](https://github.com/ag2ai/ag2) est un framework Python open source pour les systèmes multi-agents. TwexAPI ne fournit pas encore de toolkit de recherche AG2 natif. Connectez les agents AG2 au [serveur MCP TwexAPI](/mcp/overview) avec `MCPToolkit` afin qu'ils puissent appeler `explore` et `twexapi_request` tout en gardant les identifiants API dans votre infrastructure.

Conservez chaque ID de tweet, ID d'utilisateur et curseur renvoyé par l'API.

## Pourquoi utiliser AG2 avec TwexAPI ?

AG2 vous donne un contrôle explicite sur l'exposition des outils, la délégation et le middleware. Associez-le au MCP TwexAPI lorsque vous voulez une recherche multi-agents sans coder chaque route REST en dur.

| Limite | Contrôle AG2 | Avantage |
| ----------------- | ------------------------- | ---------------------------------------------------------------------- |
| Construction d'outils | `MCPToolkit(...)` | Restreindre à `explore` et `twexapi_request`, ou filtrer davantage |
| Entrée du modèle | Schémas d'outils MCP | Le modèle choisit les routes uniquement parmi les endpoints découverts |
| Portée runtime | `Variable` | Résoudre les en-têtes par utilisateur ou par tenant à l'exécution |
| Délégation | `Agent.as_tool()` | Garder l'historique d'appels d'outils du chercheur hors du contexte du coordinateur |
| Transport | `MCPServerConfig` | Pointer vers `https://api.twexapi.io/mcp` avec `x-api-key` |

Ce modèle convient aux agents de recherche, de monitoring et de reporting. Utilisez le [SDK Python](/sdks/python) ou la [collection Prefect](/guides/prefect) pour les tâches déterministes qui ne nécessitent pas de décisions du modèle.

## Prérequis

* Python 3.10 ou ultérieur
* Une [clé API TwexAPI](https://twexapi.io/dashboard)
* Une clé de fournisseur LLM prise en charge par AG2

Les lectures publiques X ne nécessitent pas d'identifiants X Developer. Authentifiez-vous avec TwexAPI.

## Installer AG2

```bash
python -m pip install "ag2>=1.0.0" python-dotenv
```

Installez également l'extra de votre fournisseur de modèle.

```bash
python -m pip install "ag2[anthropic]>=1.0.0"
```

Stockez les secrets hors du contrôle de version.

```bash
export TWEXAPI_API_KEY="YOUR_API_KEY"
export ANTHROPIC_API_KEY="YOUR_ANTHROPIC_KEY"
```

## Connecter TwexAPI MCP avec MCPToolkit

Utilisez `MCPToolkit` côté client lorsque les identifiants doivent rester dans votre infrastructure. TwexAPI MCP expose `explore` et `twexapi_request`.

```python
import asyncio
import os

from ag2 import Agent
from ag2.config import AnthropicConfig
from ag2.tools import MCPToolkit, MCPServerConfig
from dotenv import load_dotenv

load_dotenv()
config = AnthropicConfig(model="claude-sonnet-4-20250514")

twexapi_mcp = MCPToolkit(
    MCPServerConfig(
        server_url="https://api.twexapi.io/mcp",
        server_label="twexapi",
        headers={"x-api-key": os.environ["TWEXAPI_API_KEY"]},
        allowed_tools=["explore", "twexapi_request"],
    )
)

agent = Agent(
    "x-researcher",
    prompt=(
        "Search X for evidence before answering. "
        "Always call explore before twexapi_request. "
        "Quote tweet text verbatim and keep every tweet ID you receive. "
        "Ask for confirmation before read_only: false actions."
    ),
    config=config,
    tools=[twexapi_mcp],
)


async def main() -> None:
    reply = await agent.ask(
        "What are developers saying about AI agents on X this week? "
        "Return tweet IDs, authors, and a 5-bullet summary."
    )
    print(reply.body)


asyncio.run(main())
```

L'en-tête `headers` avec `x-api-key` est requis. Les requêtes non authentifiées vers `https://api.twexapi.io/mcp` renvoient `401`.

## Restreindre les outils par rôle d'agent

Donnez aux agents de découverte uniquement l'accès à `explore`. Donnez aux agents d'exécution les deux outils.

```python
catalog_agent_tools = [
    MCPToolkit(
        MCPServerConfig(
            server_url="https://api.twexapi.io/mcp",
            headers={"x-api-key": os.environ["TWEXAPI_API_KEY"]},
            allowed_tools=["explore"],
            server_label="twexapi-catalog",
        )
    )
]

execution_agent_tools = [
    MCPToolkit(
        MCPServerConfig(
            server_url="https://api.twexapi.io/mcp",
            headers={"x-api-key": os.environ["TWEXAPI_API_KEY"]},
            allowed_tools=["explore", "twexapi_request"],
            server_label="twexapi-execute",
        )
    )
]
```

## Déléguer la recherche dans une équipe multi-agents

`Agent.as_tool()` expose un agent comme outil pour un autre agent. Le coordinateur reçoit la réponse finale du délégué, pas son historique interne d'appels d'outils.

```python
searcher = Agent(
    "searcher",
    prompt=(
        "Use TwexAPI MCP to search public X posts. "
        "Call explore first. Return tweet text with IDs. Do not summarise away IDs."
    ),
    config=config,
    tools=[twexapi_mcp],
)

analyst = Agent(
    "analyst",
    prompt="Turn tweet records into a factual brief. Keep every tweet ID.",
    config=config,
)

coordinator = Agent(
    "coordinator",
    prompt="Delegate the search, then pass the tweets to the analyst.",
    config=config,
    tools=[
        searcher.as_tool(description="Search public X posts and return raw tweet records."),
        analyst.as_tool(description="Analyse tweet records. Pass them in the context parameter."),
    ],
)

reply = await coordinator.ask("Brief me on this week's discussion of AI agents on X.")
print(reply.body)
```

## Checklist de handoff

Stockez les champs durables des réponses MCP afin que les étapes ultérieures du workflow ne dépendent pas de l'historique de chat.

| Type de données | Stocker |
| --- | --- |
| Tweets | `tweet_id`, `text`, `author_username`, `created_at`, `has_more`, `next_cursor`, requête d'origine |
| Profils | `user_id`, `username`, `name`, `description`, `followers_count`, source de la recherche |
| Tendances | pays, sujet, tag de contenu, lignes de tweets, filtres demandés |
| Écritures | `tweet_id`, nom de route, statut, enregistrement de confirmation |

Voir [Agent MCP Handoff](/mcp/agent-handoff) pour la checklist complète.

## Pagination

Lorsque `explore` renvoie une route paginée, repassez les champs de curseur documentés via `twexapi_request` sans modification. Traitez les curseurs comme des chaînes opaques. Dédupliquez les lignes sur `tweet_id` ou `user_id`.

```python
checkpoint = {
    "route_used": "/twitter/advanced_search/page",
    "query": "AI agents",
    "has_more": True,
    "next_cursor": "cursor_123",
}
```

## Combiner avec Docs MCP

Ajoutez le [serveur Docs MCP](/mcp/docs-mcp) lorsque les agents doivent rechercher la documentation TwexAPI avant de choisir les routes.

```python
tools=[
    MCPToolkit(
        MCPServerConfig(
            server_url="https://docs.twexapi.io/mcp",
            server_label="twexapi-docs",
        )
    ),
    twexapi_mcp,
]
```

## Gérer les échecs

Les erreurs MCP et REST remontent via le toolkit sous forme d'échecs HTTP. Branchez sur le statut avant de réessayer.

| Statut | Action |
| ------ | ------ |
| `400` | Corrigez la requête. Ne pas réessayer sans modification. |
| `401` | Vérifiez l'en-tête `x-api-key` ou le token Bearer. |
| `403` | Vérifiez l'accès au compte, les crédits et les permissions d'écriture. |
| `429` | Ralentissez et conservez le curseur. |
| `5xx` | Réessayez avec un backoff borné. |

Enveloppez `MCPToolkit` avec le middleware d'outils AG2 lorsque vous avez besoin de retries, de portes d'approbation ou de journalisation d'audit autour de chaque appel.

## MCP côté fournisseur (Anthropic uniquement)

Si vous ciblez Anthropic et acceptez de transmettre les identifiants au fournisseur, utilisez `MCPServerTool` au lieu de `MCPToolkit`. Préférez `MCPToolkit` pour les déploiements agnostiques du fournisseur et lorsque les clés API doivent rester dans votre infrastructure.

## Guides associés

* [Documentation AG2 MCP Servers](https://docs.ag2.ai/docs/user-guide/tools/mcp_servers/)
* [Serveur MCP](/mcp/overview)
* [Outils MCP](/mcp/tools)
* [LangChain](/guides/langchain)
* [CrewAI](/guides/crewai)
* [SDK Python](/sdks/python)
