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-6-luna")
response = llm("What is YOLO?")
print(response.output_text)멀티모달 입력#
경로, HTTP URL, 데이터 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 데이터 URI로 인코딩됩니다. NumPy 배열에는 OpenCV의 BGR 채널 순서가 사용됩니다. llm("bus.jpg")과 같이 source에 전달된 문자열은 텍스트로 처리됩니다. 이미지를 보내려면 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은 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-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, 데이터 URI, 경로, NumPy 배열 또는 PIL 이미지를 받습니다. 입력을 지정하지 않고 prompt을 설정한 상태로 llm()를 호출하면 프롬프트만 전송됩니다.
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 키를 사용하세요.
프롬프트를 첫 번째 인수로 전달하고 로컬 경로, URL, 데이터 URI, NumPy 배열 또는 PIL 이미지를
image으로 전달하세요. 이미지 지원 여부는 선택한 모델과 공급자에 따라 달라집니다.아니요.
LLM은 동기 및 비동기 추론만 제공합니다. 컴퓨터 비전 학습, 검증, 예측, 내보내기, 추적, 벤치마킹에는 UltralyticsYOLO을 사용하세요.