ym88659208ym87991671
Изменение интерфейса с помощью SDK | Документация для разработчиков

Изменение интерфейса с помощью SDK

Обновлено 10 декабря 2025

Диалоговый интерфейс агента можно менять не только с помощью дополнительных полей additional_kwargs в сообщениях, но и с помощью GigaLab SDK.

Так, модуль SDK agent_lab_sdk.schema.input_types предоставляет набор фабричных функций, которые создают различные поля: строковое, числовое, выпадающий список и другие. Эти поля можно затем использовать в Pydantic-моделях для описания интерфейса агента.

Пример интерфейса агента, созданного с помощью функций GigaLab SDK:

Интерфейс агнета-исследователя

Фукнции для создания полей

SDK предоставляет доступ к следующим функциям.

ТипОписаниеОсновные параметры
MainInputОсновное поле вводаplaceholder, visibility
StringInputТекстовое полеdefault, title, description, hidden, depends, visibility
StringArrayInputМассив строкplaceholder, title, description, group, hidden, depends, visibility
StringArrayInputInlineМассив строк в одной строке вводаplaceholder, title, description, group, hidden, depends, visibility
NumberInputЧисловое полеdefault, title, description, hidden, depends, visibility
SelectInputВыпадающий списокitems, title, group, default, hidden, depends, visibility
CheckboxInputЧекбоксtitle, group, description, default, hidden, depends, visibility
SwitchInputПереключательtitle, group, description, default, hidden, depends, visibility
FileInputЗагрузка одного файлаtitle, file_extensions, group, hidden, depends, view, visibility, max_size_mb
FilesInputЗагрузка нескольких файловtitle, file_extensions, group, hidden, depends, limit, view, visibility, max_size_mb

Пример создания интерфейса с помощью фабричных функций

Пример ниже демонстрирует создание начального интерфейса агента с помощью Pydantic-модели и фабричных функций SDK.

from typing import List, Annotated
from pydantic import BaseModel, Field
from agent_lab_sdk.schema import (
MainInput, StringInput, StringArrayInput, NumberInput,
SelectInput, CheckboxInput, FileInput, FilesInput, SelectOption, Visibility
)

class AgentState(BaseModel):
# Основное поле ввода
query: Annotated[str, MainInput(placeholder="Введите ваш запрос")]

# Строковое поле
title: Annotated[str, StringInput(
default="Без названия",
title="Заголовок",
description="Название для вашего запроса",
visibility=Visibility.ALWAYS # или visibility="always"
)]

# Массив строк
keywords: Annotated[List[str], StringArrayInput(
placeholder="Добавьте ключевые слова...",
title="Ключевые слова",
description="Список ключевых слов для поиска",
group="Параметры"
)]

# Числовое поле
temperature: Annotated[float, NumberInput(
default=0.7,
title="Температура",
description="Параметр креативности модели (0.0 - 1.0)",
hidden=True
)]

# Выпадающий список
mode: Annotated[str, SelectInput(
title="Режим работы",
items=[
SelectOption(label="Быстрый", value="fast").model_dump(),
SelectOption(label="Точный", value="precise").model_dump()
],
default="fast",
group="Настройки"
)]

# Чекбокс
save_history: Annotated[bool, CheckboxInput(
title="Сохранять историю",
description="Сохранять диалог для последующего анализа",
default=True,
group="Опции"
)]

# Загрузка одного файла
document: Annotated[str, FileInput(
title="Документ",
file_extensions=".pdf,.docx,.txt",
view="button" # зона загрузки файлов,
max_size_mb=15.0 # применяем ограничение максимального размера для одного файла
)]

# Загрузка нескольких файлов
attachments: Annotated[List[str], FilesInput(
title="Прикрепленные файлы",
file_extensions=".pdf,.csv,.xlsx",
group="Файлы",
view="dropzone" # зона загрузки файлов,
max_size_mb=15.0 # применяем ограничение максимального размера для всех файлов
)]

Изменение видимости полей

Используйте параметр visibility, с помощью которого можно изменять видимость поля в интерфейсе.

По умолчанию все поля всегда доступные в интерфейсе.

Параметр принимает значения:

from agent_lab_sdk.schema import Visibility

# Значения для управления видимостью полей в интерфейсе
Visibility.ALWAYS # "always" - значение по умолчанию. Поле всегда доступно для ввода
Visibility.START # "start" - поле доступно для ввода только при запуске агента
Visibility.AFTER_START # "after_start" - поле доступно для ввода после запуска агента

Пример изменения видимости

class AgentConfig(BaseModel):
# Всегда доступно для ввода поле
query: Annotated[str, MainInput(
placeholder="Введите запрос",
visibility=Visibility.ALWAYS
)]

# Поле доступно для ввода только при первом запуске
api_key: Annotated[str, StringInput(
title="API ключ",
description="Ключ для доступа к внешнему API",
visibility=Visibility.START
)]

# Поле появляется после первого сообщения
session_id: Annotated[str, StringInput(
title="ID сессии",
description="Идентификатор текущей сессии",
visibility=Visibility.AFTER_START,
hidden=True
)]

# Вы также можете задать видимость с помощью строкового значения
title: Annotated[str, StringInput(
title="Заголовок",
visibility="always" # эквивалентно Visibility.ALWAYS
)]

Группировка полей

Чтобы каким-то сгруппировать поля используйте параметр group:

class TaskConfig(BaseModel):
# Группа "Основные параметры"
task_type: Annotated[str, SelectInput(
title="Тип задачи",
items=[...],
group="Основные параметры"
)]

priority: Annotated[str, SelectInput(
title="Приоритет",
items=[...],
group="Основные параметры"
)]

# Группа "Дополнительно"
notifications: Annotated[bool, CheckboxInput(
title="Уведомления",
group="Дополнительно"
)]

tags: Annotated[List[str], StringArrayInput(
placeholder="Теги...",
group="Дополнительно"
)]

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера.