Ultralytics LLMインターフェース#
LLMは、OpenAI互換APIを通じて言語モデルやビジョンモデルを呼び出すための小規模なインターフェースです。テキストまたは画像の入力を準備し、リクエスト引数を公式のOpenAI Python SDKに渡して、SDKのネイティブなレスポンスオブジェクトを返します。これにより、プロバイダー固有のレスポンスタイプをラップすることなく、YOLOパイプラインに言語推論やビジョン推論を簡単に追加できます。
デフォルトのAPIはresponsesです。Chat Completionsのみを実装するプロバイダーにはapi="chat.completions"を使用してください。
インストール#
オプションのLLM依存関係を含めてUltralyticsをインストールします。
pip install "ultralytics[llm]"OpenAIを使用する場合は、環境変数にAPIキーを設定します。
export OPENAI_API_KEY="your-api-key"Responses API#
デフォルトではResponses APIを使用します。promptを渡してoutput_textを読み取ります。
from ultralytics import LLM
llm = LLM("gpt-6-luna")
response = llm("What is YOLO?")
print(response.output_text)マルチモーダル入力#
パス、HTTP URL、data URI、NumPy配列、またはPIL画像を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)ローカルファイルと画像オブジェクトは、JPEG data URIとしてエンコードされます。NumPy配列にはOpenCVのBGRチャンネル順を使用します。sourceとして渡された文字列(llm("bus.jpg")など)はテキストとして扱われます。画像を送信するには、image引数を使用してください。
すべてのリクエストに共通する指示にはpromptを使用します。
llm = LLM("gpt-6-luna", prompt="Answer in one sentence.")
response = llm("Describe this image.", image="bus.jpg")Chat Completions#
エンドポイントで必要な場合はChat Completionsを選択し、ネイティブなレスポンス形式を読み取ります。
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)同じインターフェースでマルチモーダル入力も受け付けます。
response = llm("Describe this image.", image="bus.jpg")
print(response.choices[0].message.content)会話履歴が必要な場合は、ネイティブなメッセージオブジェクトを渡します。メッセージオブジェクトは変更されずに転送されます。
ストリーミングと非同期呼び出し#
stream=Trueを含むSDKのリクエスト引数は、変更されずに渡されます。
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)同時リクエストにはasync_callを使用します。
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互換プロバイダー#
LLMは、Responses APIまたはChat Completions APIに対応するOpenAI互換プロバイダーで動作します。対象にはDeepSeek、Kimi、Z.AI GLM、OpenRouterなどがあります。プロバイダーのbase_url、モデル名、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)同じ設定は、互換性のあるローカルサーバーでも使用できます。モデル名、画像サポート、リクエスト引数、対応APIはプロバイダーによって異なるため、リンク先のドキュメントを確認してください。
YOLOとLLMを組み合わせる#
まずYOLOを実行し、人が検出された場合にのみLLMを呼び出します。
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]
# YOLOが人を検出した場合にのみLLMを呼び出します。
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リファレンス#
| 引数 | デフォルト | 説明 |
|---|---|---|
model | "gpt-6-luna" | 選択したエンドポイントに送信するモデル識別子 |
api | "responses" | API形式:"responses"または"chat.completions" |
base_url | None | オプションのOpenAI互換エンドポイント |
api_key | None | APIキー。指定しない場合、SDKはOPENAI_API_KEYを読み取ります |
prompt | None | プレーンテキストと画像のリクエストに先頭追加する指示 |
**kwargs | デフォルトのSDKリクエスト引数。呼び出しごとの引数は、コンストラクターの同じ値を上書きします |
sourceはテキスト、ネイティブなメッセージリスト、または画像オブジェクトを受け付けます。imageは画像URL、data URI、パス、NumPy配列、またはPIL画像を受け付けます。入力なしでllm()を呼び出し、promptを設定している場合は、promptのみを送信します。
LLMは推論専用であり、yolo CLIでは公開されていません。また、train、val、export、track、benchmarkは実装していません。
よくある質問#
LLMはデフォルトでResponses APIを使用します。Chat Completionsエンドポイントを使用する場合は、api="chat.completions"を設定してください。OpenAI、または互換性のあるAPIを備えた他のプロバイダーを使用できます。たとえば、DeepSeek、Kimi、Z.AI GLM、OpenRouterなどがあります。プロバイダーのモデル名、ベースURL、APIキーを使用してください。
最初の引数としてpromptを渡し、
imageを通じてローカルパス、URL、data URI、NumPy配列、またはPIL画像を指定します。画像のサポート状況は、選択したモデルとプロバイダーによって異なります。いいえ。
LLMは同期および非同期の推論のみを提供します。コンピュータービジョンの学習、検証、予測、エクスポート、トラッキング、ベンチマークには、UltralyticsのYOLOを使用してください。