Перейти к содержимому
arckep.ru — все нейросети в одном месте без VPN Перейти
>AISTUDY_
AUTHORСвежий выпуск №030 → Контекст, сессия, compact

Модуль 4.3 · Урок 1

SDK вендоров: Anthropic, OpenAI, Vercel, Google ADK

50 мин Проверено 21 августа 2026
ОбзорПрактика
4.3 / Урок 1 из 4

Введение

Открытые фреймворки вроде LangChain и CrewAI решают задачу оркестрации агентов, но у них есть слабое место: они работают поверх API провайдеров, а не вместе с ними. Каждый новый релиз модели требует адаптации на стороне фреймворка, и обновления приходят с задержкой.

Вендорские SDK устраняют эту прослойку. Anthropic, OpenAI, Vercel и Google выпустили собственные инструменты для построения агентов. Google ADK в мае в этом уроке был сноской у Vertex — к августу 2026 это полноценный четвёртый SDK (Python, TypeScript, Go, Java, Kotlin).

Когда использовать вендорский SDK вместо открытого фреймворка:

  • Вы работаете с одним провайдером и хотите максимум от его модели
  • Вам нужна нативная поддержка новых функций в день релиза
  • Вы строите production-систему и хотите минимум зависимостей
  • Вам важна официальная документация и поддержка

Когда лучше открытый фреймворк:

  • Вы переключаетесь между провайдерами регулярно
  • Вам нужны специфичные абстракции (цепочки, графы, memory)
  • Проект уже построен на LangChain/CrewAI и переписывать дорого

Anthropic Agent SDK

Репозиторий: github.com/anthropics/claude-agent-sdk-python (~7 950 stars на 21.08.2026, тег v0.2.143). Документация: code.claude.com/docs/en/agent-sdk/overview.

Архитектура

Ключевая идея Anthropic Agent SDK: каждый пользовательский инструмент оформляется как in-process MCP-сервер. Это означает, что агент общается со своими инструментами по тому же протоколу, что и с внешними MCP-серверами. Единый интерфейс для всего.

graph LR
    A[Agent] -->|MCP| B[Ваш инструмент]
    A -->|MCP| C[Внешний MCP-сервер]
    A -->|MCP| D[Файловая система]
    A -->|API| E[Claude API]

    style A fill:#f8fafc,stroke:#4f46e5,stroke-width:2px
    style B fill:#f8fafc,stroke:#059669,stroke-width:2px
    style C fill:#f8fafc,stroke:#059669,stroke-width:2px
    style D fill:#f8fafc,stroke:#059669,stroke-width:2px
    style E fill:#f8fafc,stroke:#2563eb,stroke-width:2px

Два режима работы

query() — одноразовый запрос. Агент получает задачу, выполняет её и завершается. Подходит для скриптов и автоматизации.

ClaudeSDKClient — сессия. Агент живёт в рамках сессии, сохраняет контекст между вызовами. Подходит для интерактивных приложений.

Пример: агент с пользовательским инструментом

from claude_agent_sdk import Agent, tool

@tool
def get_weather(city: str) -> str:
    """Получить погоду в городе"""
    return f"В городе {city} солнечно, +22C"

agent = Agent(tools=[get_weather])
result = agent.query("Какая погода в Москве?")
print(result.text)

Декоратор @tool автоматически превращает функцию в MCP-совместимый инструмент. Docstring становится описанием инструмента для модели, типы аргументов извлекаются из аннотаций.

Подключение внешних MCP-серверов

from claude_agent_sdk import Agent, MCPServer

agent = Agent(
    mcp_servers=[
        MCPServer("npx", ["-y", "@anthropic/mcp-filesystem"]),
        MCPServer("npx", ["-y", "@anthropic/mcp-git"]),
    ]
)
result = agent.query("Покажи структуру текущего проекта")

MCP-интеграция работает из коробки. Не нужно писать обёртки или адаптеры.

TypeScript-версия

SDK доступен и для TypeScript. API аналогичен Python-версии:

Anthropic Agent SDK -- TypeScript

typescript
Нажмите на строку — увидите объяснение

OpenAI Agents SDK

Репозиторий: github.com/openai/openai-agents-python (~28 800 stars на 21.08.2026, пакет openai-agents 0.22.0 от 19.08.2026). MCP в SDK есть — в таблице «нет MCP» из мая это уже ложь.

Три примитива

OpenAI Agents SDK построен на трёх концепциях:

Agents — агенты с инструкциями, инструментами и набором правил поведения.

Handoffs — механизм передачи управления между агентами. Текущий агент решает, что задача не его, и делегирует другому. Это уникальная особенность SDK.

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

graph TD
    U[Пользователь] --> A[Агент биллинга]
    A -->|Handoff| B[Агент поддержки]
    A -->|Handoff| C[Агент возвратов]
    B -->|Handoff| A
    C -->|Handoff| A

    G1[Guardrail: ввод] -.->|Параллельно| A
    G2[Guardrail: вывод] -.->|Параллельно| A

    style U fill:#f8fafc,stroke:#64748b,stroke-width:2px
    style A fill:#f8fafc,stroke:#4f46e5,stroke-width:2px
    style B fill:#f8fafc,stroke:#2563eb,stroke-width:2px
    style C fill:#f8fafc,stroke:#2563eb,stroke-width:2px
    style G1 fill:#f8fafc,stroke:#059669,stroke-width:2px
    style G2 fill:#f8fafc,stroke:#059669,stroke-width:2px

Пример: система с handoffs

OpenAI Agents SDK -- handoffs между агентами

python
Нажмите на строку — увидите объяснение

Когда биллинг-агент получает вопрос, не связанный с оплатой, он автоматически передаёт управление агенту поддержки. Модель сама решает, когда выполнить handoff, на основе описания.

Guardrails

from agents import Agent, Runner, InputGuardrail, GuardrailFunctionOutput

async def check_language(ctx, agent, input_text):
    """Проверить, что запрос на русском языке"""
    is_russian = any(c in input_text for c in "абвгдежз")
    return GuardrailFunctionOutput(
        output_info={"language": "ru" if is_russian else "other"},
        tripwire_triggered=not is_russian,
    )

agent = Agent(
    name="Ассистент",
    instructions="Отвечай на вопросы.",
    input_guardrails=[
        InputGuardrail(guardrail_function=check_language)
    ],
)

Guardrails выполняются параллельно с основным запросом к модели. Если guardrail срабатывает, ответ модели отбрасывается.

Встроенный трейсинг

Каждый вызов автоматически записывается в трейс. Трейсы визуализируются в OpenAI Dashboard: видно, какой агент обрабатывал запрос, какие инструменты вызывались, где произошёл handoff.

Провайдер-агностичность

Несмотря на название, SDK работает не только с OpenAI:

from agents import Agent, Runner, OpenAIChatCompletionsModel
from openai import AsyncOpenAI

client = AsyncOpenAI(
    base_url="http://localhost:11434/v1",  # Ollama
    api_key="ollama",
)

agent = Agent(
    name="Локальный агент",
    model=OpenAIChatCompletionsModel(
        model="llama4",
        openai_client=client,
    ),
)

Любой сервер с OpenAI-совместимым API подходит: Ollama, vLLM, LiteLLM.

Sandboxed agents — ключевое обновление апреля 2026

15 апреля 2026 OpenAI выпустили крупное обновление SDK с разделением harness (оркестрация, tracing, guardrails, approvals) и compute (где реально выполняются tools и shell). Это стандартизирует пути запуска агентов в изолированных окружениях.

Ключевые компоненты:

  • Manifest — портативное описание workspace: какие папки, файлы и mounts (S3, GCS, Azure Blob, Cloudflare R2) доступны агенту. Manifest не зависит от провайдера sandbox — один и тот же агент запускается на любом совместимом backend
  • Snapshots и session_state — состояние агента сохраняется и восстанавливается, можно прерывать/продолжать длинные задачи
  • Встроенные tools для sandbox: apply_patch (правки файлов), shell (выполнение команд), filesystem ops, image viewer

Поддерживаемые провайдеры sandbox через клиенты типа E2BSandboxClient, ModalSandboxClient, DaytonaSandboxClient, VercelSandboxClient, UnixLocalSandboxClient:

from agents import SandboxAgent, Runner, Manifest, LocalDir
from agents.sandbox import E2BSandboxClient

agent = SandboxAgent(
    name="Code Agent",
    instructions="Ты — разработчик. Используй apply_patch и shell.",
    sandbox=E2BSandboxClient(api_key=...),
    manifest=Manifest(entries={
        "data": LocalDir("./project_data"),
    }),
)

result = Runner.run_sync(agent, "Найди и исправь все TODO в проекте")

Поддерживаемые backend’ы на август 2026: E2B (Firecracker, ~150ms cold start), Modal (gVisor, GPU-strong), Daytona (~90ms cold start), Vercel Sandbox (Firecracker + Next.js integration), Cloudflare, Runloop, Blaxel, Docker, UnixLocal. Подробнее — 4.1/04-production-readiness.

Sessions — персистентность диалогов из коробки

В Python SDK реализованы готовые backend’ы для хранения истории разговора:

from agents import Agent, Runner, SQLiteSession

session = SQLiteSession(db_path="conversations.db", session_id="user-123")

result1 = Runner.run_sync(agent, "Привет, я Маша", session=session)
result2 = Runner.run_sync(agent, "Как меня зовут?", session=session)
# Агент помнит "Маша"

Доступные backend’ы (по docs.openai-agents):

  • SQLiteSession — локальная SQLite БД
  • SQLAlchemySession — любой реляционный backend (PostgreSQL, MySQL)
  • RedisSession — для распределённых сценариев
  • MongoDBSession, DaprSession, OpenAIConversationsSession — managed-варианты
  • EncryptedSession — wrapper с TTL и шифрованием

Один session работает через handoffs (передача между агентами не теряет контекст) и через sandbox (история сохраняется при snapshots). Custom backend — через SessionABC-интерфейс.

Realtime / Voice — gpt-realtime-2.1

В актуальном Python SDK (0.22.0, 19.08.2026) для новых realtime-агентов берите gpt-realtime-2.1, не gpt-realtime-2 (quickstart):

from agents.realtime import RealtimeAgent, RealtimeSession

agent = RealtimeAgent(
    name="Voice Assistant",
    instructions="Ты — голосовой ассистент. Отвечай кратко.",
)
session = RealtimeSession(agent=agent, model="gpt-realtime-2.1")
# Дальше WebSocket-стрим аудио из микрофона

В TS-версии (@openai/agents) realtime в браузере идёт через WebRTC. Python realtime — server WebSocket, не путать. Tools, handoffs, guardrails, tracing — те же примитивы.

Vercel AI SDK

Репозиторий: github.com/vercel/ai (~26 300 stars на 21.08.2026). Документация: ai-sdk.dev помечает v7 (Latest). Релиз AI SDK 7 — 25 июня 2026 (блог Vercel).

Особенности

Vercel AI SDK — TypeScript-first библиотека для построения AI-приложений и агентов. Главное преимущество: интеграция с React и Next.js.

Унифицированный API провайдеров. Один и тот же код работает с OpenAI, Anthropic, Google, Mistral и десятками других. Смена провайдера — замена одной строки.

Streaming UI. Потоковый рендеринг ответов модели в React-компоненты из коробки.

v7: агенты в проде. С июня 2026 это уже не «обёртка generateText»: ToolLoopAgent, WorkflowAgent, approvals, timeouts, sandbox, harness к coding-агентам. Примеры в доке больше не на gpt-4o как на дефолте.

Пример: агент с инструментами

import { openai } from '@ai-sdk/openai';
import { generateText, tool } from 'ai';
import { z } from 'zod';

const result = await generateText({
  model: openai('gpt-5.6'),
  tools: {
    weather: tool({
      description: 'Получить погоду',
      parameters: z.object({ city: z.string() }),
      execute: async ({ city }) => `В ${city} солнечно, +22C`,
    }),
  },
  maxSteps: 5,
  prompt: 'Какая погода в Москве?',
});

Параметр maxSteps разрешает агенту выполнять несколько шагов: вызвать инструмент, обработать результат, вызвать следующий инструмент.

Смена провайдера

import { anthropic } from '@ai-sdk/anthropic';
import { google } from '@ai-sdk/google';

// Один и тот же код, разные модели
const result1 = await generateText({
  model: anthropic('claude-sonnet-4-6'),
  prompt: 'Объясни квантовые вычисления',
});

const result2 = await generateText({
  model: google('gemini-2.0-flash'),
  prompt: 'Объясни квантовые вычисления',
});

Streaming в React

'use client';
import { useChat } from '@ai-sdk/react';

export default function Chat() {
  const { messages, input, handleInputChange, handleSubmit } = useChat();

  return (
    <div>
      {messages.map((m) => (
        <div key={m.id}>
          <strong>{m.role}:</strong> {m.content}
        </div>
      ))}
      <form onSubmit={handleSubmit}>
        <input value={input} onChange={handleInputChange} />
      </form>
    </div>
  );
}

Хук useChat обрабатывает стриминг, историю сообщений и состояние формы. На бэкенде достаточно вернуть streamText() из API-роута.

MCP в Vercel AI SDK v6

import { createMCPClient } from 'ai';

const mcpClient = await createMCPClient({
  transport: {
    type: 'stdio',
    command: 'npx',
    args: ['-y', '@anthropic/mcp-filesystem'],
  },
});

const tools = await mcpClient.tools();

const result = await generateText({
  model: openai('gpt-5.6'),
  tools,
  prompt: 'Покажи файлы в текущей директории',
});

await mcpClient.close();

Google ADK — четвёртый вендорский SDK

В мае 2026 ADK в этом треке жил абзацем у Vertex: «open source на Python, можно без Google Cloud». К августу это уже Agent Development Kit 2.x: графовые workflow, HITL, CLI, пять языков.

  • Документация: adk.dev
  • Python: pip install google-adk, пакет 2.7.1 от 17.08.2026 (PyPI)
  • Репозиторий: github.com/google/adk-python (~21 200 stars на 21.08.2026)
  • Ещё языки: TypeScript (npm install @google/adk), Go 2.0 GA с графами (анонс 30.06.2026), Java 1.0 (30.03.2026), Kotlin

Три разных вещи Google, не путать:

СлойЧто этоКогда
ADKВаш код агента. Модель любая, деплой любойПишете агента
Gemini Enterprise Agent PlatformБывший Vertex Agent Builder / Agent Engine. Managed runtime в облаке GoogleНужен SLA Google Cloud
A2AПротокол «агент к агенту», не SDK. См. 4.1/01Два агента на разных стеках

ADK умеет A2A и MCP как интеграции, но сам ADK — это фреймворк, как LangGraph или Claude Agent SDK.

Как сделать минимального агента

from google.adk import Agent
from google.adk.tools import google_search

agent = Agent(
    name="researcher",
    model="gemini-flash-latest",
    instruction="Ты исследователь. Отвечай по делу, на русском.",
    tools=[google_search],
)

Поставить: pip install google-adk. Запуск с отладкой: adk web путь/к/агенту — встроенный UI. В прод: контейнер у себя, Cloud Run, GKE или Agent Runtime в облаке Google.

ADK 2.0 — граф. Если задача ветвится, ждёт человека и ретраится, это Workflow с рёбрами, не один Agent. Документация графов: adk.dev/graphs.

Когда выбирать ADK:

  • Команда на Gemini или уже в Google Cloud
  • Нужны граф, HITL и деплой «как есть» в Agent Runtime
  • Нужны Java / Go / Kotlin, а не только Python/TS
  • Агенты должны говорить с чужими агентами по A2A без самодельного JSON

Когда не выбирать:

  • Весь фронт на Next.js и стриминг в React — Vercel AI SDK 7 проще
  • Живёте внутри Claude Code loop — Claude Agent SDK
  • Нужны роли-команды за вечер — CrewAI, не ADK

Сравнительная таблица

Цифры GitHub — снимок 21.08.2026.

КритерийAnthropic SDKOpenAI Agents SDKVercel AI SDKGoogle ADK
ЯзыкPython, TSPython, JSTypeScriptPython, TS, Go, Java, Kotlin
Stars~7 950~28 800~26 300~21 200
МоделиТолько ClaudeOpenAI + провайдерыВсе провайдерыGemini + адаптеры (LiteLLM)
МультиагентыСубагенты + MCPHandoffsWorkflowAgent / ToolLoopИерархия + граф 2.0
СтримингДаДаЛучший в классеДа
MCPНативный (in-process)ЕстьЕсть в v7Есть
A2AЧерез экосистемуЧерез экосистемуНет как ядроНативная интеграция
GuardrailsPermissions / hooksВстроенныеApprovals в v7Tool confirmation
ReactНетНетНативнаяНет
Для когоClaude-стекPython-агентыFullstack / Next.jsGemini / полиглот / Google Cloud

Когда какой выбрать

flowchart TD
    START[Выбор SDK] --> Q1{Работаете только с Claude?}
    Q1 -->|Да| R1[Anthropic Agent SDK]
    Q1 -->|Нет| QG{Google / Gemini / полиглот?}
    QG -->|Да| RADK[Google ADK]
    QG -->|Нет| Q2{Нужны handoffs между агентами?}
    Q2 -->|Да| R2[OpenAI Agents SDK]
    Q2 -->|Нет| Q3{Строите веб на React / Next.js?}
    Q3 -->|Да| R3[Vercel AI SDK 7]
    Q3 -->|Нет| Q4{Несколько провайдеров?}
    Q4 -->|Да| R3
    Q4 -->|Нет| Q5{Основной язык -- Python?}
    Q5 -->|Да| R2
    Q5 -->|Нет| R3

    style START fill:#f8fafc,stroke:#64748b,stroke-width:2px
    style Q1 fill:#f8fafc,stroke:#4f46e5,stroke-width:2px
    style Q2 fill:#f8fafc,stroke:#4f46e5,stroke-width:2px
    style Q3 fill:#f8fafc,stroke:#4f46e5,stroke-width:2px
    style Q4 fill:#f8fafc,stroke:#4f46e5,stroke-width:2px
    style Q5 fill:#f8fafc,stroke:#4f46e5,stroke-width:2px
    style R1 fill:#f8fafc,stroke:#059669,stroke-width:2px
    style R2 fill:#f8fafc,stroke:#059669,stroke-width:2px
    style R3 fill:#f8fafc,stroke:#059669,stroke-width:2px

Частые комбинации:

  • Стартап на Next.js — Vercel AI SDK 7 для фронтенда и бэкенда
  • Python-бэкенд с OpenAI — OpenAI Agents SDK для оркестрации
  • Инструменты для Claude — Anthropic Agent SDK + MCP-серверы
  • Gemini / Java / Go / граф с HITL — Google ADK
  • Мультипровайдер на Python — OpenAI Agents SDK с кастомным провайдером или ADK + LiteLLM

Доступность из России

Прямой доступ к API Anthropic и OpenAI из России ограничен. Для работы с этими SDK потребуется VPN или прокси-сервер для маршрутизации запросов.

Anthropic Agent SDK — требуется VPN для доступа к Claude API. SDK взаимодействует с api.anthropic.com.

OpenAI Agents SDK — требуется VPN для доступа к OpenAI API. Однако SDK провайдер-агностичен: можно направить запросы на локальный сервер через Ollama или vLLM, и тогда VPN не нужен.

Vercel AI SDK — сам SDK полностью открытый и устанавливается из npm без ограничений. Работает с любым провайдером, включая:

  • Локальные модели через Ollama
  • Российские провайдеры через кастомные адаптеры
  • Любой OpenAI-совместимый сервер

Vercel AI SDK — наиболее доступный вариант для разработки в условиях ограничений, потому что не привязан к конкретному облачному провайдеру.