Ultralytics LLM Interface#
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은 DeepSeek, Kimi, Z.AI GLM, OpenRouter를 포함하여 OpenAI 호환 Responses 또는 Chat Completions API를 노출하는 공급자와 함께 작동합니다. 공급자의 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_url | None | 선택적 OpenAI 호환 엔드포인트 |
api_key | None | API 키; 그렇지 않으면 SDK가 OPENAI_API_KEY을 읽습니다 |
prompt | None | 일반 텍스트 및 이미지 요청 앞에 추가되는 지시사항 |
**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 또는 DeepSeek, Kimi, Z.AI GLM, OpenRouter과 같이 호환되는 API를 제공하는 다른 공급자를 사용할 수 있습니다. 공급자의 모델 이름, 기본 URL, API 키를 사용하십시오.
첫 번째 인수로 프롬프트를 전달하고
image을 통해 로컬 경로, URL, 데이터 URI, NumPy 배열 또는 PIL 이미지를 전달합니다. 이미지 지원은 선택한 모델과 공급자에 따라 다릅니다.아니요.
LLM은 동기 및 비동기 추론만 제공합니다. 컴퓨터 비전 학습, 검증, 예측, 내보내기, 추적, 벤치마킹에는 UltralyticsYOLO을 사용하십시오.