Appel de fonctions
Le cœur d'un agent repose sur ses capacités d'utilisation d'outils, lui permettant d'utiliser et d'appeler des outils et workflows en fonction de la tâche qu'il doit accomplir.
Intégrés dans notre API, nous fournissons des outils intégrés tels que websearch, code_interpreter, image_generation et document_library. Vous pouvez également utiliser l'appel de fonctions standard en définissant un schéma JSON pour votre fonction.
Vous pouvez aussi enregistrer des serveurs MCP comme Connecteurs pour utiliser des outils externes dans les conversations et Agents.
Pour plus d'informations sur l'appel de fonctions, nous vous recommandons de consulter notre documentation sur l'appel de fonctions.
Créer un Agent
Pour utiliser l'appel de fonctions, nous pouvons soit créer un Agent, soit utiliser directement l'API Conversations sans celui-ci. Ci-dessous, nous vous montrons comment créer un Agent avec appel de fonctions et l'utiliser.
Définir la fonction
Nous devons définir la fonction que nous souhaitons que notre modèle appelle si nécessaire ; dans ce cas, la fonction est factice à des fins de démonstration.
from typing import Dict
def get_european_central_bank_interest_rate(date: str) -> Dict[str, str]:
"""
Retrieve the real interest rate of the European Central Bank for a given date.
Parameters:
- date (str): The date for which to retrieve the interest rate in the format YYYY-MM-DD.
Returns:
- dict: A dictionary containing the date and the corresponding interest rate.
"""
# This is a mock implementation. In a real scenario, you would fetch this data from an API or database.
# For demonstration, let's assume the interest rate is fixed at 2.5% for any date.
interest_rate = "2.5%"
return {
"date": date,
"interest_rate": interest_rate
}Une fois définie, nous fournissons un schéma correspondant à la même fonction.
ecb_interest_rate_agent = client.beta.agents.create(
model="mistral-medium-latest",
description="Can find the current interest rate of the European central bank",
name="ecb-interest-rate-agent",
tools=[
{
"type": "function",
"function": {
"name": "get_european_central_bank_interest_rate",
"description": "Retrieve the real interest rate of European central bank.",
"parameters": {
"type": "object",
"properties": {
"date": {
"type": "string",
},
},
"required": [
"date",
]
},
},
},
],
)Le résultat de la création de l'agent est l'objet agent, qui contient l'ID de l'agent que nous utiliserons pour démarrer une conversation.
Utiliser un Agent
Ensuite, pour l'utiliser, nous démarrons une conversation ou continuons une conversation existante.
response = client.beta.conversations.start(
agent_id=ecb_interest_rate_agent.id,
inputs=[{"role": "user", "content": "Whats the current 2025 real interest rate?"}]
)Renvoyer le résultat de la fonction
Le modèle produira soit une réponse, soit un appel de fonction. Nous devons détecter et renvoyer le résultat de la fonction attendue.
from mistralai.client import FunctionResultEntry
import json
if response.outputs[-1].type == "function.call" and response.outputs[-1].name == "get_european_central_bank_interest_rate":
# Running our function
function_result = json.dumps(get_european_central_bank_interest_rate(**json.loads(response.outputs[-1].arguments)))
# Providing the result to our Agent
user_function_calling_entry = FunctionResultEntry(
tool_call_id=response.outputs[-1].tool_call_id,
result=function_result,
)
# Retrieving the final response
response = client.beta.conversations.append(
conversation_id=response.conversation_id,
inputs=[user_function_calling_entry]
)
print(response.outputs[-1])
else:
# In case the model did not call our function
print(response.outputs[-1])