Tutoriel
Comment utiliser DeepSeek V4 Flash via l'API hiapi : curl, Python et exemples de requêtes exécutables
DeepSeek V4 Flash est un modèle de chat avec raisonnement dont l'intégration sur hiapi diffère de celle de la plupart des modèles de la plateforme : il n'utilise pas la file d'attente asynchrone POST /v1/tasks employée pour la génération d'images et de vidéos, mais un endpoint de complétion de chat compatible OpenAI — POST /v1/chat/completions, synchrone ou en streaming, sans interrogation répétée. Ce tutoriel vous guide pour émettre une requête exécutable avec curl et Python, puis présente deux problèmes réellement fréquents en production.
Ce que vous allez construire
Un script minimal qui envoie un prompt à deepseek-v4-flash via hiapi et affiche la réponse du modèle — ainsi que les patrons dont vous aurez besoin lorsque ce script deviendra une vraie intégration : gestion du budget de tokens de raisonnement, streaming, nouvelles tentatives, et la structure d'erreur décrite dans la documentation.
Prérequis : une clé d'API hiapi. Obtenez-la depuis le tableau de bord hiapi — chaque requête ci-dessous s'authentifie via Authorization: Bearer sk-<your-key>.
Exemple minimal exécutable
curl
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Explain what a hash table is in two sentences."}],
"max_tokens": 500
}'
Un appel réussi renvoie l'objet de complétion de chat standard :
{
"id": "gen-...",
"object": "chat.completion",
"model": "deepseek/deepseek-v4-flash",
"provider": "DeepInfra",
"choices": [{
"index": 0,
"finish_reason": "stop",
"message": {"role": "assistant", "content": "A hash table is ...", "reasoning": "..."}
}],
"usage": {
"prompt_tokens": 14, "completion_tokens": 187, "total_tokens": 201,
"completion_tokens_details": {"reasoning_tokens": 96}
}
}
Deux points à noter : la requête utilise l'ID de modèle brut deepseek-v4-flash — hiapi le résout en interne vers le fournisseur amont, tandis que le champ model de la réponse renvoie un ID qualifié par le fournisseur (deepseek/deepseek-v4-flash), à considérer comme une information de référence et non comme un paramètre de requête à renvoyer. Par ailleurs, le message contient un champ reasoning en plus de content — c'est un modèle de raisonnement, et usage.completion_tokens_details.reasoning_tokens vous indique quelle part du coût en completion_tokens est consacrée à cette chaîne de pensée et quelle part à la réponse visible.
Python
import os
import requests
resp = requests.post(
"https://api.hiapi.ai/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['HIAPI_KEY']}"},
json={
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Explain what a hash table is in two sentences."}],
"max_tokens": 500,
},
timeout=60,
)
resp.raise_for_status()
data = resp.json()
print(data["choices"][0]["message"]["content"])
Comme cet endpoint est compatible OpenAI, ce code fonctionne également tel quel avec le SDK Python officiel openai — il suffit de pointer base_url vers https://api.hiapi.ai/v1 et de passer votre clé hiapi comme api_key.
Patrons d'utilisation en production
Le piège du budget de raisonnement : ne fixez pas max_tokens trop bas
max_tokens limite le coût du raisonnement plus de la réponse, et non seulement la réponse visible. Si le modèle raisonne encore lorsqu'il atteint la limite, vous obtenez une réponse avec finish_reason: "length" et content: null — des tokens consommés et facturés, mais rien à afficher. Pour tout prompt non trivial, laissez une vraie marge à la requête (au moins quelques centaines de tokens) au lieu de réduire max_tokens à ce que vous estimez nécessaire pour la réponse.
Désactiver le raisonnement pour les tâches simples et déterministes
Si la tâche ne nécessite pas de chaîne de pensée — classification, requête courte, conversion de format — vous pouvez supprimer entièrement le raisonnement :
{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "Say OK and nothing else."}],
"max_tokens": 50,
"reasoning": {"enabled": false}
}
Avec reasoning.enabled: false, le message.reasoning de la réponse vaut null et completion_tokens_details.reasoning_tokens vaut 0 — vous ne payez que la sortie visible et la latence diminue d'autant. Ne conservez le comportement par défaut (raisonnement activé) que pour les tâches où une réflexion supplémentaire améliore réellement la réponse.
Streaming
Définissez "stream": true pour recevoir des événements serveur envoyés au format OpenAI standard, sans attendre la réponse complète :
curl https://api.hiapi.ai/v1/chat/completions \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"Count to 5."}],"stream":true}'
Chaque bloc est une ligne data: {...} portant le choices[0].delta.content incrémental ; le dernier bloc contient usage et le flux se termine par une ligne littérale data: [DONE]. Analysez les blocs à leur arrivée plutôt que de mettre en mémoire tampon la réponse entière côté client — c'est précisément l'intérêt du streaming pour une interface de chat.
Idempotence et nouvelles tentatives
Les complétions de chat ici sont des appels HTTP sans état, pas des tâches mises en file — il n'y a pas d'ID de tâche à interroger, et aucun risque de soumettre accidentellement le contenu deux fois dans une file. Les nouvelles tentatives concernent les problèmes HTTP classiques : en cas d'erreur de transport ou de 5xx, réessayez avec une stratégie de repli exponentiel ; en cas de 429, respectez l'en-tête Retry-After avant de réessayer (voir la documentation sur les limites de débit). Ne réessayez pas pour les erreurs 4xx indiquant une requête invalide (par exemple des messages mal formés) — corrigez plutôt le corps de la requête.
Gestion des erreurs
Une clé invalide ou absente renvoie HTTP 401 :
{
"error": {
"code": "permission_denied",
"message": "...",
"request_id": "...",
"type": "hiapi_error"
}
}
Dans votre gestionnaire d'erreurs, vérifiez error.code plutôt que d'appliquer une correspondance de motifs à la chaîne de message — permission_denied est l'identifiant stable. Si vous recevez cette erreur avec une clé que vous croyez valide, consultez la documentation d'authentification.
Pour aller plus loin
- Documentation d'authentification hiapi — le fonctionnement de l'en-tête
Authorizationet des portées de clé sur toute la plateforme. - Documentation hiapi sur les limites de débit — comportement du
429etRetry-After. - Page du modèle deepseek-v4-flash — tarification actuelle et description des capacités.
FAQ
Dois-je interroger le résultat de manière répétée comme pour les modèles d'image/vidéo de hiapi ?
Non. La génération d'images et de vidéos sur hiapi passe par la file asynchrone /v1/tasks (création → interrogation ou callback → téléchargement de output[0].url). Les modèles de chat comme deepseek-v4-flash sont de simples appels HTTP synchrones (ou en streaming) vers /v1/chat/completions — vous obtenez la réponse directement dans la réponse HTTP.
Pourquoi usage.completion_tokens est-il plus élevé que ce que la réponse visible semble devoir coûter ?
Parce qu'il inclut les tokens de raisonnement. Consultez usage.completion_tokens_details.reasoning_tokens pour voir la répartition, et utilisez "reasoning": {"enabled": false} lorsque vous n'avez pas besoin que le modèle expose son raisonnement.
Ma réponse a "finish_reason": "length" et un content vide — que s'est-il passé ?
Le modèle a épuisé max_tokens alors qu'il raisonnait encore et n'a jamais rédigé de réponse visible. Augmentez max_tokens, ou désactivez le raisonnement pour des prompts plus simples.
Puis-je utiliser le SDK OpenAI officiel au lieu d'appels HTTP bruts ?
Oui — définissez le base_url du SDK sur https://api.hiapi.ai/v1 et api_key sur votre clé hiapi ; la structure des requêtes et des réponses est identique.
Où puis-je trouver la tarification actuelle de ce modèle ? Sur la page du modèle ou la page de tarification en temps réel — le coût par token peut varier légèrement selon le routage vers le fournisseur amont, donc consultez-la plutôt que de vous fier aux chiffres de cet article.
Articles similaires
Voir tous les articles →-
Tutoriel
Comment appeler hailuo-2.3-fast/image-to-video via l'API HiAPI : curl et Python en pratique
La première requête exploitable du palier image-vers-vidéo rapide et économique — de l'ID du modèle au téléchargement du MP4
-
Tutoriel
Comment appeler hailuo-2.3/text-to-video via l'API HiAPI : curl, Python et exemples de requêtes exécutables
-
Tutoriel
Utiliser Kandinsky 6.0 Pro texte-vers-vidéo sur HiAPI : tutoriel curl et Python
Démonstration pratique axée sur la requête : construire l'appel du prompt au clip vidéo, soumettre la requête, interroger l'état d'achèvement et télécharger le résultat