Un protocole canonique pour chaque fournisseur d’IA
SDK IA TypeScript pur · web-first · multi-fournisseur
Anthropic, OpenAI, xAI Grok, Google Gemini et Vertex AI derrière un seul protocole de streaming canonique. Zéro dépendance runtime, déterministe par conception — fonctionne partout où fetch fonctionne.
npm install @deuz-sdk/coreUne seule surface d’API pour
- Anthropic
- OpenAI
- xAI Grok
- Google Gemini
- Vertex AI
- Yunwu
Flux delta canonique
Chaque réponse de fournisseur est normalisée en un flux StreamPart typé avant que votre code ne la voie. Aucun SSE brut ne s’échappe jamais.
Boucle d’outils agentique
Exécution d’outils parallèle et auto-réparatrice avec garde-fous anti-emballement, arrêts budgétaires, portes d’approbation et sous-agents imbriqués.
Cœur edge-safe
API Web uniquement — pas de node:*, pas de Buffer, pas d’état ambiant. Node, Deno, Bun, Vercel Edge et Cloudflare Workers.
Déterministe & testable
Horloge, aléatoire, fetch et clés sont injectés via une seule couture Dependencies. Tests golden-replay, sans réseau réel.
Mémoire, RAG & skills
Pipeline mémoire façon mem0, récupération hybride BM25 + vecteurs et divulgation progressive SKILL.md — le tout edge-safe.
Sortie structurée & wire UI
generateObject / streamObject typés par schéma, hooks React et un wire SSE versionné que vous possédez de bout en bout.
Le streaming en trois lignes
streamChat retourne de façon synchrone et ne lève jamais d’exception — la requête démarre paresseusement à la première lecture. Changez la factory pour changer de fournisseur ; rien d’autre ne bouge.
Quickstart// 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);
}