from openai import OpenAI
import json
client = OpenAI(
base_url="https://api.highwayapi.ai/openai",
api_key="<Your API Key>",
)
model = "deepseek/deepseek-v3"
# Exemple de fonction permettant de simuler l’obtention de données météo.
def get_weather(location):
"""Obtenir la météo actuelle du lieu spécifié"""
print("Appel de la fonction get_weather, lieu : ", location)
# Dans une application réelle, vous devez appeler ici une API météo externe.
# Il s’agit d’un exemple simplifié qui renvoie des données codées en dur.
return json.dumps({"位置": location, "温度": "20 degrés Celsius"})
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Obtenir la météo d’un lieu ; l’utilisateur doit d’abord fournir le lieu",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Informations sur la ville, par exemple : Shanghai",
}
},
"required": ["location"]
},
}
},
]
messages = [
{
"role": "user",
"content": "Quel temps fait-il à Shanghai ?"
}
]
# Envoyer la requête et afficher la réponse
response = client.chat.completions.create(
model=model,
messages=messages,
tools=tools,
)
# En production, vérifiez que la réponse contient bien un appel d’outil
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())
# S’assurer que l’appel d’outil a été défini à l’étape précédente
if tool_call:
# Étendre l’historique de conversation en ajoutant le message d’appel d’outil de l’assistant
messages.append(response.choices[0].message)
function_name = tool_call.function.name
if function_name == "get_weather":
function_args = json.loads(tool_call.function.arguments)
# Exécuter la fonction et obtenir la réponse
function_response = get_weather(
location=function_args.get("location"))
# Ajouter la réponse de la fonction aux messages
messages.append(
{
"tool_call_id": tool_call.id,
"role": "tool",
"content": function_response,
}
)
# Obtenir la réponse finale du modèle, incluant le résultat de la fonction
answer_response = client.chat.completions.create(
model=model,
messages=messages,
# Remarque : n’incluez pas ici le paramètre tools
)
print(answer_response.choices[0].message)