tools_service
Назначение:🔗
tool_calls — это микросервис-интерпретатор вызовов функций, доступных ChatGPT через механизм function calling (или tool calling). Он получает от gpt_service название функции и аргументы, вызывает нужную функцию асинхронно, и возвращает результат.
Поведение:🔗
- Имеет один эндпоинт
POST /execute_tool - Принимает
function_name,args,request_id - Производит логгирование всех вызовов (вход и ошибки)
- Использует центральный реестр функций
FUNCTION_REGISTRY - Все функции регистрируются с помощью декоратора
@register
Логика вызова:🔗
- При старте сервиса вызывается
on_startup()— логируется запуск. -
При поступлении запроса:
- По ключу
function_nameищется функция вFUNCTION_REGISTRY. - Если не найдена — возвращается сообщение об ошибке.
- Если найдена — вызывается с аргументами из
args(как**kwargs). - Если вызов завершился успешно — результат возвращается.
- Если возникает
TypeErrorили иное исключение — возвращается текст об ошибке и логируется.
- По ключу
⚙️ Пример запроса:🔗
Пример ответа:🔗
Особенности:🔗
- Поддержка динамически расширяемого набора функций, без изменения основного кода.
- Позволяет безопасно изолировать "действия" от OpenAI (например:
показать расписание,включить уведомления,получить курсы валюти т.д.). - Используется внутри
gpt_service, если в ответе от OpenAI содержитсяtool_call.