Implementación de Herramientas en Modelos GPT para Datos Climáticos

Clase 7 de 24Curso de OpenAI API

Resumen

¿Cómo implementar el uso de herramientas dentro de un modelo GPT?

En la actualidad, integrar herramientas externas en un modelo de lenguaje como GPT tiene un potencial ilimitado para expandir sus funcionalidades. En esta clase, aprenderemos a usar una API de GPT para obtener información climática en tiempo real basada en coordenadas geográficas. ¡Vamos a sumergirnos en el código y descubrir cómo hacer esto!

¿Cómo estructurar los mensajes en Python?

Para interactuar con la API de OpenAI, es fundamental estructurar adecuadamente los mensajes que el asistente manejará. En Python, una lista se utiliza para definir roles y mensajes:

mensajes = [
    {"role": "system", "content": "Eres un asistente que entrega datos sobre el clima del mundo en tiempo real."},
    {"role": "user", "content": "¿Cuál es el clima de Buenos Aires?"}
]

¿Cómo definir y declarar la API de chat GPT?

El siguiente paso es declarar los modelos y usar la función create del módulo chat.completion. Esto permitirá integrar modelos actualizados que admiten funciones.

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=mensajes
)

¿Cómo crear una función para obtener el clima?

Para que el asistente proporcione datos en tiempo real, debemos crear una función que consulte una API meteorológica:

def get_weather(latitud: float, longitud: float) -> str:
    url_api = f"https://api.meteo.com/getlat={latitud}&lon={longitud}"
    response = requests.get(url_api).json()
    return str(response)

¿Cómo definir la función dentro del modelo GPT?

Para comunicar el modelo con la función, declaramos los parámetros y el tipo de datos que manejará:

funciones = [
    {
        "name": "get_weather",
        "description": "Usa esta función para obtener información sobre el clima.",
        "parameters": {
            "latitud": {"type": "number", "description": "Latitud de la ubicación."},
            "longitud": {"type": "number", "description": "Longitud de la ubicación."}
        },
        "required": ["latitud", "longitud"],
        "output": {"type": "string", "description": "Clima de la ubicación pedida por el usuario"}
    }
]

¿Cómo gestionar la ejecución y respuesta de la función?

Una vez que la función ha sido creada y definida, debemos integrarla en el flujo de ejecución del programa para obtener una respuesta detallada del asistente:

if response['choices'][0]['finish_reason'] == 'function_call':
    function_name = response['choices'][0]['tool_call']['name']
    arguments = json.loads(response['choices'][0]['tool_call']['arguments'])

    if function_name == "get_weather":
        resultado_clima = get_weather(arguments["latitud"], arguments["longitud"])
        mensajes.append({"role": "tool", "name": "get_weather", "content": resultado_clima})

Este código nos permite hacer un seguimiento de las llamadas de la función get_weather, ejecutarlas y devolver la información al modelo GPT para una respuesta completa.

Recomendaciones y próximos pasos

Te animamos a expandir esta integración con otras APIs que te interesen, como las de Star Wars o Pokémon. No olvides definir claramente cada función en el código y siempre practicar para mejorar tus habilidades de programación e integración con modelos de lenguaje.

¡Sigue practicando y explorando las increíbles posibilidades que te ofrece la tecnología de los modelos GPT!