from openai import OpenAI
import json
client = OpenAI(
base_url="https://api.highwayapi.ai/openai",
api_key="<Your API Key>",
)
model = "deepseek/deepseek-v3"
# Función de ejemplo para simular la obtención de datos meteorológicos.
def get_weather(location):
"""Obtiene el clima actual de la ubicación especificada"""
print("Llamando a la función get_weather, ubicación: ", location)
# En una aplicación real, aquí debes llamar a una API meteorológica externa.
# Este es un ejemplo simplificado que devuelve datos codificados.
return json.dumps({"位置": location, "温度": "20 摄氏度"})
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Obtiene el clima de una ubicación; el usuario debe proporcionar primero la ubicación",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Información de la ciudad, por ejemplo: Shanghái",
}
},
"required": ["location"]
},
}
},
]
messages = [
{
"role": "user",
"content": "¿Qué tiempo hace en Shanghái?"
}
]
# Envía la solicitud e imprime la respuesta
response = client.chat.completions.create(
model=model,
messages=messages,
tools=tools,
)
# En producción, comprueba si la respuesta contiene una llamada a herramienta
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())
# Asegúrate de que la llamada a herramienta se haya definido en el paso anterior
if tool_call:
# Amplía el historial de conversación y agrega el mensaje de llamada a herramienta del asistente
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)
# Ejecuta la función y obtiene la respuesta
function_response = get_weather(
location=function_args.get("location"))
# Agrega la respuesta de la función a los mensajes
messages.append(
{
"tool_call_id": tool_call.id,
"role": "tool",
"content": function_response,
}
)
# Obtiene la respuesta final del modelo, incluido el resultado de la función
answer_response = client.chat.completions.create(
model=model,
messages=messages,
# Nota: no incluyas aquí el parámetro tools
)
print(answer_response.choices[0].message)