Sections de la base de connaissances ▾

Navigation

▸ Commencez ici Par rôles

Catégories

Outils 32
Glossaire 12

Outils

Vercel AI SDK + Gonka AI — Applications IA en TypeScript pour une bouchée de pain

Vercel AI SDK est le SDK le plus populaire pour créer des applications AI avec TypeScript et JavaScript. API unifiée generateText et streamText, streaming vers l'UI, tool calling natif, helpers prêts à l'emploi pour Next.js App Router — tout ce dont vous avez besoin pour des chatbots, des agents et des pipelines RAG sur le web.

Le problème est le même que pour toute application LLM : le coût du fournisseur. L'interface de chat en streaming envoie l'historique du dialogue à chaque message, et l'agent fait circuler le contexte pendant des dizaines d'étapes. Aux prix d'Anthropic (3-15 $/1M) et d'OpenAI (2,5-10 $/1M), même un modeste projet personnel en production se transforme en facture de centaines de dollars par mois.

JoinGonka Gateway — un endpoint compatible OpenAI au-dessus du réseau décentralisé Gonka. Vercel AI SDK s'y connecte comme à n'importe quel fournisseur compatible OpenAI — sans fork, sans adaptateurs spécifiques. Le même modèle Kimi K2.6, le même streamText, mais pour 0,003 $/1M de tokens en entrée — des centaines à des milliers de fois moins cher.

Étape 1 : Obtenir la clé et connecter le fournisseur

Clé API JoinGonka : inscrivez-vous sur gate.joingonka.ai/register — nous offrons 10M de tokens gratuits au démarrage. Dans le Dashboard, créez une clé avec le préfixe jg-.

Installation des paquets. Pour un endpoint custom compatible avec OpenAI, le SDK Vercel AI recommande le fournisseur @ai-sdk/openai-compatible :

npm install ai @ai-sdk/openai-compatible

Connexion minimale — créez une instance du fournisseur via createOpenAICompatible et appelez generateText :

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { generateText } from 'ai';

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY, // jg-votre-clé
});

const { text } = await generateText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  prompt: 'Explique ce qu'est un réseau d'inférence décentralisé',
});

console.log(text);

Le paramètre apiKey ajoute automatiquement l'en-tête Authorization: Bearer jg-votre-clé — aucune configuration supplémentaire n'est nécessaire. Stockez la clé dans une variable d'environnement GONKA_API_KEY (par exemple dans .env.local), et non directement dans le code.

Alternative — le paquet @ai-sdk/openai avec la factory createOpenAI({ baseURL, apiKey }). Les deux méthodes fonctionnent ; pour les endpoints n'appartenant pas à OpenAI, la documentation du SDK AI recommande explicitement @ai-sdk/openai-compatible — il n'inclut pas les hypothèses spécifiques à OpenAI.

Étape 2 : Streaming et gestionnaire de route Next.js

La fonctionnalité principale du Vercel AI SDK est le streaming de la réponse. La fonction streamText commence à streamer les tokens immédiatement, et le helper toUIMessageStreamResponse() renvoie le flux directement depuis le route handler dans Next.js App Router.

Gestionnaire côté serveur app/api/chat/route.ts :

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { streamText, convertToModelMessages, type UIMessage } from 'ai';

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY,
});

// autorisation de streaming jusqu'à 30 secondes
export const maxDuration = 30;

export async function POST(req: Request) {
  const { messages }: { messages: UIMessage[] } = await req.json();

  const result = streamText({
    model: gonka('MiniMaxAI/MiniMax-M2.7'),
    system: 'Tu es un assistant utile. Réponds de manière concise et pertinente.',
    messages: convertToModelMessages(messages),
    maxOutputTokens: 8192, // limite de sortie via Gateway
  });

  return result.toUIMessageStreamResponse();
}

Côté client, connectez le hook useChat depuis @ai-sdk/react — il gère lui-même les appels vers /api/chat et le rendu du flux de messages. Le backend communique alors avec Gonka, et non OpenAI.

Script sans UI (Node, itérateur asynchrone sur le flux) :

import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { streamText } from 'ai';

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY,
});

const result = streamText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  prompt: 'Écris un haïku sur le calcul distribué',
});

for await (const chunk of result.textStream) {
  process.stdout.write(chunk);
}

Paramètres des modèles. Deux modèles sont disponibles via la Gateway, chacun avec une fenêtre de contexte de 200K tokens ; la limite de réponse (maxOutputTokens) va jusqu'à 8192 pour chacun :

Si maxOutputTokens n'est pas défini, la Gateway renverra par défaut jusqu'à 1500 tokens pour les requêtes non-streaming — il est préférable de spécifier explicitement cette valeur pour les chats en streaming.

Comparaison des coûts

Vercel AI SDK se situe généralement derrière une interface interactive — chat, agent, assistant d'application. Chaque message entraîne l'historique du dialogue, chaque étape d'un agent entraîne le contexte des outils. C'est pourquoi le coût réel se calcule non pas par requête, mais selon la charge en production. Comparons des scénarios typiques :

ScénarioTokensAnthropic / OpenAIJoinGonka Gonka
Un message dans le chat~3K0,01 $ — 0,05 $0,000014 $
Dialogue de 20 répliques~150K0,50 $ — 2,25 $0,00072 $
Réponse RAG (recherche + génération)~5K0,015 $ — 0,05 $0,000024 $
Étape d'agent avec tool calling~10K0,03 $ — 0,10 $0,000048 $
10 000 requêtes par jour (prod)~50M150 $ — 500 $0,24 $

Le prix de JoinGonka est d'environ 0,003 $ par 1M de tokens en entrée, la sortie étant environ trois fois plus chère. Pour une application avec des milliers de requêtes par jour, cela représente la différence entre une facture de centaines de dollars et une facture de quelques centimes. Les 10M de tokens gratuits suffisent pour tester et déboguer entièrement un projet avant son passage en production.

Appel d'outils et agents

Vercel AI SDK décrit les outils de manière déclarative via l'objet tools et le schéma zod. Kimi K2.6 prend en charge le function calling natif, permettant ainsi à l'AI SDK de recevoir des tool_calls structurés sans avoir à analyser les réponses textuelles. Le paramètre stopWhen: stepCountIs(n) autorise plusieurs étapes consécutives — le modèle appelle un outil, reçoit le résultat et continue.

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

const gonka = createOpenAICompatible({
  name: 'gonka',
  baseURL: 'https://gate.joingonka.ai/v1',
  apiKey: process.env.GONKA_API_KEY,
});

const { text } = await generateText({
  model: gonka('MiniMaxAI/MiniMax-M2.7'),
  stopWhen: stepCountIs(5),
  tools: {
    weather: tool({
      description: 'Obtenir la météo dans la ville',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, tempC: 17 }),
    }),
  },
  prompt: 'Quelle est la météo à Moscou ? Réponds en une seule phrase.',
});

console.log(text);

Le modèle appelle l'outil weather, reçoit le résultat et génère la réponse finale. Le cycle complet coûte environ $0.000048 via Gonka contre $0.03-0.10 chez Anthropic ou OpenAI. Pour les applications d'agents, où chaque requête utilisateur se déploie en 5-10 étapes, les économies en production se comptent en milliers de dollars par mois.

Si vous développez une application AI sur Python, consultez le guide sur LangChain — on y retrouve la même approche via la classe compatible OpenAI.

Vercel AI SDK + Gonka = applications AI prêtes pour la production en TypeScript à moindre coût. createOpenAICompatible connecte la Gateway sans forks, generateText et streamText fonctionnent normalement, le tool calling natif et les route handlers Next.js — le tout pour $0.003/1M de jetons au lieu de $2.5-15 chez OpenAI et Anthropic.

Vous voulez en savoir plus ?

Explorez d'autres sections ou commencez à gagner des GNK dès maintenant.

Obtenez 10 millions de jetons gratuits →