Dingo: Бесшовная интеграция функций Python в ChatGPT

Интегрируйте любую функцию Python в ChatGPT одной строкой кода.

Введение

Последние достижения в области больших языковых моделей привели к появлению агентов ИИ. Говоря простым языком, агент – это механизм, который добавляет к LLM внешние инструментов (функций). Эти инструменты могут быть вызваны моделью (один или несколько раз подряд) на основе пользовательского ввода.

Первоначально для того, чтобы интегрировать функцию в LLM, необходимо было тщательно сконструировать промпт для описания функции. Кроме того, необходимо было разобрать вывод, чтобы определить, можно ли использовать эту функию.

В последней версии GPT появились возможности вызова функций, которые упрощают процесс интеграции плагинов. Прежде всего, она определяет четкую и фиксированную структуру для описания функций. Кроме того, сами модели были разработаны таким образом, чтобы определять, когда функция должна быть вызвана (на основе входных данных), и отвечать JSON, соответствующим сигнатуре функции. Однако, несмотря на эти улучшения, процесс интеграции по-прежнему остается утомительным и требует больших накладных расходов.

В этой статье мы рассмотрим, как построить простой разговорный агент ИИ с помощью библиотеки Agent Dingo.

Ключевой особенностью Dingo является то, что она позволяет интегрировать внешнюю функцию в ChatGPT путем добавления всего одной строки кода.

Быстрый запуск

Для того чтобы кратко рассмотреть основные функции Dingo, мы создадим простой агент, способный предоставлять информацию о текущей погоде путем запроса к OpenWeather API.

В качестве первого шага необходимо установить библиотеку.

pip install agent-dingo

Далее нам нужно установить ключ API OpenAI.

export OPENAI_API_KEY=<YOUR_KEY>

Затем наш агент Dingo может быть инстанцирован следующим образом.

from agent_dingo import AgentDingo

agent = AgentDingo()

Допустим, для получения текущей погоды через OpenWeather API у нас есть функция get_temperature. Чтобы интегрировать ее в ChatGPT, нам нужно добавить одну строчку кода – декоратор @agent.function.

@agent.function
def get_temperature(city: str) -> str:
    base_url = "https://api.openweathermap.org/data/2.5/weather"
    params = {"q": city, "appid": openweathermap_api_key, "units": "metric"}
    response = requests.get(base_url, params=params)
    data = response.json()
    print("get_temperature function output :", data["main"])
    return str(data)

Чтобы получить результат, нам нужно вызвать методchat.

agent.chat("What is the current weather in Linz?")

Как видите, процесс интеграции функций очень интуитивно понятен и прост. За кулисами мы запрашиваем у ChatGPT текущую погоду в Линце. Модель имеет доступ к функции (get_temperature), которая была интегрирована с помощью декоратора agent.function. Модель решает вызвать функцию get_temperature и передает в качестве аргумента город Линц. Ответ разбирается, и мы получаем следующий результат.

The current temperature in Linz is 30°C.

Как вы могли заметить, нам не пришлось предоставлять никаких описаний функции. Это достигается за счет автоматической генерации docstring в процессе регистрации (при вызове декоратора agent.function). Однако для сложных функций это может оказаться неоптимальным. Поэтому вместо того, чтобы полагаться на автоматическую генерацию, мы рекомендуем вам всегда предоставлять docstring функции. Можно использовать стили docstring как google, так и numpy. В нашем примере get_temperature это будет выглядеть следующим образом.

@agent.function
def get_temperature(city: str) -> str:
    """Retrieves the current temperature in a city.
    Parameters
    ----------
    city : str
        The city to get the temperature for.
    Returns
    -------
    float
        str representation of the json response from the weather api.
    """
    base_url = "https://api.openweathermap.org/data/2.5/weather"
    params = {"q": city, "appid": openweathermap_api_key, "units": "metric"}
    response = requests.get(base_url, params=params)
    data = response.json()
    print("get_temperature function output :", data["main"])
    return str(data)

Заключение

В этой статье мы рассмотрели, как Agent Dingo упрощает процесс интеграции функций Python в ChatGPT для создания простого разговорного ИИ-агента. С Dingo вам больше не нужно беспокоиться о ручной интеграции функций или о вызове промежуточных функций. Фреймворк создан для автоматизации этих задач, позволяя вам сосредоточиться на написании основной функциональности вашего приложения.

+1
0
+1
1
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *