def ejecutar_conversación():
# 1. Configurar el diálogo y las funciones disponibles
mensajes = [{"role": "usuario", "contenido": "¿Cómo está el clima en San Francisco, Tokio y París?"}]
herramientas = [
{
"tipo": "función",
"función": {
"nombre": "get_current_weather",
"description": "Obtener el clima actual en una ubicación determinada",
"parámetros": {
"tipo": "objeto",
"propiedades": {
"ubicación": {
"tipo": "cadena",
"description": "La ciudad y el estado, por ejemplo, San Francisco, CA",
},
"unidad": {"tipo": "cadena", "enum": ["celsius", "fahrenheit"]},
},
"requerido": ["ubicación"],
},
},
}
]
# 2. Crea una conversación
respuesta = cliente.chat.compleciones.create(
modelo="gpt-4o",
mensajes = mensajes,
herramientas = herramientas,
herramienta_choice="auto",
)
mensaje_respuesta = respuesta.opciones[0].mensaje
imprimir (mensaje_respuesta)
# 3. Manejar llamadas a funciones
llamadas_herramientas = mensaje_respuesta.llamadas_herramientas
si la herramienta_llama:
funciones_disponibles = {
"get_current_weather": obtener_current_weather,
}
mensajes.append(respuesta_mensaje)
# 4. Ejecute la llamada a la función y obtenga el resultado.
para llamada_herramienta en llamadas_herramientas:
nombre_función = llamada_herramienta.nombre.función
function_to_call = funciones_disponibles[nombre_función]
function_args = json.loads(tool_call.function.argumentos)
respuesta_función = función_a_llamar(
ubicación=function_args.get("ubicación"),
unidad=function_args.get("unidad"),
)
mensajes.append({
"tool_call_id": herramienta_call.id,
"rol": "herramienta",
"nombre": nombre_función,
"contenido": función_respuesta,
})
# 5. Obtén la respuesta final
segunda_respuesta = client.chat.completions.create(
modelo="gpt-4o",
mensajes = mensajes,
)
devolver segunda_respuesta
# Ejecutar diálogo
imprimir(ejecutar_conversación())