Ultralytics YOLO27:

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#

ArgumentStandardwertBeschreibung
model"gpt-5.6-luna"An die ausgewählte Schnittstelle gesendete Modellkennung
api"responses"API-Format: "responses" oder "chat.completions"
base_urlNoneOptionaler OpenAI-kompatibler Endpunkt
api_keyNoneAPI-Schlüssel; andernfalls liest das SDK OPENAI_API_KEY aus
promptNoneAnweisung, die einfachem Text und Bildanfragen vorangestellt wird
**kwargsStandardmäß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#

  • LLM verwendet standardmäßig die Responses API. Lege api="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 image einen 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. LLM bietet ausschließlich synchrone und asynchrone Inferenz. Verwende Ultralytics YOLO für Training, Validierung, Vorhersage, Export, Tracking und Benchmarking im Bereich Computer Vision.

Mitwirkende

Kommentare