@ai_kit/server fournit un serveur Hono préconfiguré qui expose vos agents et workflows sous forme d’API HTTP. Il gère les invocations synchrones, le streaming (SSE), la reprise des workflows en attente et peut générer automatiquement une documentation OpenAPI.
Installation
@ai_kit/core afin de partager les agents et workflows que vous avez déjà déclarés.
Exemple minimal
0.0.0.0 et le port PORT (ou 8787). Les instances d’agent et de workflow sont conservées en mémoire et réutilisées à chaque requête.
Endpoints exposés
| Route | Description |
|---|---|
GET /api/agents | Liste tous les agents déclarés dans la configuration du serveur. |
POST /api/agents/:id/generate | Exécute Agent.generate une fois et retourne la réponse complète. |
POST /api/agents/:id/stream | Diffuse Agent.stream via SSE ou l’API DataStreamResponse fournie par ai. |
GET /api/workflows | Liste tous les workflows déclarés dans la configuration du serveur. |
POST /api/workflows/:id/run | Démarre un run et renvoie son runId + l’état final (ou waiting_human). |
POST /api/workflows/:id/stream | Diffuse chaque WorkflowEvent et l’état final via SSE. |
POST /api/workflows/:id/runs/:runId/resume | Reprend un run suspendu avec des données humaines. |
inputData et peuvent ajouter metadata. Pour les agents, fournissez soit prompt, soit messages (aligné sur AI SDK).
Streaming et reprise
streamutilise unReadableStreamSSE : l’événementruncontient lerunId, puis chaque étape déclenche un événement dont le nom =event.type.- Lorsque le workflow passe en
waiting_human, le stream se ferme après avoir envoyé l’état. Utilisez ensuiteresumeavec{ stepId, data }pour relancer l’exécution. - La route
/streamannule automatiquement le run si le client ferme la connexion.
Swagger / OpenAPI
Swagger est activé par défaut hors production. Personnalisez-le viaswagger :
- L’UI est servie sur
route(par ex./docs). - L’OpenAPI JSON est disponible sur
route + ".json". - Passez
falsepour désactiver Swagger même en développement, outruepour l’activer en production.
Utiliser le binaire CLI
Le package expose la commandeserver-kit (exécutable via npx @ai_kit/server) qui démarre une instance ServerKit en lisant les variables d’environnement suivantes :
PORT(défaut8787).HOST(défaut0.0.0.0).NODE_ENVinflue sur l’activation automatique de Swagger.
ServerKit dans votre application (par exemple dans apps/api/server.ts) et que vous n’y passez vos modules AI Kit. Inspirez-vous du CLI pour intégrer ServerKit dans votre outil de déploiement habituel.
Options de configuration
| Option | Type | Rôle |
|---|---|---|
agents | Record<string, Agent> | Enregistre les agents disponibles sous /api/agents/:id/*. |
workflows | Record<string, Workflow> | Déclare les workflows exposés sous /api/workflows/:id/*. |
swagger | boolean | SwaggerOptions | Active/désactive Swagger ou précise route, title, version, description. |
telemetry | boolean | ServerTelemetryOptions | Active l’export Langfuse et transmet les options à ensureLangfuseTelemetry. |
listen({ port, hostname, signal }) accepte également un AbortSignal pour arrêter proprement le serveur.
Pour une implémentation complète, consultez packages/server/src/ServerKit.ts.
Télémétrie Langfuse
Activez Langfuse directement via la configurationServerKit — aucun fichier d’instrumentation séparé n’est requis :
telemetryaccepte un booléen ou la configuration complète d’ensureLangfuseTelemetry.- Définissez les variables
LANGFUSE_PUBLIC_KEY,LANGFUSE_SECRET_KEY(et optionnellementLANGFUSE_BASE_URL). - Le CLI expose les flags
--telemetry/--no-telemetrypour activer ou désactiver rapidement la télémétrie.