Utiliser les Connecteurs dans les conversations
Après avoir enregistré un Connecteur et l'avoir connecté, vous pouvez l'attacher à une conversation. Le modèle découvre les outils du Connecteur et appelle ceux qui correspondent à la requête.
Cette page explique comment attacher un Connecteur, filtrer ses outils, le combiner avec des outils intégrés et l'ajouter à un agent pour que chaque conversation avec cet agent puisse l'utiliser.
Les outils du Connecteur sont des fonctions de serveur MCP que le modèle peut appeler.
Attacher un Connecteur à une conversation
Pour attacher un Connecteur, ajoutez une entrée au tableau tools avec type: "connector" et le nom ou l'ID du Connecteur dans connector_id.
Le modèle peut appeler tous les outils exposés par le Connecteur. Pour restreindre la liste, consultez 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
Pour choisir les outils d'un Connecteur que le modèle peut appeler, ajoutez un objet tool_configuration. Définissez include pour lister les outils à autoriser, ou exclude pour lister les outils à bloquer. Utilisez l'un ou l'autre, pas les deux.
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_wiki_question"],
},
},
],
)
asyncio.run(main())Pour exiger une approbation avant l'exécution d'un outil, par exemple un outil qui envoie un e-mail ou modifie des données, listez-le dans requires_confirmation de l'objet tool_configuration. Pour le processus complet, consultez Human-in-the-loop.
Combiner des Connecteurs avec des outils intégrés
Vous pouvez passer des outils intégrés, comme web_search, code_interpreter, image_generation et document_library, dans le même tableau tools que les Connecteurs. Le modèle choisit l'outil à appeler en fonction de la requête.
web_search, web_search_premium et code_interpreter fonctionnent avec l'API de conversations (/v1/conversations) et l'API d'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 également 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 un Connecteur à un agent
Lorsqu'un agent a toujours besoin des mêmes outils, par exemple un agent d'assistance qui interroge un CRM, ajoutez le Connecteur lors de la création de l'agent. Chaque conversation que vous démarrez avec cet agent peut alors appeler les outils du Connecteur, sans tableau tools.
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())Pour démarrer une conversation avec un agent, passez agent_id au lieu de model. Vous ne pouvez pas passer les deux.