Loading...
  • Разработка
  • Администрирование
  • Модели и цены
  • Клиентские SDK
  • Справочник API
Search...
⌘K
Log in
Определение результатов
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Разработка/Делегирование работы агенту

Определение результатов

Расскажите агенту, как выглядит 'готово', и позвольте ему итерировать, пока он не достигнет этого.

Was this page helpful?

  • Создание рубрики
  • Создание сеанса с результатом
  • События результатов
  • Определение события результата пользователя
  • Начало оценки результата
  • Оценка результата в процессе
  • Конец оценки результата
  • Проверка статуса результата
  • Получение результатов

Outcomes — это функция Research Preview. Запросите доступ, чтобы попробовать её.

outcome повышает сеанс с разговора на работу. Вы определяете, как должен выглядеть конечный результат и как измерить качество. Агент работает над этой целью, самооценивается и итерирует, пока результат не будет достигнут.

Когда вы определяете результат, система автоматически подготавливает оценщика для оценки артефакта по рубрике. Он использует отдельное контекстное окно, чтобы не быть подверженным влиянию выборов реализации основного агента.

Оценщик возвращает разбор по критериям: либо подтверждение того, что артефакт соответствует рубрике, либо конкретные пробелы между текущей работой и требованиями. Эта обратная связь передаётся агенту для следующей итерации.

Все запросы Managed Agents API требуют заголовка бета-версии managed-agents-2026-04-01. Функции Research Preview дополнительно требуют managed-agents-2026-04-01-research-preview. SDK автоматически устанавливает эти заголовки бета-версии.

Создание рубрики

Рубрика — это документ markdown, описывающий оценку по критериям. Рубрика обязательна.

Пример рубрики:

# Рубрика модели DCF

## Прогнозы доходов
- Использует исторические данные о доходах за последние 5 финансовых лет
- Прогнозирует доход как минимум на 5 лет вперед
- Предположения о темпе роста явно указаны и разумны

## Структура затрат
- COGS и операционные расходы моделируются отдельно
- Маржа соответствует историческим тенденциям или отклонения обоснованы

## Ставка дисконтирования
- WACC рассчитывается с указанными предположениями для стоимости капитала и стоимости долга
- Бета, безрисковая ставка и премия за риск акций указаны или обоснованы

## Терминальная стоимость
- Использует либо метод вечного роста, либо метод выхода (указано какой)
- Темп терминального роста не превышает долгосрочный рост ВВП

## Качество вывода
- Все цифры находятся в одном файле .xlsx с четко обозначенными листами
- Ключевые предположения находятся на отдельном листе «Assumptions»
- Включен анализ чувствительности по WACC и темпу терминального роста

Передайте рубрику как встроенный текст на user.define_outcome (показано в следующем разделе) или загрузите её через Files API для повторного использования в разных сеансах:

Требует заголовок бета-версии files-api-2025-04-14.

Создание сеанса с результатом

После создания сеанса отправьте событие user.define_outcome. Агент начинает работу немедленно; дополнительное событие пользовательского сообщения не требуется.

События результатов

Прогресс в сеансе, ориентированном на результаты, отображается в потоке событий.

  • События agent.* (сообщения, использование инструментов и т. д.) показывают прогресс в достижении результата.
  • События span.outcome_evaluation_* выпускаются только для сеансов, ориентированных на результаты, и показывают количество циклов итерации и процесс обратной связи оценщика.
  • Вы также можете отправлять события user.message events в сеанс, ориентированный на результаты, чтобы направить работу агента по мере её выполнения, но это не так необходимо; агент знает, что нужно работать, пока он не исчерпает свои итерации или не достигнет результата.
  • Событие user.interrupt приостановит работу над текущим результатом и отметит span.outcome_evaluation_end.result как interrupted, позволяя вам запустить новый результат.
  • После финальной оценки результата сеанс может быть продолжен как разговорный сеанс или может быть запущен новый результат. Сеанс сохранит историю предыдущего результата.

Определение события результата пользователя

Одновременно поддерживается только один результат, но вы можете объединять результаты последовательно. Для этого отправьте новое событие user.define_outcome после терминального события предыдущего результата.

Это событие, которое вы отправляете для инициирования результата. Оно отправляется обратно при получении, включая временную метку processed_at и outcome_id.

{
  "type": "user.define_outcome",
  "description": "Build a DCF model for Costco in .xlsx",
  "rubric": { "type": "file", "file_id": "file_01..." },
  "max_iterations": 5
}

Начало оценки результата

Выпускается после того, как оценщик начинает оценку над одним циклом итерации. Поле iteration — это счётчик редакций с нулевым индексом: 0 — первая оценка, 1 — переоценка после первой редакции и так далее.

{
  "type": "span.outcome_evaluation_start",
  "id": "sevt_01def...",
  "outcome_id": "outc_01a...",
  "iteration": 0,
  "processed_at": "2026-03-25T14:01:45Z"
}

Оценка результата в процессе

Сигнал пульса, выпускаемый во время работы оценщика. Внутреннее рассуждение оценщика непрозрачно: вы видите, что он работает, а не то, что он думает.

{
  "type": "span.outcome_evaluation_ongoing",
  "id": "sevt_01ghi...",
  "outcome_id": "outc_01a...",
  "processed_at": "2026-03-25T14:02:10Z"
}

Конец оценки результата

Выпускается после того, как оценщик завершит оценку одной итерации. Поле result указывает, что происходит дальше.

РезультатДалее
satisfiedСеанс переходит в idle.
needs_revisionАгент начинает новый цикл итерации.
max_iterations_reachedНет дальнейших циклов оценки. Агент может выполнить одну финальную редакцию перед переходом сеанса в idle.
failedСеанс переходит в idle. Возвращается, когда рубрика принципиально не соответствует задаче, например если описание и рубрика противоречат друг другу.
interruptedВыпускается только если outcome_evaluation_start уже был выпущен до прерывания.
{
  "type": "span.outcome_evaluation_end",
  "id": "sevt_01jkl...",
  "outcome_evaluation_start_id": "sevt_01def...",
  "outcome_id": "outc_01a...",
  "result": "satisfied",
  "explanation": "All 12 criteria met: revenue projections use 5 years of historical data, WACC assumptions are stated, sensitivity table is included...",
  "iteration": 0,
  "usage": {
    "input_tokens": 2400,
    "output_tokens": 350,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 1800
  },
  "processed_at": "2026-03-25T14:03:00Z"
}

Проверка статуса результата

Вы можете либо прослушивать поток событий для span.outcome_evaluation_end, либо опросить GET /v1/sessions/:id и прочитать outcome_evaluations[].result:

Получение результатов

Агент записывает выходные файлы в /mnt/session/outputs/ внутри контейнера. После того как сеанс переходит в режим ожидания, получите их через Files API в области сеанса:

from pathlib import Path

rubric = client.beta.files.upload(file=Path("/path/to/pr_review_rubric.md"))
print(f"Uploaded rubric: {rubric.id}")
# Create a session
session = client.beta.sessions.create(
    agent=agent.id,
    environment_id=environment.id,
    title="Financial analysis on Costco",
)

# Define the outcome — agent starts working on receipt
client.beta.sessions.events.send(
    session_id=session.id,
    events=[
        {
            "type": "user.define_outcome",
            "description": "Build a DCF model for Costco in .xlsx",
            "rubric": {"type": "text", "content": RUBRIC},
            # or: "rubric": {"type": "file", "file_id": rubric.id},
            "max_iterations": 5,  # optional; default 3, max 20
        }
    ],
)
session = client.beta.sessions.retrieve(session.id)

for outcome in session.outcome_evaluations:
    print(f"{outcome.outcome_id}: {outcome.result}")
    # outc_01a...: satisfied
files = client.beta.files.list(scope_id=session.id)
for f in files.data:
    print(f"{f.id}: {f.filename} ({f.size_bytes} bytes)")

content = client.beta.files.download(files.data[0].id)
content.write_to_file("costco_dcf.xlsx")