Interface LLM d’Ultralytics#
LLM est une interface légère permettant d’appeler des modèles de langage et de vision via une API compatible avec OpenAI. Elle prépare les entrées textuelles ou les images, transmet les arguments de requête au SDK Python officiel d’OpenAI et renvoie l’objet de réponse natif du SDK. Tu peux ainsi facilement ajouter des capacités de raisonnement linguistique ou visuel à côté d’un pipeline YOLO, sans envelopper les types de réponse propres à chaque fournisseur.
L’API par défaut est responses ; utilise api="chat.completions" avec les fournisseurs qui ne prennent en charge que Chat Completions.
Installation#
Installe Ultralytics avec la dépendance LLM facultative :
pip install "ultralytics[llm]"Pour OpenAI, définis la clé API dans l’environnement :
export OPENAI_API_KEY="your-api-key"API Responses#
L’API Responses est utilisée par défaut. Transmets une invite et lis output_text :
from ultralytics import LLM
llm = LLM("gpt-6-luna")
response = llm("What is YOLO?")
print(response.output_text)Entrée multimodale#
Transmets un chemin, une URL HTTP, un URI de données, un tableau NumPy ou une image PIL via image :
from ultralytics import LLM
llm = LLM("gpt-6-luna")
response = llm("What is happening in this image?", image="https://ultralytics.com/images/bus.jpg")
print(response.output_text)Les fichiers locaux et les objets image sont encodés sous forme d’URI de données JPEG. Les tableaux NumPy utilisent l’ordre des canaux BGR d’OpenCV. Une chaîne transmise comme source, telle que llm("bus.jpg"), est traitée comme du texte ; utilise l’argument image pour envoyer une image.
Utilise prompt pour une instruction commune à toutes les requêtes :
llm = LLM("gpt-6-luna", prompt="Answer in one sentence.")
response = llm("Describe this image.", image="bus.jpg")Chat Completions#
Sélectionne Chat Completions si le point de terminaison l’exige, puis lis la structure de réponse native :
from ultralytics import LLM
llm = LLM("gpt-6-luna", api="chat.completions")
response = llm("What is non-maximum suppression?")
print(response.choices[0].message.content)La même interface accepte les entrées multimodales :
response = llm("Describe this image.", image="bus.jpg")
print(response.choices[0].message.content)Transmets des objets message natifs si tu as besoin de l’historique de conversation. Ils sont transférés sans modification.
Appels en flux continu et asynchrones#
Les arguments de requête du SDK sont transférés sans modification, y compris stream=True :
llm = LLM("gpt-6-luna")
for event in llm("Explain object detection.", stream=True):
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)Utilise async_call pour les requêtes simultanées :
import asyncio
from ultralytics import LLM
llm = LLM("gpt-6-luna")
async def main():
response = await llm.async_call("What is YOLO?")
print(response.output_text)
asyncio.run(main())Fournisseurs compatibles avec OpenAI#
LLM fonctionne avec les fournisseurs qui proposent une API Responses ou Chat Completions compatible avec OpenAI, notamment DeepSeek, Kimi, Z.AI GLM et OpenRouter. Définis le base_url du fournisseur, le nom du modèle et la clé API :
from ultralytics import LLM
llm = LLM(
"provider-model",
api="chat.completions",
base_url="https://provider.example/v1",
api_key="your-api-key",
)
response = llm("What tasks does YOLO support?")
print(response.choices[0].message.content)La même configuration fonctionne avec les serveurs locaux compatibles. Les noms de modèles, la prise en charge des images, les arguments de requête et les API prises en charge varient selon le fournisseur ; consulte donc la documentation associée.
Combiner YOLO et un LLM#
Exécute YOLO en premier, puis appelle le LLM uniquement lorsqu’une personne est détectée :
from ultralytics import LLM, YOLO
yolo = YOLO("yolo26n.pt")
llm = LLM("gpt-6-luna")
image = "https://ultralytics.com/images/bus.jpg"
result = yolo(image)[0]
# Appeler le LLM uniquement lorsque YOLO détecte une personne.
if any(result.names[int(cls)] == "person" for cls in result.boxes.cls):
response = llm("Describe the scene.", image=image)
print(response.output_text)Référence de l’API#
| Argument | Valeur par défaut | Description |
|---|---|---|
model | "gpt-6-luna" | Identifiant du modèle transmis au point de terminaison sélectionné |
api | "responses" | Format de l’API : "responses" ou "chat.completions" |
base_url | None | Point de terminaison compatible avec OpenAI, facultatif |
api_key | None | Clé API ; sinon, le SDK lit OPENAI_API_KEY |
prompt | None | Instruction ajoutée au début des requêtes textuelles simples et des requêtes avec image |
**kwargs | Arguments de requête par défaut du SDK ; les arguments de chaque appel remplacent les valeurs correspondantes du constructeur |
source accepte du texte, une liste de messages native ou un objet image. image accepte une URL d’image, un URI de données, un chemin, un tableau NumPy ou une image PIL. L’appel de llm() sans entrée et avec prompt configuré envoie uniquement l’invite.
LLM est réservé à l’inférence et n’est pas exposé via la CLI yolo. Il n’implémente pas train, val, export, track ni benchmark.
FAQ#
LLMutilise l’API Responses par défaut. Définisapi="chat.completions"pour les points de terminaison Chat Completions.Tu peux utiliser OpenAI ou un autre fournisseur doté d’une API compatible, comme DeepSeek, Kimi, Z.AI GLM ou OpenRouter. Utilise le nom du modèle, l’URL de base et la clé API du fournisseur.
Transmets l’invite comme premier argument, puis un chemin local, une URL, un URI de données, un tableau NumPy ou une image PIL via
image. La prise en charge des images dépend du modèle et du fournisseur sélectionnés.Non.
LLMfournit uniquement l’inférence synchrone et asynchrone. UtiliseYOLOd’Ultralytics pour l’entraînement, la validation, la prédiction, l’exportation, le suivi et l’évaluation comparative en vision par ordinateur.