Giao diện LLM của Ultralytics#
LLM là giao diện gọn nhẹ để gọi các model ngôn ngữ và thị giác thông qua API tương thích OpenAI. Giao diện chuẩn bị đầu vào dạng văn bản hoặc hình ảnh, chuyển tiếp các đối số yêu cầu đến OpenAI Python SDK chính thức và trả về đối tượng phản hồi gốc của SDK. Nhờ đó, bạn có thể dễ dàng bổ sung khả năng suy luận ngôn ngữ hoặc thị giác bên cạnh pipeline YOLO mà không cần bọc các kiểu phản hồi riêng của từng nhà cung cấp.
API mặc định là responses; 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 cùng dependency LLM tùy chọn:
pip install "ultralytics[llm]"Với OpenAI, đặt API key trong môi trường:
export OPENAI_API_KEY="your-api-key"Responses API#
Responses API là mặc định. Truyền prompt và đọc output_text:
from ultralytics import LLM
llm = LLM("gpt-6-luna")
response = llm("What is YOLO?")
print(response.output_text)Đầu vào đa phương thức#
Truyền đường dẫn, URL HTTP, data URI, mảng NumPy hoặc ảnh PIL qua 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)Các tệp cục bộ và đối tượng ảnh được mã hóa thành data URI JPEG. Mảng NumPy sử dụng thứ tự kênh BGR của OpenCV. Chuỗi được truyền dưới dạng source, chẳng hạn llm("bus.jpg"), sẽ được xử lý như văn bản; dùng đối số image để gửi ảnh.
Dùng prompt cho chỉ thị áp dụng chung cho mọi yêu cầu:
llm = LLM("gpt-6-luna", prompt="Answer in one sentence.")
response = llm("Describe this image.", image="bus.jpg")Chat Completions#
Chọn Chat Completions khi endpoint yêu cầu, rồi đọc cấu trúc phản hồi gốc:
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)Giao diện tương tự cũng 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 message gốc khi cần lịch sử hội thoại. Các đối tượng này được chuyển tiếp nguyên trạng.
Gọi streaming và bất đồng bộ#
Các đối số yêu cầu của SDK được chuyển tiếp nguyên trạng, bao gồm stream=True:
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)Dùng async_call cho các yêu cầu đồng thời:
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())Nhà cung cấp tương thích OpenAI#
LLM hoạt động với các nhà cung cấp cung cấp API Responses hoặc Chat Completions tương thích OpenAI, bao gồm DeepSeek, Kimi, Z.AI GLM và OpenRouter. Đặt base_url, tên model và API key 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ự cũng hoạt động với các máy chủ cục bộ tương thích. Tên model, khả năng hỗ trợ ảnh, đối số yêu cầu và API được hỗ trợ khác nhau tùy nhà cung cấp, vì vậy hãy xem tài liệu được liên kết của nhà cung cấp đó.
Kết hợp YOLO và LLM#
Chạy YOLO trước, sau đó chỉ gọi LLM khi phát hiện người:
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]
# Chỉ gọi LLM khi YOLO phát hiện người.
if any(result.names[int(cls)] == "person" for cls in result.boxes.cls):
response = llm("Describe the scene.", image=image)
print(response.output_text)Tài liệu tham khảo API#
| Đối số | Mặc định | Mô tả |
|---|---|---|
model | "gpt-6-luna" | Định danh model đượ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 OpenAI tùy chọn |
api_key | None | API key; nếu không, SDK sẽ đọc OPENAI_API_KEY |
prompt | None | Chỉ thị được thêm vào trước các yêu cầu văn bản thuần và hình ảnh |
**kwargs | Các đối số yêu cầu SDK mặc định; đối số theo từng lần gọi sẽ ghi đè các giá trị tương ứng trong constructor |
source chấp nhận văn bản, danh sách message gốc hoặc đối tượng ảnh. image chấp nhận URL ảnh, data URI, đường dẫn, mảng NumPy hoặc ảnh PIL. Gọi llm() không có đầu vào và có prompt đã cấu hình sẽ chỉ gửi prompt.
LLM chỉ dùng cho inference và không được cung cấp qua CLI yolo. Thành phần này không triển khai train, val, export, track hoặc benchmark.
Câu hỏi thường gặp#
LLMmặc định sử dụng Responses API. Đặtapi="chat.completions"cho các endpoint Chat Completions.Bạn có thể dùng OpenAI hoặc một nhà cung cấp khác có API tương thích, chẳng hạn DeepSeek, Kimi, Z.AI GLM hoặc OpenRouter. Hãy dùng tên model, URL cơ sở và API key của nhà cung cấp.
Truyền prompt làm đối số thứ nhất, và truyền đường dẫn cục bộ, URL, data URI, mảng NumPy hoặc ảnh PIL qua
image. Khả năng hỗ trợ ảnh tùy thuộc model và nhà cung cấp được chọn.Không.
LLMchỉ cung cấp inference đồng bộ và bất đồng bộ. Dùng UltralyticsYOLOđể huấn luyện, validation, prediction, export, tracking và benchmark thị giác máy tính.