Структ ура проекта
GigaLab поддерживает разработку агентов на Python и TypeScript с помощью фреймворка LangGraph (Python , TypeScript ).
В этом разделе вы найдете примеры типовой структуры репозитория агента, описание основных переменных среди и возможностей GigaLab SDK для Python и TypeScript.
Структура проекта
Пример типовой структуры репозитория агента с обязательными файлами, которые нужны для создания Docker-образа:
agent-name/
├── Dockerfile # Файл с параметрами сборки образа агента
├── .gitlab-ci.yml # Конфигурация GitLab CI для сборки Docker-образа
├── .env # Переменные окружения, которые использует агент
└── agent_src/ # Код агента
├── langgraph.json # Путь к графу агента
└── agent_logic/
├── graph.py # Логика агента
└── requirements.txt # Зависимости, которые нужны для работы агента
my-agent/
├── Dockerfile # Файл с параметрами сборки образа агента
├── .gitlab-ci.yml # Конфигурация GitLab CI для сборки Docker-образа
├── langgraph.json # Путь к графу агента
├── .npmrc # Настройка npm-реестров
├── package.json # Зависимости
├── .env # Переменные окружения, которые использует агент
└── agents/ # Код агента
└── test_graph_js/
└── graph.ts # Основной файл агента (экспортирует graph)
Файл .npmrc содержит адреса реестра для установки пакетов и нужен для сборки Docker-образа.
Без него команда npm install не сможет обнаружить пакет @sberdevices/agent-lab-sdk-ts.
Пример файла:
registry=https://nexus.sberdevices.ru/repository/Npm/
@sberdevices:registry=https://nexus.sberdevices.ru/repository/npm-proxy/
legacy-peer-deps=true
Версии пакетов @langchain/core и @langchain/langgraph, заданные в package.json должны быть совместимы с версией в среде исполнения. Используйте диапазоны версий из примера:
{
"name": "my-agent",
"private": true,
"dependencies": {
"@langchain/core": ">=0.3.40 <0.4.0",
"@langchain/langgraph": "^0.2.74",
"@sberdevices/agent-lab-sdk-ts": "^0.1.1",
"langchain-gigachat": "^0.0.14",
"zod": "^4.3.6"
}
}
Описание пакетов.
| Пакет | Описание |
|---|---|
@langchain/core | Базовые типы сообщений, инструменты |
@langchain/langgraph | Классы StateGraph, MessagesAnnotation, ToolNode |
@sberdevices/agent-lab-sdk-ts | TS-версия GigaLab SDK |
langchain-gigachat | Пакет для интеграции GigaChat и Langchain |
zod | Валидация схем инструментов |
Файл langgraph.json содержит имя агента, которое отображается в веб-интерфейсе GigaLab, и относительный путь к файлу графу и имя экспортируемой переменной (graph):
{
"dependencies": ["."],
"graphs": {
"agent-name": "./agents/test_graph_js/graph.ts:graph"
}
}
Где:
- Ключ
agent-name— название агента. - Значение — путь к файлу и имя экспортируемой переменной (
graph).
В файле .env содержатся переменные среды, которые агент использует в работе.
В таблице — пример набора переменных в таблице.
| Переменная | Обязательность | Описание |
|---|---|---|
GIGACHAT_BASE_URL | Да | Базовый адрес GigaChat API. Обязательно указывайте при работе в регионе Advanced (USE_GIGACHAT_ADVANCED=true) |
GIGACHAT_CREDENTIALS | Да | Ключ авторизации для получения токена доступа GigaChat API. |
GIGACHAT_MODEL | Нет | Модель GigaChat (по умолчанию GigaChat-Max) |
GIGACHAT_SCOPE | Нет | Версия API, к которой будут передаваться запросы (по умолчанию GIGACHAT_API_PERS) |
USE_GIGACHAT_ADVANCED | Нет | Указывает на использование API в регионе Advanced (true/false) |
USE_TOKEN_PROVIDER_AGS | Нет | Включает Agent Service для управления токенами GigaChat API (true/false) |
Переменные, доступные агенту при работе на разных стендах GigaLab, задаются при публикации агента.
Агенты также могут использовать секреты для доступа к различным сторонним сервисам.
GigaLab SDK
Чтобы облегчить разработку агентов для GigaLab, используйте библиотеки:
- Python — agent-lab-sdk ;
- TypeScript —
@sberdevices/agent-lab-sdk-ts.
С помощью библиотек вы сможете:
- автоматизировать обмен сообщениями с GigaChat API;
- получить набор инструментов для отслеживания производительности агента;
- использовать различную функциональность GigaLab (веб-интерфейс агентов, хранилище файлов, память).