← 返回列表

AI серия интервью 7: Как правильно определить навык

1. Основные концепции навыка

Навык — это инкапсулированный набор исполняемых единиц способностей в Агенте или AI системе. Обычно он включает:

  • Условия запуска: когда вызывается (например, команда пользователя, системное событие).
  • Входные параметры: данные или контекст, которые необходимо получить.
  • Логика выполнения: конкретные шаги обработки (например, вызов API, запуск кода, запрос к базе знаний).
  • Выходной результат: ответ или действие, возвращаемое вызывающему.

2. Шаги по стандартному определению навыка

1. Уточните название и описание навыка

  • Название: краткое, уникальное, семантическое (например, search_web, send_email).
  • Описание: одним предложением объясните функцию навыка, чтобы Агент мог автоматически сопоставить.

2. Определите входные параметры (Input Schema)

Используйте JSON Schema или аналогичный формат, укажите тип каждого параметра, обязательность, значение по умолчанию и ограничения.

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "ключевое слово для поиска",
      "required": true
    },
    "max_results": {
      "type": "integer",
      "description": "максимальное количество результатов",
      "default": 10
    }
  }
}

3. Напишите логику выполнения (Execution Logic)

  • Детерминированная логика: прямой вызов функции, API или базы данных.
  • Недетерминированная логика: использование LLM для генерации ответа (необходимо предоставить шаблон промпта).
  • Обработка ошибок: определите тайм-ауты, повторные попытки, стратегии понижения.

4. Определите выходной формат (Output Schema)

Также используйте JSON Schema для описания структуры возвращаемых данных.

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": { "type": "string" },
          "url": { "type": "string", "format": "uri" }
        }
      }
    }
  }
}

5. Добавьте метаданные (Metadata)

  • Версия: для удобства управления итерациями.
  • Автор/ответственный: определение ответственности.
  • Зависимости: необходимые внешние сервисы или библиотеки.
  • Ограничения использования: например, ограничение частоты, требования к правам.

3. Пример: полное определение навыка

name: "weather_query"
description: "запрос текущей погоды по названию города"
version: "1.0.0"
author: "AI Team"

input:
  type: object
  properties:
    city:
      type: string
      description: "название города, например 'Москва'"
      required: true
    unit:
      type: string
      enum: ["celsius", "fahrenheit"]
      default: "celsius"

execute:
  - step: "вызов API погоды"
    api: "https://api.weather.com/v1/current"
    method: "GET"
    params:
      city: "{input.city}"
      unit: "{input.unit}"
  - step: "форматирование результата"
    format: "Сейчас в {city} температура {temperature}°{unit}"

output:
  type: object
  properties:
    temperature:
      type: number
    condition:
      type: string
    humidity:
      type: number

4. Лучшие практики

  • Единственная ответственность: каждый навык делает только одно дело, избегайте излишней связанности.
  • Самодостаточность: по возможности не полагайтесь на внешнее глобальное состояние, входные данные определяют выходные.
  • Тестируемость: предоставьте mock-данные или песочницу для модульного тестирования.
  • Документирование: напишите инструкцию по использованию и примеры для каждого навыка.

С помощью описанных выше методов навык может быть динамически вызван AI-агентом, а также напрямую интегрирован разработчиками в систему, обеспечивая эффект повторного использования "написал один раз — используй везде".

评论

暂无已展示的评论。

发表评论(匿名)