Перейти к содержанию

tools_service

Назначение:🔗

tool_calls — это микросервис-интерпретатор вызовов функций, доступных ChatGPT через механизм function calling (или tool calling). Он получает от gpt_service название функции и аргументы, вызывает нужную функцию асинхронно, и возвращает результат.


Поведение:🔗

  • Имеет один эндпоинт POST /execute_tool
  • Принимает function_name, args, request_id
  • Производит логгирование всех вызовов (вход и ошибки)
  • Использует центральный реестр функций FUNCTION_REGISTRY
  • Все функции регистрируются с помощью декоратора @register

Логика вызова:🔗

  1. При старте сервиса вызывается on_startup() — логируется запуск.
  2. При поступлении запроса:

    • По ключу function_name ищется функция в FUNCTION_REGISTRY.
    • Если не найдена — возвращается сообщение об ошибке.
    • Если найдена — вызывается с аргументами из args (как **kwargs).
    • Если вызов завершился успешно — результат возвращается.
    • Если возникает TypeError или иное исключение — возвращается текст об ошибке и логируется.

⚙️ Пример запроса:🔗

{
  "function_name": "get_weather",
  "args": {
    "city": "Москва"
  },
  "request_id": "req-abc123"
}

Пример ответа:🔗

{
  "result": "В Москве сейчас +17°C, облачно."
}

Особенности:🔗

  • Поддержка динамически расширяемого набора функций, без изменения основного кода.
  • Позволяет безопасно изолировать "действия" от OpenAI (например: показать расписание, включить уведомления, получить курсы валют и т.д.).
  • Используется внутри gpt_service, если в ответе от OpenAI содержится tool_call.