Один канонический протокол для каждого ИИ-провайдера
Чистый · web-first · мультипровайдерный TypeScript AI SDK
29 провайдеров за одним дельта-потоком StreamPart. Ноль runtime-зависимостей — пакеты SQLite, Redis и Postgres, guardrail и handoff в цикле, MCP, который подключается сам. Работает везде, где работает fetch.
npm install @deuz-sdk/core- id провайдеров
- 29
- подпутей
- 53
- пакета БД
- 3
- в основном аддитивно
- 1.9 → 2.0
Единая поверхность API для
- Anthropic
- OpenAI
- Google Gemini
- xAI Grok
- Azure
- Bedrock
- Ollama
- LM Studio
+ ещё 21, включая Ollama и LM Studio
Канонический дельта-поток
Каждый ответ провайдера нормализуется в типизированный поток StreamPart до того, как его увидит ваш код. Сырой SSE никогда не просачивается.
Агентный цикл — теперь с политикой
Параллельные самовосстанавливающиеся инструменты, вложенные суб-агенты, плюс guardrail 2.0 (pass / block / rewrite) и handoff() для передачи всего запуска.
Направьте персистентность в базу
Пакеты SQLite, Redis и Postgres за швами memory, chat, session и run. FTS5 + pgvector по желанию — ноль зависимостей, если не нужны.
MCP без конфигурации
Укажите серверы в вызове; цикл подключает, именует, обновляет и закрывает их. OAuth 2.0, sampling, roots и reconnect с проверкой ping.
Edge-безопасное ядро
Только Web API — без node:*, без Buffer, без внешнего состояния. Node, Deno, Bun, Vercel Edge и Cloudflare Workers.
Речь, транскрипция, видео
generateSpeech, transcribe и generateVideo как отдельные виды моделей — OpenAI, ElevenLabs, Deepgram и любой релей OpenAI-Videos.
Стриминг в три строки
streamChat возвращается синхронно и никогда не бросает исключений — запрос лениво стартует при первом чтении. Поменяйте фабрику, чтобы сменить провайдера; больше ничего не меняется.
Начать// swap the factory to swap providers
import { streamChat } from '@deuz-sdk/core';
import { createAnthropic } from '@deuz-sdk/core/anthropic';
const anthropic = createAnthropic({ apiKey });
const res = streamChat({
model: anthropic('claude-opus-4-8'),
messages: [{ role: 'user', content: 'Hello!' }],
});
for await (const chunk of res.textStream) {
process.stdout.write(chunk);
}Для вашего кодового агента
Ваш агент уже знает этот SDK
В репозитории лежат два Agent Skill, поэтому агент пишет по реальной поверхности, а не восстанавливает её по памяти. Каждый символ сверяется с таблицей экспортов на каждом коммите, а каждый пример компилируется — несуществующее имя не пройдёт.
Как они проверяются$ npx skills add Deuz-AI/Deuz-SDKdeuz-sdkВся поверхность: инварианты, маршрутизатор «задача → файл» и тринадцать справочных файлов, загружаемых только по необходимости.
migrate-from-ai-sdkПроверенный перенос имя в имя из ai и пакетов @ai-sdk.