Требования и рекомендации
В этом разделе приводятся требования и рекомендации, которые следует соблюдать при разработке агента для публикации в GigaLab.
Требования
Для публикации в GigaLab агент должен соответствовать требованиям.
-
Python версии 3.12.3 и выше.
-
Агент разработан с помощью фреймворка LangGraph (Python-модуль
langgraph). -
Основные параметры работы агента должны определяться в переменных окружения в файле
.env.Пример заполнения переменных окружения в файле
.env.example . Файл.envвашего агента должен содержать все переменные из примера. -
Зависимости, необходимые для работы агента, должны быть заданы в файле
requirements.txtвнутри репозитория агента.Пример перечня зависимостей в
requirements.txt . -
Агент без ошибок запускается локально с помощью команды
langgraph dev.Для этого в репозитории агента должен быть файл
langgraph.json, в котором описаны параметры запуска. Изучите в репозитории пример файла . -
При выполнении http-запросов к сторонним сервисам используйте модули
requestsилиhttpxи передавайте заголовокUser-Agent: agent-toolkit. Без заголовкаUser-Agentпрокси не пропустит http-запрос. Вы можете использовать другое значение заголовка, согласованное с безопасностью. Это нужно для корректной работы метрик http-вызовов.В конфигурации агента используется прокси
http://proxy.sberdevices.ru, который поддерживает переменныеno_proxy,http_proxy,https_proxy. Сертификат SberDevices передается с помощью переменнойREQUESTS_CA_BUNDLE.
- Node.js версии 20 и выше.
- Фреймворк LangGraph JS (npm-модуль
@langchain/langgraph). - Файл
.envс переменными окружения, в которых заданы основные параметры работы агента. - Основные параметры работы агента определяются в переменных окружения.
- Файл
package.jsonс зависимостями агента. - Файл
langgraph.jsonс описанием графа. - Локальный запуск агента с помощью команды
langgraph dev.
Рекомендации по написанию кода
При разработке агента следуйте рекомендациям:
- для обмена сообщениям с моделью используйте библиотеку
langchain-gigachat; - используйте SDK
agent-lab-sdk . Он поможет упростить разработку, например, работу с метриками, и авторизацию в регионах Enablers и Advanced; - для сохранения состояния работы агента используйте
MemorySaver(). КлассMemorySaverиспользуется по умолчанию в методеgraph.compile()и переопределен в нашей обертке; - для передачи дополнительных данных (виджеты и прочая информация необходимая для отображения в интерфейсе) вместе с сообщением из агента на фронтенд в стриме используется поле
additional_kwargsклассаBaseMessage; - агент не должен переопределять логирование и должен использовать стандартный модуль
import logging; - агент не должен интегрировать в себя зависимости метрик Prometheus или Azire-Phoenix;
- для корректного отображения параметров запуска агента на фронте
StateиRunnableConfigсхемы должны быть описаны с использованием модуляPydanticи должны наследоваться отBaseModel; - при написании кода следуйте руководству PEP8 ;
- следите, чтобы код агента был понятным, содержал подробные комментарии и обеспечивал удобство сопровождения;
- изолируйте код агента в своем репозитории в группе agents .
- Используйте
@sberdevices/agent-lab-sdk-tsдля управления токенами — не реализуйте авторизацию вручную. - Для обмена сообщениями с моделью используйте
langchain-gigachat. - Для передачи данных на фронтенд используйте поле
additional_kwargsклассаBaseMessage. - Изолируйте код агента в отдельном репозитории в группе agents .