Aller au contenu

Vercel AI SDK

Faites pointer le fournisseur OpenAI du Vercel AI SDK vers Promptix avec createOpenAI({ baseURL }).

Le Vercel AI SDK communique avec Promptix via son fournisseur OpenAI. Créez une instance de fournisseur avec le baseURL de Promptix, puis utilisez generateText, streamText et les autres fonctions comme d'habitude.

Installation

npm install ai @ai-sdk/openai zod

zod n'est nécessaire que pour la sortie structurée.

Créer le fournisseur

Utilisez createOpenAI avec l'URL de base de Promptix et votre clé, dans un module exécuté uniquement côté serveur.

lib/promptix.tsTypeScript
import { createOpenAI } from '@ai-sdk/openai'; export const promptix = createOpenAI({  baseURL: 'https://promptix.tn/api/v1',  apiKey: process.env.PROMPTIX_API_KEY,});

Utilisez promptix.chat(modelId)

Les versions récentes de @ai-sdk/openai envoient promptix(modelId) vers l'API Responses d'OpenAI (/responses), que Promptix ne propose pas. Sélectionnez toujours les modèles avec promptix.chat('fournisseur/modèle') pour que les requêtes passent par /chat/completions.

Générer du texte

generate.tsTypeScript
import { generateText } from 'ai';import { promptix } from '@/lib/promptix'; const { text, usage } = await generateText({  model: promptix.chat('anthropic/claude-sonnet-5'),  system: 'You answer in French.',  prompt: 'Write a two-line welcome message for a coworking space in Tunis.',  maxRetries: 2,}); console.log(text);console.log(usage);

Streamer du texte

stream.tsTypeScript
import { streamText } from 'ai';import { promptix } from '@/lib/promptix'; const result = streamText({  model: promptix.chat('openai/gpt-6-luna'),  prompt: 'Describe the medina of Tunis in one paragraph.',}); for await (const text of result.textStream) {  process.stdout.write(text);}

Dans un route handler Next.js, renvoyez directement le flux. Utilisez toTextStreamResponse() pour un flux de texte brut ; si votre front-end utilise useChat, renvoyez plutôt la réponse « UI message stream » de votre version du SDK.

app/api/completion/route.tsTypeScript
// app/api/completion/route.tsimport { streamText } from 'ai';import { promptix } from '@/lib/promptix'; export const maxDuration = 60; export async function POST(req: Request) {  const { prompt } = await req.json();   const result = streamText({    model: promptix.chat('openai/gpt-6-luna'),    prompt: String(prompt),    maxOutputTokens: 800,  });   return result.toTextStreamResponse();}

Sortie structurée

generateObject valide la réponse du modèle avec un schéma Zod. Choisissez un modèle qui prend en charge la sortie JSON (voir Choisir un modèle).

extract.tsTypeScript
import { generateObject } from 'ai';import { z } from 'zod';import { promptix } from '@/lib/promptix'; const { object } = await generateObject({  model: promptix.chat('openai/gpt-6-luna'),  schema: z.object({    city: z.string(),    amountTnd: z.number(),  }),  prompt: 'Invoice from Sousse, total due 245.500 dinars.',}); console.log(object.city, object.amountTnd);

Alternative : fournisseur compatible OpenAI

L'AI SDK propose aussi un fournisseur générique pour les API compatibles OpenAI. Il n'utilise que les chat completions : promptix(modelId) fonctionne donc directement.

terminalbash
npm install @ai-sdk/openai-compatible
lib/promptix.tsTypeScript
import { createOpenAICompatible } from '@ai-sdk/openai-compatible'; export const promptix = createOpenAICompatible({  name: 'promptix',  baseURL: 'https://promptix.tn/api/v1',  apiKey: process.env.PROMPTIX_API_KEY,}); // promptix('openai/gpt-6-luna') always uses /chat/completions with this provider

Remarques

  • Les coûts et limites sont les mêmes que pour les appels directs à l'API : voir Facturation et crédits et Erreurs et limites.
  • Les modèles d'embeddings et d'images (promptix.embedding(), promptix.image()) ne sont pas disponibles.