Giao diện LLM của Ultralytics#
LLM là một giao diện nhỏ để gọi các mô hình ngôn ngữ và thị giác thông qua một API tương thích với OpenAI. Giao diện này chuẩn bị đầu vào văn bản hoặc hình ảnh, chuyển tiếp các đối số yêu cầu tới SDK Python chính thức của OpenAI và trả về đối tượng phản hồi gốc của SDK. Điều này giúp dễ dàng thêm tính năng suy luận ngôn ngữ hoặc thị giác bên cạnh một pipeline YOLO mà không cần bọc các loại phản hồi dành riêng cho nhà cung cấp.
API mặc định là responses; hãy sử dụng api="chat.completions" cho các nhà cung cấp chỉ triển khai Chat Completions.
Cài đặt#
Cài đặt Ultralytics với phần phụ thuộc LLM tùy chọn:
pip install "ultralytics[llm]"Đối với OpenAI, hãy thiết lập khóa API trong môi trường:
export OPENAI_API_KEY="your-api-key"Responses API#
Responses API là mặc định. Truyền một prompt và đọc output_text:
from ultralytics import LLM
llm = LLM("gpt-5.6-luna")
response = llm("What is YOLO?")
print(response.output_text)Đầu vào đa phương thức (Multimodal Input)#
Truyền một đường dẫn, URL HTTP, URI dữ liệu, mảng NumPy hoặc hình ảnh PIL thông qua image:
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)Các tệp cục bộ và đối tượng hình ảnh được mã hóa dưới dạng URI dữ liệu JPEG. Các mảng NumPy sử dụng thứ tự kênh BGR của OpenCV. Một chuỗi được truyền dưới dạng source, chẳng hạn như llm("bus.jpg"), được xử lý như văn bản; hãy sử dụng đối số image để gửi hình ảnh.
Sử dụng prompt cho một hướng dẫn được chia sẻ bởi mọi yêu cầu:
llm = LLM("gpt-5.6-luna", prompt="Answer in one sentence.")
response = llm("Describe this image.", image="bus.jpg")Chat Completions#
Chọn Chat Completions khi được yêu cầu bởi endpoint, và đọc cấu trúc phản hồi gốc của nó:
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)Giao diện tương tự chấp nhận đầu vào đa phương thức:
response = llm("Describe this image.", image="bus.jpg")
print(response.choices[0].message.content)Truyền các đối tượng thông điệp gốc khi bạn cần lịch sử cuộc trò chuyện. Chúng được chuyển tiếp mà không thay đổi.
Truyền phát (Streaming) và Cuộc gọi bất đồng bộ (Async Calls)#
Các đối số yêu cầu SDK đi qua mà không thay đổi, bao gồm stream=True:
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)Sử dụng async_call cho các yêu cầu đồng thời:
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())Các nhà cung cấp tương thích với OpenAI#
LLM hoạt động với các nhà cung cấp cung cấp Responses hoặc Chat Completions API tương thích với OpenAI, bao gồm DeepSeek, Kimi, Z.AI GLM, và OpenRouter. Đặt base_url, tên mô hình và khóa API của nhà cung cấp:
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)Cấu hình tương tự hoạt động với các máy chủ cục bộ tương thích. Tên mô hình, hỗ trợ hình ảnh, đối số yêu cầu và các API được hỗ trợ khác nhau tùy theo nhà cung cấp, vì vậy hãy kiểm tra tài liệu được liên kết của nhà cung cấp đó.
Kết hợp YOLO và một LLM#
Chạy YOLO trước, sau đó chỉ gọi LLM khi phát hiện thấy một người:
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)Tham chiếu API#
| Đối số | Mặc định | Mô tả |
|---|---|---|
model | "gpt-5.6-luna" | Mã định danh mô hình được gửi đến endpoint đã chọn |
api | "responses" | Định dạng API: "responses" hoặc "chat.completions" |
base_url | None | Endpoint tương thích với OpenAI tùy chọn |
api_key | None | Khóa API; nếu không, SDK sẽ đọc OPENAI_API_KEY |
prompt | None | Hướng dẫn được thêm vào trước các yêu cầu văn bản thuần túy và hình ảnh |
**kwargs | Các đối số yêu cầu SDK mặc định; các đối số theo mỗi lần gọi sẽ ghi đè lên các giá trị khởi tạo khớp nhau |
source chấp nhận văn bản, một danh sách thông điệp gốc hoặc một đối tượng hình ảnh. image chấp nhận URL hình ảnh, URI dữ liệu, đường dẫn, mảng NumPy hoặc hình ảnh PIL. Gọi model() với một prompt đã được cấu hình sẽ tự gửi prompt.
LLM chỉ dùng để suy luận và không được hiển thị thông qua yolo CLI. Nó không triển khai train, val, export, track hoặc benchmark.
Câu hỏi thường gặp#
LLMsử dụng Responses API theo mặc định. Đặtapi="chat.completions"cho các endpoint Chat Completions.Bạn có thể sử dụng OpenAI hoặc nhà cung cấp khác có API tương thích, chẳng hạn như DeepSeek, Kimi, Z.AI GLM, hoặc OpenRouter. Sử dụng tên mô hình, URL cơ sở và khóa API của nhà cung cấp.
Truyền prompt làm đối số đầu tiên và đường dẫn cục bộ, URL, URI dữ liệu, mảng NumPy hoặc hình ảnh PIL thông qua
image. Hỗ trợ hình ảnh phụ thuộc vào mô hình và nhà cung cấp đã chọn.Không.
LLMchỉ cung cấp tính năng suy luận đồng bộ và bất đồng bộ. Sử dụngYOLOcủa Ultralytics để huấn luyện, xác thực, dự đoán, xuất, theo dõi và đo đạc hiệu năng thị giác máy tính.