Ultralytics LLM-Schnittstelle#
LLM ist eine kleine Schnittstelle, über die du Sprach- und Bildmodelle mittels einer OpenAI-kompatiblen API aufrufen kannst. Sie bereitet Text- oder Bildeingaben vor, leitet Anfrageargumente an das offizielle OpenAI Python SDK weiter und gibt das native Antwortobjekt des SDK zurück. Dadurch kannst du Sprach- oder Bildverständnis neben einer YOLO-Pipeline einfach hinzufügen, ohne anbieterspezifische Antworttypen kapseln zu müssen.
Die standardmäßige API ist responses; verwende api="chat.completions" für Anbieter, die nur Chat Completions implementieren.
Installation#
Installiere Ultralytics mit der optionalen LLM-Abhängigkeit:
pip install "ultralytics[llm]"Lege für OpenAI den API-Schlüssel in der Umgebung fest:
export OPENAI_API_KEY="your-api-key"Responses API#
Die Responses API ist die Standardeinstellung. Übergib einen Prompt und lies output_text aus:
from ultralytics import LLM
llm = LLM("gpt-5.6-luna")
response = llm("What is YOLO?")
print(response.output_text)Multimodale Eingabe#
Übergib über image einen Pfad, eine HTTP-URL, eine Data-URI, ein NumPy-Array oder ein PIL-Bild:
from ultralytics import LLM
llm = LLM("gpt-5.6-luna")
response = llm("What is happening in this image?", image="https://ultralytics.com/images/bus.jpg")
print(response.output_text)Lokale Dateien und Bildobjekte werden als JPEG-Data-URIs codiert. NumPy-Arrays verwenden die BGR-Kanalreihenfolge von OpenCV. Ein String, der als source übergeben wird, beispielsweise llm("bus.jpg"), wird als Text behandelt; verwende das Argument image, um ein Bild zu senden.
Verwende prompt für eine Anweisung, die für jede Anfrage gilt:
llm = LLM("gpt-5.6-luna", prompt="Answer in one sentence.")
response = llm("Describe this image.", image="bus.jpg")Chat Completions#
Wähle Chat Completions aus, wenn der Endpunkt dies erfordert, und lies die native Antwortstruktur aus:
from ultralytics import LLM
llm = LLM("gpt-5.6-luna", api="chat.completions")
response = llm("What is non-maximum suppression?")
print(response.choices[0].message.content)Dieselbe Schnittstelle akzeptiert multimodale Eingaben:
response = llm("Describe this image.", image="bus.jpg")
print(response.choices[0].message.content)Übergib native Nachrichtenobjekte, wenn du den Gesprächsverlauf benötigst. Sie werden unverändert weitergeleitet.
Streaming und asynchrone Aufrufe#
Anfrageargumente des SDK werden unverändert weitergereicht, einschließlich stream=True:
llm = LLM("gpt-5.6-luna")
for event in llm("Explain object detection.", stream=True):
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)Verwende async_call für nebenläufige Anfragen:
import asyncio
from ultralytics import LLM
llm = LLM("gpt-5.6-luna")
async def main():
response = await llm.async_call("What is YOLO?")
print(response.output_text)
asyncio.run(main())OpenAI-kompatible Anbieter#
LLM funktioniert mit Anbietern, die eine OpenAI-kompatible Responses- oder Chat-Completions-API bereitstellen, darunter DeepSeek, Kimi, Z.AI GLM und OpenRouter. Lege base_url, den Modellnamen und den API-Schlüssel des Anbieters fest:
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)Dieselbe Konfiguration funktioniert mit kompatiblen lokalen Servern. Modellnamen, Bildunterstützung, Anfrageargumente und unterstützte APIs unterscheiden sich je nach Anbieter. Sieh daher in der verknüpften Dokumentation nach.
YOLO und ein LLM kombinieren#
Führe zuerst YOLO aus und rufe das LLM anschließend nur auf, wenn eine Person erkannt wurde:
from ultralytics import LLM, YOLO
yolo = YOLO("yolo26n.pt")
llm = LLM("gpt-5.6-luna")
image = "https://ultralytics.com/images/bus.jpg"
result = yolo(image)[0]
# Call the LLM only when YOLO detects a person.
if any(result.names[int(cls)] == "person" for cls in result.boxes.cls):
response = llm("Describe the scene.", image=image)
print(response.output_text)API-Referenz#
| Argument | Standardwert | Beschreibung |
|---|---|---|
model | "gpt-5.6-luna" | An die ausgewählte Schnittstelle gesendete Modellkennung |
api | "responses" | API-Format: "responses" oder "chat.completions" |
base_url | None | Optionaler OpenAI-kompatibler Endpunkt |
api_key | None | API-Schlüssel; andernfalls liest das SDK OPENAI_API_KEY aus |
prompt | None | Anweisung, die einfachem Text und Bildanfragen vorangestellt wird |
**kwargs | Standardmäßige Anfrageargumente des SDK; Argumente pro Aufruf überschreiben übereinstimmende Werte des Konstruktors |
source akzeptiert Text, eine native Nachrichtenliste oder ein Bildobjekt. image akzeptiert eine Bild-URL, eine Data-URI, einen Pfad, ein NumPy-Array oder ein PIL-Bild. Wenn model() mit einem konfigurierten prompt aufgerufen wird, wird nur der Prompt gesendet.
LLM ist ausschließlich für die Inferenz vorgesehen und wird nicht über die yolo-CLI bereitgestellt. Es implementiert train, val, export, track oder benchmark nicht.
FAQ#
LLMverwendet standardmäßig die Responses API. Legeapi="chat.completions"für Chat-Completions-Endpunkte fest.Du kannst OpenAI oder einen anderen Anbieter mit einer kompatiblen API verwenden, beispielsweise DeepSeek, Kimi, Z.AI GLM oder OpenRouter. Verwende den Modellnamen, die Basis-URL und den API-Schlüssel des Anbieters.
Übergib den Prompt als erstes Argument und über
imageeinen lokalen Pfad, eine URL, eine Data-URI, ein NumPy-Array oder ein PIL-Bild. Die Bildunterstützung hängt vom ausgewählten Modell und Anbieter ab.Nein.
LLMbietet ausschließlich synchrone und asynchrone Inferenz. Verwende UltralyticsYOLOfür Training, Validierung, Vorhersage, Export, Tracking und Benchmarking im Bereich Computer Vision.