Проектирование с помощником
API проектируются в разделе спецификации. Здесь чат с ИИ находится рядом с актуальным документом и его предпросмотром: вы описываете задачу обычным языком, сохраняя контроль над фактическими изменениями.
Цикл согласования
Модель не изменяет документ напрямую. Процесс намеренно разделён на явные этапы:
you describe an intent
|
the model reads current state and proposes operations
|
the host validates the proposal
|
you review a patch card and Apply or Reject
|
the change is merged into the document
Это разделение — ключевое проектное решение. Модель понимает намерение и предлагает структуру; приложение детерминированно проверяет каждую операцию; вы одобряете каждое изменение. Предложение не считается применённым до вашего подтверждения.
Карточки изменений
Карточка кратко описывает изменение и перечисляет точные операции, например добавление нового пути:
{
"type": "patch",
"summary": "Add GET /products endpoint",
"ops": [
{ "op": "add", "path": ["paths", "/products"], "value": { "get": {} } }
],
"affects": { "paths": ["/paths/~1products"], "resources": ["Product"] }
}
Сегменты пути передаются элементами массива, а не строкой JSON Pointer. Для нового пути используется ["paths", "/products"]; родительские контейнеры создаются автоматически.
Точечные изменения существующих операций
При редактировании существующей операции помощник не отправляет её целиком заново: это удалило бы все неупомянутые поля. Вместо этого он формирует небольшие операции, затрагивающие только нужный фрагмент, в том числе глубоко вложенный:
- Добавление параметра запроса:
{ "op": "add", "path": ["paths", "/products", "get", "parameters", "-"], "value": {} }
- Расширение схемы ответа:
{ "op": "replace", "path": ["paths", "/products", "get", "responses", "200", "content", "application/json", "schema", "properties", "total"], "value": { "type": "integer" } }
- Изменение одного поля:
{ "op": "replace", "path": ["paths", "/products", "get", "summary"], "value": "..." }
Элементы добавляются в массивы с помощью токена "-", без повторной отправки всего массива. Параметры определяются парой (in, name), что исключает дублирование существующего параметра. Приложение объединяет предложенное значение с текущей операцией и сохраняет всё, что не затронуто изменением.
Так последовательное уточнение остаётся надёжным: просьбы «добавь параметр limit» или «сделай имя обязательным» меняют только соответствующее поле, сохраняя остальную операцию.
Инструменты чтения дают основу для предложений
Перед ответом модель может вызвать инструменты только для чтения, чтобы получить точное текущее состояние, а не угадывать его:
spec.overview: название, версия, протоколы, количества, теги, серверы и безопасность;spec.listOperations: все операции в форматеMETHOD /pathс кратким описанием и тегами;spec.presentOperations: карточка со списком всех операций, доступная только для чтения;spec.getOperation: полное определение операции и схемы, на которые она ссылается;spec.getSchema: одна схема компонента, включая обязательные поля и описания.
Если полная структура операции не видна, модель должна прочитать её перед редактированием.
Объёмные задачи выполняются поэтапно
При широкой задаче вроде «создай API интернет-магазина» помощник не выдаёт всё сразу:
- Сначала задаёт уточняющий вопрос о ключевых решениях;
- После ответа предлагает по одному точечному изменению за раз, от двух до пяти операций в карточке;
- Продолжает только пока ваш последний запрос остаётся в рамках этой цели.
Как только объём задачи понятен, помощник также формирует plan намеченных эндпоинтов, чтобы вы увидели структуру работы до появления изменений.
Как сохраняется направление работы
Приложение применяет несколько правил:
- Текущий документ — авторитетный источник состояния; модель не считает прошлое изменение применённым, если документ говорит об обратном;
- В режиме точечного редактирования меняется только активный объект и явно указанные схемы компонентов, без попутных изменений соседних эндпоинтов;
- Явное указание другого
METHOD /pathсчитается намеренным переходом к новой задаче; - Применённые и отклонённые предложения учитываются в истории; уже внесённое изменение не предлагается повторно.
Если необходимых сведений нет, помощник задаёт конкретный вопрос, а не выдумывает детали.
Другие карточки
Не каждый ответ является предложением изменений:
- Карточки вопросов предлагают выбрать один из вариантов;
- Карточки проверки показывают результаты контроля качества: успешные проверки, предупреждения и ошибки;
- Карточки действий предлагают конкретные шаги, например запуск сценария или открытие рабочей области;
- Таблицы данных показывают примеры или тестовые строки для эндпоинта либо схемы.
См. также: Рабочая область запросов, Сценарное тестирование, ИИ и модели.
Агенты A2A
Проектируйте и отлаживайте версионированные сообщения агентов, операции с задачами и обновления SSE с помощью x-protocol: a2a. Поля расширения и привязки JSON-RPC, REST и настольного gRPC описаны в разделе Агенты A2A.