Требования и рекомендации
В этом разделе приводятся требования и рекомендации, которые следует соблюдать при разработке агента для публикации в 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.
Рекомендации по написанию кода
При разработке агента следуйте рекомендациям:
- для обмена сообщениям с моделью используйте библиотеку
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 .