defineSkill
Определяйте навыки ИИ-агентов
defineSkill
Определяйте навыки ИИ-агентов
Навыки определяют многократно используемые инструкции и возможности, которые агенты ИИ могут использовать в вашем рабочем пространстве. Используйте Основные моменты:
defineSkill() для определения навыков со встроенной валидацией:src/skills/example-skill.ts
name— уникальная строка-идентификатор навыка (рекомендуется kebab-case).label— читаемое человеком отображаемое имя, показываемое в UI.contentсодержит инструкции навыка — это текст, который использует агент ИИ.icon(необязательно) задаёт значок, отображаемый в UI.description(необязательно) предоставляет дополнительный контекст о назначении навыка.
defineAgent
Определяйте ИИ-агентов с пользовательскими промптами
defineAgent
Определяйте ИИ-агентов с пользовательскими промптами
Агенты — это ИИ-помощники, работающие в вашем рабочем пространстве. Используйте Основные моменты:Примечания к схеме:
defineAgent() для создания агентов с пользовательским системным промптом:src/agents/example-agent.ts
name— уникальная строка-идентификатор агента (рекомендуется kebab-case).label— отображаемое имя, показываемое в UI.prompt— это системный промпт, определяющий поведение агента.description(необязательно) предоставляет контекст о том, что делает агент.icon(необязательно) задаёт значок, отображаемый в UI.modelId(необязательно) переопределяет модель ИИ по умолчанию, используемую агентом.responseFormat(необязательно) определяет форму вывода агента. По умолчанию для свободного текста используется{ type: 'text' }. Используйте{ type: 'json', schema }, чтобы принудительно получать структурированный JSON-вывод.
responseFormat значение { type: 'json' } и укажите schema:src/agents/structured-agent.ts
- Схема — это плоский объект:
typeкаждого свойства должен быть примитивом (string,numberилиboolean). Вложенные объекты и массивы не поддерживаются. description(необязательно) для каждого свойства подсказывает модели, что туда нужно поместить.required(необязательно) перечисляет свойства, которые модель всегда должна возвращать.additionalProperties: false(необязательно) запрещает любые свойства, не объявленные вproperties.
runAgent
Запуск агента из логической функции
runAgent
Запуск агента из логической функции
runAgent() позволяет логической функции запустить одного из агентов вашего приложения (с его навыками и инструментами). Идентифицируйте агента по universalIdentifier, который вы передали в defineAgent(). Передайте либо строку prompt, либо историю диалога messages — но не оба варианта одновременно:src/logic-functions/run-enricher.ts
messages вместо одного prompt:src/logic-functions/reply-in-thread.ts
- Укажите ровно один из
prompt(строка) илиmessages(от 1 до 100 элементов вида{ role: 'user' | 'assistant', content: string }). - Агент выполняется синхронно и может самостоятельно читать и обновлять записи с помощью собственных инструментов —
runAgent()возвращает результат после завершения выполнения. - Приложение может запускать только собственных агентов.
- Роль по умолчанию приложения должна предоставлять флаг разрешения
AI— добавьтеSystemPermissionFlag.AIвpermissionFlagUniversalIdentifiers(или установитеcanAccessAllTools: true). Без этогоrunAgent()завершится с ошибкой прав доступа. - Установите достаточно большое значение
timeoutSecondsдля логической функции — выполнение агента может занимать несколько секунд. successимеет значениеtrue, аresult— неnull, когда запуск завершается; при ошибкеsuccessравноfalse,resultравноnull, а вerrorсодержится причина (например, если в рабочем пространстве закончились AI-кредиты во время запуска).
src/roles/default-role.ts
Запуск от имени участника рабочего пространства
ПередавайтеrunAsWorkspaceMemberId, когда запуск инициирован человеком — например, чат-ботом, отвечающим на сообщение, — чтобы агент действовал как этот участник, а не как приложение:src/logic-functions/answer-question.ts
- Токен без привязанного пользователя может указать любого участника. Логическая функция выполняется с таким токеном; то же относится к токенам, выпущенным через
client_credentialsили на основе API‑ключа. - Токен, выданный от имени пользователя (как у фронтенд‑компонента), может указывать только на участника самого этого пользователя.