Ling 3.0 Flash VL accepte les entrées textuelles, images et vidéos via l’API compatible OpenAI de Novita AI. Définissez https://api.novita.ai/openai comme URL de base, utilisez inclusionai/ling-3.0-flash-vl comme identifiant de modèle et placez une URL d’image ou une URL de données dans un message de complétion de chat standard. Ce guide se concentre sur la configuration, les requêtes image, les workflows vidéo, l’appel de fonctions, les contrôles de raisonnement et les vérifications de mise en production.
Pour le positionnement du modèle, la disponibilité et le contexte du catalogue, consultez Ling 3.0 Flash VL on Novita AI: Launch, Capabilities, and Pricing. Pour une intégration textuelle uniquement, comparez ce guide avec le Ling 3.0 Flash API Quick Start.
Ce dont vous avez besoin
| Élément | Valeur |
|---|---|
| Clé API | Une clé API Novita AI dans NOVITA_API_KEY |
| URL de base compatible OpenAI | https://api.novita.ai/openai |
| Point de terminaison de complétion de chat | POST https://api.novita.ai/openai/v1/chat/completions |
| Identifiant du modèle | inclusionai/ling-3.0-flash-vl |
Le guide LLM de Novita AI documente la configuration du client compatible OpenAI. Le guide vision-langage documente le format du tableau content, les entrées image_url, les détails d’image et les URL de données en base64. La page du modèle consultée le 9 septembre 2026 répertorie l’entrée texte, image et vidéo, la sortie texte, l’appel de fonctions, le raisonnement, une fenêtre de contexte de 256K et une sortie maximale de 32K.
Exportez la clé dans votre shell plutôt que de la placer dans le code source :
export NOVITA_API_KEY="your_api_key"
Requête image en Python
Le SDK Python OpenAI accepte un tableau pour le content du message utilisateur. Placez l’entrée visuelle en premier, puis ajoutez l’instruction comme un élément textuel séparé.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.novita.ai/openai",
api_key=os.environ["NOVITA_API_KEY"],
)
response = client.chat.completions.create(
model="inclusionai/ling-3.0-flash-vl",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://example.com/receipt.jpg",
"detail": "high",
},
},
{
"type": "text",
"text": "Extrayez le commerçant, la date et le total. Si un champ n'est pas lisible, dites-le.",
},
],
}
],
max_tokens=256,
temperature=0.2,
)
print(response.choices[0].message.content)
detail peut être low, high ou auto. Utilisez high pour les petits textes et les détails visuels fins ; commencez par low ou auto lorsque la latence est importante. L’entrée image est tokenisée et comptée avec le texte, donc mesurez le coût et la qualité sur des images représentatives.
Requête image en cURL
La même charge utile fonctionne depuis un script shell. --fail-with-body garde les échecs HTTP visibles tout en retournant un code de sortie non nul.
curl --fail-with-body "https://api.novita.ai/openai/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${NOVITA_API_KEY}" \
-d '{
"model": "inclusionai/ling-3.0-flash-vl",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://example.com/diagram.png",
"detail": "auto"
}
},
{
"type": "text",
"text": "Décrivez les principaux composants et leurs connexions."
}
]
}
],
"max_tokens": 512,
"temperature": 0.2
}'
Pour une image locale privée, remplacez l’URL distante par une URL de données telle que data:image/jpeg;base64,<base64_image_bytes>. Gardez le type MIME aligné avec le fichier encodé et ne journalisez pas les corps de requête contenant des images privées.
Gestion des entrées vidéo
La fiche du modèle Ling 3.0 Flash VL actuelle inclut la vidéo parmi ses modalités d’entrée. Le guide public de vision Novita documente la charge utile d’image compatible OpenAI portable ci-dessus, mais ne définit pas de schéma de message générique video_url séparé. N’en inventez pas un dans un client de production.
Pour un workflow de compréhension vidéo portable, extrayez des trames représentatives, envoyez-les comme plusieurs éléments image_url et incluez des horodatages dans l’invite. Le guide de vision recommande au maximum deux images par requête, donc échantillonnez des fenêtres courtes ou effectuez plusieurs appels :
ffmpeg -ss 00:00:05 -i input.mp4 -vf "fps=1/5,scale=1280:-2" -frames:v 2 frame-%02d.jpg
Les trames résultantes peuvent être envoyées en répétant l’élément image dans la charge utile Python ou cURL. Si la référence API actuelle pour votre compte expose une forme de contenu vidéo natif, suivez cette référence et validez-la d’abord avec un petit clip. La fiche du modèle confirme la capacité vidéo ; le format de transport doit être vérifié par rapport à la documentation API en direct pour votre intégration.
Appel de fonctions avec contexte visuel
L’appel de fonctions est utile lorsque le modèle doit transformer ce qu’il voit en une action applicative. Gardez l’outil ciblé et validez ses arguments dans le code de l’application.
tools = [
{
"type": "function",
"function": {
"name": "flag_document",
"description": "Envoyez un document pour vérification manuelle.",
"parameters": {
"type": "object",
"properties": {
"reason": {"type": "string", "description": "Pourquoi une révision est nécessaire."},
"page_or_frame": {"type": "string", "description": "Page ou horodatage vidéo."},
},
"required": ["reason"],
},
},
}
]
response = client.chat.completions.create(
model="inclusionai/ling-3.0-flash-vl",
messages=[
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/document.jpg"}},
{"type": "text", "text": "Signalez ce document si des champs clés sont flous."},
],
}
],
tools=tools,
tool_choice="auto",
max_tokens=256,
temperature=0.1,
)
message = response.choices[0].message
if message.tool_calls:
for call in message.tool_calls:
print(call.function.name, call.function.arguments)
else:
print(message.content)
Traitez les arguments des outils comme une sortie de modèle non fiable. Validez le JSON, vérifiez les autorisations et exécutez la fonction en dehors du modèle. Une observation visuelle ne doit pas déclencher directement une action irréversible sans les vérifications requises par votre workflow.
Contrôles de raisonnement
L’API de complétion de chat compatible OpenAI de Novita AI inclut les champs enable_thinking et separate_reasoning, et la fiche de Ling 3.0 Flash VL inclut la prise en charge du raisonnement. Testez ces champs avec une petite requête avant de les ajouter à un wrapper de production :
response = client.chat.completions.create(
model="inclusionai/ling-3.0-flash-vl",
messages=[
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/chart.png"}},
{"type": "text", "text": "Comparez les deux tendances et dites laquelle nécessite une investigation."},
],
}
],
enable_thinking=True,
separate_reasoning=True,
max_tokens=512,
temperature=0.2,
)
print(response.choices[0].message)
La sortie du raisonnement peut modifier l’analyse de la réponse et la latence. Si votre application n’a besoin que d’une légende ou d’un appel d’outil, laissez ces champs de côté et comparez d’abord la qualité avec la requête plus simple.
Liste de vérification pour l’intégration
Avant d’aller au-delà d’un test de fumée :
- Confirmez l’identifiant exact du modèle et le point de terminaison plutôt que d’utiliser le nom d’affichage.
- Testez d’abord une URL d’image publique, puis une URL de données en base64, et validez la gestion des images privées séparément.
- Gardez
max_tokenslimité et journalisez l’utilisation et la latence sans conserver le contenu d’image inutile. - Testez les paramètres de détail d’image sur les petits textes, les graphiques et les photographies ordinaires.
- Validez les arguments des outils avant l’exécution et gérez une réponse sans appel d’outil.
- Pour les workflows vidéo, définissez l’échantillonnage des trames, le suivi des horodatages et la charge utile vidéo native prise en charge par la référence API en direct.
- Revérifiez la disponibilité du modèle, les prix et les limites avant la mise en production ; les valeurs du catalogue peuvent changer.
FAQ
Quel identifiant de modèle dois-je utiliser ?
Utilisez inclusionai/ling-3.0-flash-vl. Ling 3.0 Flash VL est le nom d’affichage, pas la valeur de la requête.
Quel point de terminaison ce guide utilise-t-il ?
Utilisez https://api.novita.ai/openai comme URL de base du SDK, ou envoyez des requêtes cURL à https://api.novita.ai/openai/v1/chat/completions.
Comment envoyer une image ?
Ajoutez un tableau content au message utilisateur avec un élément image_url et un élément text. L’URL de l’image peut pointer vers une image accessible ou utiliser une URL de données en base64.
Le modèle accepte-t-il la vidéo ?
La fiche du modèle Novita consultée le 9 septembre 2026 répertorie la vidéo comme une modalité d’entrée. Le guide public de vision ne documente pas une forme de message vidéo directe générique, donc confirmez la référence API en direct avant d’envoyer une charge utile vidéo native. Un workflow d’échantillonnage de trames est la solution de repli portable.
Prend-il en charge l’appel de fonctions et le raisonnement ?
La fiche actuelle de Novita inclut les deux fonctionnalités. Les exemples ci-dessus montrent tools, enable_thinking et separate_reasoning ; testez leur forme de réponse et leur latence avec votre propre charge de travail.
