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 또는 Chat Completions API를 제공하는 공급자와 함께 작동하며, 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-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를 통해 노출되지 않습니다. train, val, export, track 또는 benchmark을 구현하지 않습니다.

FAQ#

  • LLM은 기본적으로 Responses API를 사용합니다. Chat Completions 엔드포인트에는 api="chat.completions"을 설정합니다.

  • OpenAI 또는 호환 API를 제공하는 다른 공급자를 사용할 수 있습니다. 예를 들어 DeepSeek, Kimi, Z.AI GLM, OpenRouter 등이 있습니다. 공급자의 모델 이름, 기본 URL 및 API 키를 사용합니다.

  • 프롬프트를 첫 번째 인수로 전달하고, image을 통해 로컬 경로, URL, 데이터 URI, NumPy 배열 또는 PIL 이미지를 전달합니다. 이미지 지원 여부는 선택한 모델과 공급자에 따라 달라집니다.

  • 아니요. LLM은 동기 및 비동기 추론만 제공합니다. 컴퓨터 비전 학습, 검증, 예측, 내보내기, 트래킹 및 벤치마킹에는 Ultralytics의 YOLO을 사용합니다.

기여자

댓글