September 5, 2023

Function calling and OpenAI Cookbook

Основное ограничение лингвистических моделей в том, что они обрабатывают и генерируют текст, но не могут выполнять действия. Различный программы с поддержкой агентов (кстати пост про агентов уже написан, но никак не опубликую его, так как нужно сокращать, получился огромным) аля AutoGPT и т.д., а так же библиотеки вроде LangChain пытаются это изменить, добавляя возможность выполнять кусочки кода, но сталкиваются с тем, что сгенерированный текст в неиспользуемом формате даже не смотря на просьбу “генерируй в формате JSON”.

Function calling это попытка перенести логику внутрь лингвистической модели.

Пример как это использовать:

На запрос пользователя “What's the weather like in Boston now?” мы должны сначала понять, что нужно будет использовать функцию получения погоды, дальше выделить из запроса в общем виде отдельно город (Boston) и дату (now, еще и понять, какое сегодня число) и потом все эти данные передать в погодное API. Технически можно это сделать через LangChain сделав серию вызовов, перепроверив, что необходимые данные получены, а дальше дернуть функцию, но опыт показывает, что в некоторых ситуация все равно произойдет ошибка обработки.

Function calling позволяет систематизировать такие задачи и получить на выходе правильно упакованный объект. Предполагаю, что ребята дообучили модель, чтобы она хорошо с этим справлялась.

Я думаю, что Function calling даст еще один больой толчок развития стартапов и проектов поверх OpenAI GPT.

Другие примеры использования:

  • торговля акциями (принятие решение и выставления ставок)
  • отправка писем (отправь Маше последний отчет)
  • рекомендации (глянь новые фильмы и договорить с подругой сходить в кино)

OpenAI Cookbook

У OpenAI есть очень крутые Cookbooks - по сути это подробно описанные примеры применения OpenAI API. Даже не документация, а именно задача-рассуждение-реализация-объяснения. Например на данных википедии подробно описывается подход файнтюнинга и embeddings, показывается реализации одной и той же задачи двумя разными способами, показываются плюсы/минусы каждого подхода и когда какой стоит использовать. Возвращаясь к Function Calling подробное описание и пример использования доступен по ссылке https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb Другие кукбуки доступны тут: https://github.com/openai/openai-cookbook Если вы пишите свои программы - кукбук отличная точка для старта, которая ускоряет разработку. Для совсем ленивых можно скормить GPT-4 текстом описание вашей задачи и приложение текст из кукбука и получить готовый год. P.S. LangChain уже поддержал Function Calling https://github.com/hwchase17/langchain/blob/master/docs/modules/agents/tools/tools_as_openai_functions.ipynb