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 zodzod 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.
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
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
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.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).
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.
npm install @ai-sdk/openai-compatibleimport { 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 providerRemarques
- 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.