Ultralytics-LLM-Schnittstelle#
LLM ist eine schlanke Schnittstelle, mit der du Sprach- und Bildverarbeitungsmodelle über eine OpenAI-kompatible API aufrufst. Sie bereitet Text- oder Bildeingaben auf, leitet Anfrageargumente an das offizielle OpenAI Python SDK weiter und gibt das native Antwortobjekt des SDK zurück. So kannst du Sprach- oder Bildverarbeitung mit Schlussfolgerungsfähigkeit einfach neben einer YOLO-Pipeline einsetzen, ohne anbieterspezifische Antworttypen umhüllen zu müssen.
Die Standard-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 Standard-API. Übergib einen Prompt und lies output_text aus:
from ultralytics import LLM
llm = LLM("gpt-6-luna")
response = llm("What is YOLO?")
print(response.output_text)Multimodale Eingabe#
Übergib über image einen Pfad, eine HTTP-URL, eine Daten-URI, ein NumPy-Array oder ein PIL-Bild:
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)Lokale Dateien und Bildobjekte werden als JPEG-Daten-URIs kodiert. NumPy-Arrays verwenden die BGR-Kanalreihenfolge von OpenCV. Eine als source übergebene Zeichenfolge, etwa 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-6-luna", prompt="Answer in one sentence.")
response = llm("Describe this image.", image="bus.jpg")Chat Completions#
Wähle Chat Completions, wenn der Endpunkt dies erfordert, und lies das native Antwortformat aus:
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)Dieselbe Schnittstelle akzeptiert auch 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-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 gleichzeitige Anfragen:
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())OpenAI-kompatible Anbieter#
LLM funktioniert mit Anbietern, die eine OpenAI-kompatible Responses API oder Chat Completions API bereitstellen, darunter DeepSeek, Kimi, Z.AI GLM und OpenRouter. Lege base_url des Anbieters, den Modellnamen und den API-Schlüssel 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 verlinkten Dokumentation nach.
YOLO mit einem LLM kombinieren#
Führe zuerst YOLO aus und rufe das LLM nur auf, wenn eine Person erkannt wird:
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]
# Rufe das LLM nur auf, wenn YOLO eine Person erkennt.
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 | Standard | Beschreibung |
|---|---|---|
model | "gpt-6-luna" | Modellkennung, die an den ausgewählten Endpunkt gesendet wird |
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 einfache Text- und Bildanfragen vorangestellt wird |
**kwargs | Standardmäßige Anfrageargumente des SDK; Argumente pro Aufruf überschreiben übereinstimmende Konstruktorwerte |
source akzeptiert Text, eine native Nachrichtenliste oder ein Bildobjekt. image akzeptiert eine Bild-URL, Daten-URI, einen Pfad, ein NumPy-Array oder ein PIL-Bild. Wenn du llm() ohne Eingabe und mit konfiguriertem prompt aufrufst, wird nur der Prompt gesendet.
LLM dient ausschließlich der Inferenz und ist nicht über die yolo-CLI verfügbar. Es implementiert weder train noch val, export, track oder benchmark.
Häufig gestellte Fragen#
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, zum Beispiel 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 Daten-URI, ein NumPy-Array oder ein PIL-Bild. Die Bildunterstützung hängt vom ausgewählten Modell und Anbieter ab.Nein.
LLMbietet nur synchrone und asynchrone Inferenz. Verwende UltralyticsYOLOfür das Training, die Validierung, Vorhersagen, den Export, das Tracking und das Benchmarking von Computer-Vision-Modellen.