Utiliser les Connecteurs dans les conversations

Une fois qu’un Connecteur est enregistré et authentifié (si nécessaire), vous pouvez l’attacher à n’importe quelle conversation.

Vous pouvez mélanger les Connecteurs avec les outils intégrés comme web_search, filtrer les outils que le modèle peut utiliser et configurer les Connecteurs sur les agents afin qu’ils soient disponibles dans chaque conversation.

i
Information

Les outils sont des fonctions exécutables de serveur MCP que le modèle peut appeler. Lorsque vous attachez un Connecteur, le modèle découvre automatiquement ces outils et appelle les bons en fonction de la requête.

Attacher des Connecteurs à une conversation

Attacher des Connecteurs à une conversation

Utilisation de base

Utilisation de base

Passez n’importe quel Connecteur en tant qu’outil à une conversation en utilisant type: "connector" ainsi que le nom ou l’UUID du Connecteur comme connector_id.

Note

Tous les outils exposés par le Connecteur sont accessibles au modèle. Pour restreindre les outils que le modèle peut appeler, voir Filtrer les outils.

import asyncio
from mistralai.client import Mistral

client = Mistral(api_key="your-api-key")


async def main() -> None:
    response = await client.beta.conversations.start_async(
        model="mistral-small-latest",
        inputs=[
            {
                "role": "user",
                "content": "Using deepwiki, tell me about the structure of the sqlite/sqlite repository.",
            }
        ],
        tools=[
            {
                "type": "connector",
                "connector_id": "my_deepwiki",  # name or UUID
            },
        ],
    )
    for output in response.outputs:
        if output.type == "message.output":
            print(output.content)


asyncio.run(main())
Filtrer les outils

Filtrer les outils

Pour contrôler quels outils d’un Connecteur le modèle peut utiliser, ajoutez un objet tool_configuration. Définissez include pour autoriser des outils spécifiques, ou exclude pour les bloquer. Vous pouvez utiliser l’un ou l’autre, mais pas les deux en même temps.

import asyncio
from mistralai.client import Mistral

client = Mistral(api_key="your-api-key")


async def main() -> None:
    # Exclude specific tools
    response = await client.beta.conversations.start_async(
        model="mistral-small-latest",
        inputs=[{"role": "user", "content": "What tools do you have access to?"}],
        tools=[
            {
                "type": "connector",
                "connector_id": "my_deepwiki",
                "tool_configuration": {
                    "exclude": ["read_wiki_structure"],
                },
            },
        ],
    )

    # Include only specific tools
    response = await client.beta.conversations.start_async(
        model="mistral-small-latest",
        inputs=[{"role": "user", "content": "What tools do you have access to?"}],
        tools=[
            {
                "type": "connector",
                "connector_id": "my_deepwiki",
                "tool_configuration": {
                    "include": ["ask_question"],
                },
            },
        ],
    )


asyncio.run(main())
Astuce

Vous pouvez exiger une approbation de l’utilisateur avant l’exécution d’un outil en ajoutant requires_confirmation à la tool_configuration. Cela est utile pour des actions sensibles comme l’envoi d’e-mails ou la modification de données. Voir Validation humaine pour le flux complet de confirmation.

Utiliser les outils intégrés avec les Connecteurs

Utiliser les outils intégrés avec les Connecteurs

Mistral fournit des outils intégrés tels que web_search, code_interpreter, image_generation et document_library. Vous pouvez les passer aux côtés des Connecteurs dans le même tableau tools. Le modèle décide quel outil appeler en fonction de la requête.

Avertissement

web_search, web_search_premium et code_interpreter fonctionnent avec l'API Conversations (/v1/conversations) et l'API Agents. Ils ne sont pas pris en charge dans l'API Chat Completions (/v1/chat/completions). Les outils intégrés comme image_generation sont aussi pris en charge dans l'API Chat Completions.

import asyncio
from mistralai.client import Mistral

client = Mistral(api_key="your-api-key")


async def main() -> None:
    response = await client.beta.conversations.start_async(
        model="mistral-small-latest",
        inputs=[
            {
                "role": "user",
                "content": "Search the web for the latest SQLite release, then use deepwiki to find where the version is defined in the sqlite/sqlite repo.",
            }
        ],
        tools=[
            {"type": "web_search"},
            {"type": "connector", "connector_id": "my_deepwiki"},
        ],
    )
    for output in response.outputs:
        if output.type == "message.output":
            print(output.content)


asyncio.run(main())
Ajouter des Connecteurs à un agent

Ajouter des Connecteurs à un agent

Vous pouvez également attacher des Connecteurs directement à un agent lors de sa création. Toute conversation démarrée avec cet agent a alors automatiquement accès aux outils du Connecteur, sans avoir à passer un tableau tools à chaque fois.

Astuce

Cela est utile lorsqu’un agent a toujours besoin des mêmes outils externes (par exemple, un agent de support qui interroge systématiquement un CRM).

import asyncio
from mistralai.client import Mistral

client = Mistral(api_key="your-api-key")


async def main() -> None:
    # Create the agent with a connector
    agent = await client.beta.agents.create_async(
        name="deepwiki_agent",
        description="Agent with DeepWiki access for code repository exploration",
        model="mistral-small-latest",
        instructions="You are a helpful assistant that can explore code repositories using DeepWiki. Be concise.",
        tools=[
            {
                "type": "connector",
                "connector_id": "my_deepwiki",
            },
        ],
    )

    # Start a conversation using the agent. No tools needed here
    response = await client.beta.conversations.start_async(
        agent_id=agent.id,
        inputs=[
            {"role": "user", "content": "What is the main purpose of the sqlite repository?"}
        ],
    )
    for output in response.outputs:
        if output.type == "message.output":
            print(output.content)


asyncio.run(main())
Attention

Utilisez agent_id au lieu de model pour démarrer une conversation. Vous ne pouvez pas passer les deux.