Ultralytics YOLO27:

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がデフォルトです。プロンプトを渡し、output_textを読み取ります。

from ultralytics import LLM

llm = LLM("gpt-5.6-luna")
response = llm("What is YOLO?")
print(response.output_text)

マルチモーダル入力#

imageを介して、パス、HTTP URL、データURI、NumPy配列、またはPIL画像を渡します。

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)

ローカルファイルと画像オブジェクトは、JPEGデータURIとしてエンコードされます。NumPy配列では、OpenCVのBGRチャンネル順序が使用されます。sourceとして渡された文字列(llm("bus.jpg")など)はテキストとして扱われます。画像を送信するには、image引数を使用してください。

すべてのリクエストで共有する指示には、promptを使用します。

llm = LLM("gpt-5.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-5.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-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)

同時実行するリクエストにはasync_callを使用します。

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互換プロバイダー#

LLMは、OpenAI互換のResponses APIまたはChat Completions APIを公開するプロバイダーに対応しており、DeepSeekKimiZ.AI GLMOpenRouterなどを利用できます。プロバイダーの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-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リファレンス#

引数デフォルト説明
model"gpt-5.6-luna"選択したエンドポイントに送信するモデル識別子
api"responses"API形式: "responses"または"chat.completions"
base_urlNoneオプションのOpenAI互換エンドポイント
api_keyNoneAPIキー。指定しない場合、SDKはOPENAI_API_KEYを読み取ります。
promptNoneプレーンテキストおよび画像リクエストの先頭に付加する指示
**kwargsデフォルトのSDKリクエスト引数。呼び出しごとの引数は、対応するコンストラクターの値を上書きします。

sourceは、テキスト、ネイティブのメッセージリスト、または画像オブジェクトを受け付けます。imageは、画像URL、データURI、パス、NumPy配列、またはPIL画像を受け付けます。設定済みのpromptを指定してmodel()を呼び出すと、プロンプトだけが送信されます。

LLMは推論専用であり、yolo CLIでは公開されていません。trainvalexporttrackbenchmarkは実装していません。

FAQ#

  • LLMはデフォルトでResponses APIを使用します。Chat Completionsエンドポイントにはapi="chat.completions"を設定してください。

  • OpenAI、または互換性のあるAPIを持つ他のプロバイダー(DeepSeekKimiZ.AI GLMOpenRouterなど)を使用できます。プロバイダーのモデル名、ベースURL、APIキーを使用してください。

  • プロンプトを第1引数として渡し、ローカルパス、URL、データURI、NumPy配列、またはPIL画像をimageを介して渡します。画像サポートは、選択したモデルとプロバイダーによって異なります。

  • いいえ。LLMは同期および非同期の推論のみを提供します。コンピュータービジョンのトレーニング、検証、予測、エクスポート、トラッキング、ベンチマークには、UltralyticsのYOLOを使用してください。

貢献者

コメント