Интеграция OpenAI Agents SDK для построения агентов

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Интеграция OpenAI Agents SDK для построения агентов
Средний
от 1 недели до 3 месяцев
Часто задаваемые вопросы

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

Этапы разработки AI-решения

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    901
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1119
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    853

Интеграция OpenAI Agents SDK

OpenAI Agents SDK — официальный Python SDK для построения агентов на базе моделей OpenAI. Предоставляет абстракции над Assistants API и Responses API: Agent (обёртка над моделью с инструментами), Runner (выполнение агента), Handoffs (передача между агентами), Guardrails (проверки), трассировка. SDK заменяет прямые вызовы Assistants API более типизированным и тестируемым интерфейсом.

Базовый агент

# 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],
)

# Настройка handoffs для triage
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"),
]

# При запуске: triage автоматически решает, кому передать
result = await Runner.run(
    triage_agent,
    input="Я получил двойное списание за прошлый месяц",
)
# triage → billing_agent → ответ

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

from agents import Agent, InputGuardrail, OutputGuardrail, GuardrailFunctionOutput

async def pii_detection_guardrail(ctx, agent, input) -> GuardrailFunctionOutput:
    """Проверяет входящий запрос на наличие PII"""
    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,  # Блокируем при наличии PII
    )

async def content_safety_guardrail(ctx, agent, output) -> GuardrailFunctionOutput:
    """Проверяет выходной текст на compliance"""
    violations = await compliance_checker.check(output)
    return GuardrailFunctionOutput(
        output_info=violations,
        tripwire_triggered=len(violations) > 0,
    )

# Агент с guardrails
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%})")

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

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

# Интеграция с OpenTelemetry
otlp_exporter = OTLPSpanExporter(endpoint="http://jaeger:4318/v1/traces")
set_tracing_provider(OpenTelemetryTracingProvider(exporter=otlp_exporter))

# Или встроенная трассировка OpenAI
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,  # Не логируем PII
                workflow_name="customer_support",
            ),
        )
    return result

Практический кейс: мульти-агентная система онбординга SaaS

Задача: автоматизация онбординга новых B2B клиентов. Типичный онбординг занимал 2 недели и требовал координации 3 отделов.

Архитектура агентов:

  • 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 дня
  • Вопросы техподдержки в первые 30 дней: -54%
  • 30-day activation rate: 61% → 84%
  • Engagement score за первый месяц: +31%

Сроки

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