Votre code parle déjà le format OpenAI. Changez deux valeurs, l'URL de base et la clé : le même code passe par OpenDunes, payé en dinars.
Vous avez bâti votre application sur les bibliothèques OpenAI, puis la facture a bloqué sur une carte refusée. Vous imaginez des semaines de réécriture. Il vous faut cinq minutes.
OpenDunes parle le format OpenAI : les requêtes que votre code envoie et les réponses qu'il lit restent les mêmes. Vous changez deux valeurs, et rien d'autre.
Votre code parle à l'API à travers deux réglages. Le premier dit où envoyer la requête, le second prouve que la requête est la vôtre.
L'URL de base est l'adresse par laquelle commence chaque requête. Son rôle est de dire à votre code quel service répond.
Les deux valeurs se trouvent au même endroit de votre code : là où vous créez le client.
Dois-je réécrire mes appels, mes prompts ou ma lecture des réponses ?
Non. Le corps de la requête, le format des messages et la réponse que vous lisez gardent leur forme. Vos prompts et votre code de lecture restent tels quels.
Si votre carte a été refusée sur le paiement officiel, le mur de facturation qui vous pousse à chercher une URL de base explique pourquoi, et ce que cela change pour votre compte.
Voici la bibliothèque Python officielle openai, dirigée vers OpenDunes. Seules les deux lignes commentées changent.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://opendunes.com/v1", # changed
api_key=os.environ["OPENDUNES_API_KEY"], # changed
)
response = client.chat.completions.create(
model="openai/gpt-6-luna",
messages=[{"role": "user", "content": "Summarise this order in one line."}],
)
print(response.choices[0].message.content)Écrivez le nom complet du modèle, tel que sa page modèle l'affiche : openai/gpt-6-luna. La partie avant la barre oblique est le laboratoire qui a créé le modèle.
La bibliothèque JavaScript officielle prend les deux mêmes valeurs.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://opendunes.com/v1", // changed
apiKey: process.env.OPENDUNES_API_KEY, // changed
});
const completion = await client.chat.completions.create({
model: "openai/gpt-6-luna",
messages: [{ role: "user", content: "Summarise this order in one line." }],
});
console.log(completion.choices[0].message.content);Les bibliothèques officielles lisent aussi OPENAI_BASE_URL dans l'environnement. Posez l'adresse là une fois pour toutes, à côté de votre clé.
OPENDUNES_API_KEY=your-key-here
OPENAI_BASE_URL=https://opendunes.com/v1Votre clé dépense votre solde. Quiconque la lit peut la dépenser aussi.
Coller la clé dans un fichier source et la pousser sur un dépôt partagé.
Gardez la clé dans une variable d'environnement ou un coffre à secrets, et créez une clé par application pour pouvoir en révoquer une sans arrêter les autres.
Voyons ce que coûte une vraie charge une fois lancée.
Votre back-office résume 10 000 commandes par mois avec GPT-6 Luna. Sa page modèle affiche environ 0,11 DA le message, lue le 5 octobre 2026. Cela fait environ 1 100 DA par mois, pris sur votre solde en dinars.
À vous maintenant d'envoyer votre première requête.
Contexte : vous avez une clé OpenDunes et un terminal.
Consigne : envoyez une question à openai/gpt-6-luna avec curl, puis lisez le texte de la réponse.
Exportez votre clé, puis envoyez la requête :
export OPENDUNES_API_KEY=your-key-here
curl https://opendunes.com/v1/chat/completions \
-H "Authorization: Bearer $OPENDUNES_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "openai/gpt-6-luna", "messages": [{"role": "user", "content": "Hello"}]}'Le texte de la réponse se trouve dans choices[0].message.content.
https://opendunes.com/v1 et la clé.openai/gpt-6-luna.Non. Gardez la bibliothèque officielle OpenAI que vous utilisez déjà, en Python ou en JavaScript, et changez son URL de base et sa clé.
Ils gardent le format OpenAI. La page de chaque modèle liste ce que ce modèle prend en charge, comme les outils, la vision ou la sortie structurée : vérifiez-la avant de changer de modèle.
Oui. Le changement tient en deux valeurs, le retour aussi. Vos prompts et votre code de lecture n'ont jamais changé.
Votre code tourne maintenant en dinars. Dans l'article suivant, vous voyez comment facturer vos propres clients en dinars sans prélèvement mensuel par carte. À tout de suite !