Интеграция OpenAI Agents SDK: handoffs, guardrails, трассировка

Ручная координация отделов и отсутствие прозрачности в работе AI-агентов замедляют онбординг клиентов и создают риски утечки данных. Мы разрабатываем мульти-агентные системы на OpenAI Agents SDK, автоматизируя маршрутизацию запросов и внедряя защитные механизмы. Наша команда реализует проект под ключ — от аудита до сопровождения, обеспечивая надёжное решение, которое масштабируется вместе с вашим бизнесом.
Часто задаваемые вопросы

Онбординг нового B2B-клиента в SaaS-сервисе занимает две недели. Требуется координация трёх отделов: внедрение, интеграция, поддержка. Типичные проблемы: ручная маршрутизация запросов, утечка персональных данных через модель, отсутствие прозрачности принятия решений. Мы автоматизировали этот процесс с помощью мульти-агентной системы на OpenAI Agents SDK (далее — SDK) — официальном Python-пакете от OpenAI для построения AI-агентов. Результат: время до первой интеграции снизилось с 14 до 3 дней, вопросы техподдержки сократились на 54%, а операционные затраты — на 40%.

В основе решения — абстракции Agent, Runner, Handoffs, Guardrails и встроенная трассировка. SDK заменяет прямые вызовы Assistants API типизированным интерфейсом, что упрощает поддержку и тестирование. Наш опыт — 5 лет в AI/ML разработке, 20+ проектов на OpenAI API. Мы внедряем решения под ключ с гарантией времени отклика агента p99 < 2 секунд. Получите консультацию, наш инженер оценит ваш сценарий.

Как OpenAI Agents SDK решает проблемы мульти-агентных систем?

Без SDK разработчики сталкиваются с тремя основными сложностями:

  • Хаос при множестве агентов: приходится вручную маршрутизировать запросы и передавать контекст.
  • Утечка PII: модель может выдать номера карт или паспортов без дополнительных фильтров.
  • Нет прозрачности: невозможно понять, почему агент принял такое решение.

SDK решает эти проблемы автоматическими handoffs, встроенными guardrails и OpenTelemetry-трейсингом. Мульти-агентная система на Agents SDK быстрее монолитного агента в 3 раза по времени обработки запросов (сравнение из нашего бенчмарка на 1000 запросов). Экономия на вызовах API — до $30k в год при нагрузке 10k запросов/день.

Почему handoffs важны для масштабирования?

Handoffs позволяют делегировать задачи специализированным агентам, сохраняя контекст сессии. Это критично для production-систем с высокой нагрузкой: triage-агент на лёгкой модели (gpt-4o-mini) маршрутизирует запросы, а сложные агенты (gpt-4o) обрабатывают только свою область. Без handoffs каждый агент должен уметь всё, что ведёт к росту latency и стоимости. В нашем проекте handoff-архитектура снизила p99 latency на 40%.

Примеры реализации агентов

SDK устанавливается командой pip install openai-agents. Полная документация — в официальном репозитории.

Базовый агент с инструментами

import asyncio
from openai import AsyncOpenAI
from agents import Agent, Runner, function_tool, RunConfig
from agents.models.openai_responses import OpenAIResponsesModel

client = AsyncOpenAI()

@function_tool
def get_weather(city: str, unit: str = "celsius") -> str:
    """Получить текущую погоду в городе.

    Args:
        city: Название города
        unit: Единица температуры (celsius/fahrenheit)
    """
    data = weather_api.get(city=city, unit=unit)
    return f"Погода в {city}: {data['temp']}°, {data['description']}"

@function_tool
def create_calendar_event(
    title: str,
    date: str,
    duration_minutes: int,
    attendees: list[str],
) -> str:
    """Создать событие в корпоративном календаре."""
    event = calendar_api.create(
        title=title,
        date=date,
        duration=duration_minutes,
        attendees=attendees,
    )
    return f"Событие создано: {event['id']}, ссылка: {event['meet_link']}"

assistant = Agent(
    name="Corporate Assistant",
    instructions="""Ты — корпоративный ассистент. Помогай сотрудникам планировать встречи, находить информацию, решать задачи. При необходимости — используй инструменты.""",
    model="gpt-4o",
    tools=[get_weather, create_calendar_event],
)

async def main():
    result = await Runner.run(
        assistant,
        input="Запланируй встречу с командой на завтра в 14:00 на 1 час",
    )
    print(result.final_output)

asyncio.run(main())

Handoffs: передача между специализированными агентами

from agents import Agent, handoff, Runner

triage_agent = Agent(
    name="Triage",
    instructions="""Классифицируй запрос и передай соответствующему агенту.
Billing → billing_agent
Technical → tech_agent
General → general_agent""",
    model="gpt-4o-mini",
)

billing_agent = Agent(
    name="Billing Support",
    instructions="Помогай с вопросами выставления счётов, платежами, подписками.",
    model="gpt-4o",
    tools=[get_invoice, process_refund, update_payment_method],
)

tech_agent = Agent(
    name="Technical Support",
    instructions="Решай технические проблемы: API, интеграции, ошибки.",
    model="gpt-4o",
    tools=[check_api_status, get_error_logs, create_bug_report],
)

general_agent = Agent(
    name="General Support",
    instructions="Отвечай на общие вопросы о продукте.",
    model="gpt-4o-mini",
    tools=[search_docs],
)

triage_agent.handoffs = [
    handoff(billing_agent, tool_name_override="transfer_to_billing"),
    handoff(tech_agent, tool_name_override="transfer_to_technical"),
    handoff(general_agent, tool_name_override="transfer_to_general"),
]

result = await Runner.run(
    triage_agent,
    input="Я получил двойное списание за прошлый месяц",
)

Какие риски устраняют guardrails?

Guardrails защищают от утечки PII, токсичных ответов и нецелевого использования модели. InputGuardrails блокируют запросы с конфиденциальными данными до обработки, OutputGuardrails фильтруют ответы перед отправкой пользователю. В finance и healthcare это обязательное требование. Без guardrails модель может случайно раскрыть данные клиентов — один такой инцидент грозит штрафами до 4% оборота.

Guardrails: входные и выходные фильтры

from agents import Agent, InputGuardrail, OutputGuardrail, GuardrailFunctionOutput

async def pii_detection_guardrail(ctx, agent, input) -> GuardrailFunctionOutput:
    pii_check_agent = Agent(
        name="PII Checker",
        instructions="Проверь, содержит ли текст персональные данные (номера карт, паспортов, СНИЛС).",
        model="gpt-4o-mini",
        output_type={"contains_pii": bool, "pii_types": list[str]},
    )
    result = await Runner.run(pii_check_agent, input=input)
    contains_pii = result.final_output.get("contains_pii", False)
    return GuardrailFunctionOutput(
        output_info=result.final_output,
        tripwire_triggered=contains_pii,
    )

async def content_safety_guardrail(ctx, agent, output) -> GuardrailFunctionOutput:
    violations = await compliance_checker.check(output)
    return GuardrailFunctionOutput(
        output_info=violations,
        tripwire_triggered=len(violations) > 0,
    )

safe_agent = Agent(
    name="Safe Assistant",
    instructions="Отвечай на вопросы о финансовых продуктах.",
    model="gpt-4o",
    input_guardrails=[InputGuardrail(guardrail_function=pii_detection_guardrail)],
    output_guardrails=[OutputGuardrail(guardrail_function=content_safety_guardrail)],
)

Structured Output с типизацией

from pydantic import BaseModel
from typing import Literal

class CustomerAnalysis(BaseModel):
    customer_id: str
    churn_risk: Literal["low", "medium", "high"]
    churn_probability: float
    key_risk_factors: list[str]
    recommended_actions: list[str]
    priority_contact: bool

analysis_agent = Agent(
    name="Churn Analyst",
    instructions="""Анализируй данные клиента и оцени риск оттока. Учитывай: активность за последние 30 дней, NPS, количество обращений в поддержку, использование функций продукта.""",
    model="gpt-4o",
    tools=[get_customer_activity, get_support_history, get_product_usage],
    output_type=CustomerAnalysis,
)

result = await Runner.run(
    analysis_agent,
    input=f"Проанализируй клиента ID: {customer_id}",
)

analysis: CustomerAnalysis = result.final_output
print(f"Риск оттока: {analysis.churn_risk} ({analysis.churn_probability:.0%})")

Что дает трассировка агентов?

Трассировка — единственный способ дебажить мульти-агентные сценарии. SDK логирует каждый вызов, handoff и guardrail, включая latency и токены. OpenTelemetry-интеграция отправляет данные в Jaeger, Grafana или New Relic. Без трассировки вы не увидите, где возникла задержка или какой агент вызвал ошибку.

Трассировка и мониторинг

from agents.tracing import set_tracing_provider
from agents.tracing.opentelemetry import OpenTelemetryTracingProvider
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter

otlp_exporter = OTLPSpanExporter(endpoint="http://jaeger:4318/v1/traces")
set_tracing_provider(OpenTelemetryTracingProvider(exporter=otlp_exporter))

from agents import trace

async def run_with_trace():
    with trace("customer_support_session"):
        result = await Runner.run(
            triage_agent,
            input="Проблема с подключением к API",
            run_config=RunConfig(
                trace_include_sensitive_data=False,
                workflow_name="customer_support",
            ),
        )
        return result

Практический кейс: автоматизация онбординга B2B

Клиент — крупный B2B-сервис с 2000+ клиентов. Типичный онбординг занимал 2 недели и требовал координации 3 отделов: Sales, Integration, Support.

Архитектура:

  • Onboarding Coordinator (triage): принимает запрос, маршрутизирует
  • Account Setup Agent: настройка аккаунта, роли, SSO
  • Integration Agent: помощь с API-интеграцией, генерация примеров кода
  • Training Agent: персонализированный обучающий контент
  • Success Agent: follow-up, мониторинг adoption metrics

Handoff-цепочка: Coordinator → Account Setup → Integration → Training → Success. Результаты:

Показатель До внедрения После внедрения Улучшение
Time-to-value 14 дней 3 дня -78%
Вопросы техподдержки (первые 30 дней) 1200 552 -54%
30-day activation rate 61% 84% +23 п.п.
Engagement score 6.2/10 8.1/10 +31%

Экономия на техподдержке — около $30k в год.

Процесс внедрения и сроки

Этапы внедрения

Этап Длительность Результат
Аналитика и проектирование архитектуры 2 дня Схема агентов, полномочия
Настройка базовых агентов с инструментами 3 дня Рабочий прототип
Реализация handoffs и guardrails 5 дней Безопасная маршрутизация
Трассировка и мониторинг 3 дня Дашборды latency p99, ошибки
Деплой в production 3 дня CI/CD, автотесты

Итоговый срок: от 2 до 4 недель в зависимости от сложности.

Сроки по компонентам

  • Базовый агент с инструментами: 2–4 дня
  • Handoff-архитектура с 3–5 агентами: 1–2 недели
  • Guardrails и safety checks: 3–5 дней
  • Трассировка и мониторинг: 3–5 дней
  • Production-деплой: 1 неделя

Стоимость рассчитывается индивидуально под каждый проект.

Типичные ошибки при проектировании агентов

  • Использование одной модели для всех агентов: triage должен быть дешёвым (gpt-4o-mini), сложные задачи — на gpt-4o.
  • Отсутствие guardrails на выходе: PII может просочиться в ответ. Обязательно ставить OutputGuardrail.
  • Слишком длинные инструкции: модель теряет фокус. Делите агентов по специализации.
  • Игнорирование трассировки: без неё невозможно дебажить мульти-агентные сценарии.

Что входит в работу

  • Документация архитектуры агентов (Agent карты, handoff-схемы)
  • Настроенная трассировка (OpenTelemetry / OpenAI tracing)
  • Готовые guardrails (PII, content safety, custom проверки)
  • Обучение команды заказчика (воркшоп 1 день)
  • 2 недели поддержки после деплоя

Гарантии и поддержка

Гарантируем SLA на ответ агента p99 < 2с. Сертифицированные инженеры OpenAI. Опыт внедрения в finance и healthcare. Свяжитесь с нами для оценки вашего сценария — получите консультацию по архитектуре агентов.

Направления AI-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1141