Démarrage rapide
Créez un FleeexClient et faites votre premier appel compté, compatible OpenAI.
On suppose ici que vous avez installé le SDK et que vous disposez d'une clé d'API et d'un identifiant utilisateur (voir Authentification).
Créer un client
import { FleeexClient } from "@fleeex/sdk";
export const client = new FleeexClient({
apiKey: process.env.FLEEEX_API_KEY!, // flx_…, un secret côté serveur
userId: "user-123", // l'utilisateur final dont votre app se porte garante
// baseURL: "http://localhost:3000", // dev local ; vaut l'endpoint hébergé par défaut
});apiKey et userId sont les seules options obligatoires. Tout le reste a une valeur par
défaut raisonnable ; voir le
tableau complet des options.
Faire un appel
client.chat.completions.create est la méthode OpenAI elle-même, avec les types de
requête et de réponse d'OpenAI. Le protocole est iso-OpenAI, et les paramètres que le
serveur honore forment un sous-ensemble documenté de ce que
ces types autorisent.
const completion = await client.chat.completions.create({
model: "nova-lite",
messages: [{ role: "user", content: "Bonjour, Fleeex !" }],
});
console.log(completion.choices[0]?.message.content);nova-lite est un alias, un nom public stable que Fleeex fait pointer vers la révision
suivante du modèle : ce bout de code continue donc de fonctionner. Les modèles que vous
pouvez appeler dépendent de votre application, alors n'écrivez pas la liste en dur.
Demandez-la avec GET /v1/models.
La réponse est l'objet OpenAI ChatCompletion standard, y compris le bloc usage
(prompt_tokens, completion_tokens, total_tokens) que Fleeex compte et facture sur
votre portefeuille.
Gérer le « plus de fonds »
Si le couple (app, utilisateur) n'a pas de portefeuille approvisionné et autorisé,
l'appel lève une erreur typée PaymentRequiredError porteuse d'un lien de rechargement.
Redirigez l'utilisateur final vers ce lien :
import { PaymentRequiredError } from "@fleeex/sdk";
try {
const completion = await client.chat.completions.create({
model: "nova-lite",
messages: [{ role: "user", content: "Bonjour, Fleeex !" }],
});
return completion.choices[0]?.message.content;
} catch (err) {
if (err instanceof PaymentRequiredError) {
redirect(err.topupUrl); // envoyer l'utilisateur final vers le Checkout
}
throw err;
}Voir Solde et paiements pour le parcours complet, dont le
hook onPaymentRequired qui permet de traiter ce cas en un seul endroit.
Ce qui vient de se passer
Le SDK a envoyé une requête iso-OpenAI au proxy Fleeex, avec votre clé bearer et
l'en-tête x-fleeex-user. Fleeex a authentifié l'application, résolu l'utilisateur,
vérifié la solvabilité, appelé le modèle, compté la consommation réelle de tokens et
débité le portefeuille, puis renvoyé une réponse OpenAI standard. Ensuite :
streaming.