Интерфейс Ultralytics для LLM#
LLM — это простой интерфейс для обращения к языковым и визуальным моделям через API, совместимый с OpenAI. Он подготавливает текстовый или графический ввод, передаёт аргументы запроса в официальный Python SDK OpenAI и возвращает исходный объект ответа SDK. Благодаря этому языковое или визуальное рассуждение легко добавить в конвейер YOLO, не оборачивая типы ответов конкретных поставщиков.
По умолчанию используется API responses; для поставщиков, реализующих только Chat Completions, используй api="chat.completions".
Установка#
Установи Ultralytics с необязательной зависимостью для LLM:
pip install "ultralytics[llm]"Для OpenAI задай ключ API в окружении:
export OPENAI_API_KEY="your-api-key"API Responses#
По умолчанию используется API Responses. Передай подсказку и прочитай output_text:
from ultralytics import LLM
llm = LLM("gpt-6-luna")
response = llm("What is YOLO?")
print(response.output_text)Мультимодальный ввод#
Передай путь, URL-адрес HTTP, 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)Локальные файлы и объекты изображений кодируются в URI данных JPEG. В массивах NumPy используется порядок каналов BGR из OpenCV. Строка, переданная как source, например llm("bus.jpg"), трактуется как текст; для отправки изображения используй аргумент 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)Если нужна история диалога, передавай исходные объекты сообщений. Они пересылаются без изменений.
Потоковая передача и асинхронные вызовы#
Аргументы запросов SDK передаются без изменений, в том числе 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)Используй 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 работает с поставщиками, предлагающими совместимый с OpenAI API Responses или Chat Completions, включая 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-6-luna")
image = "https://ultralytics.com/images/bus.jpg"
result = yolo(image)[0]
# Вызывай LLM только тогда, когда YOLO обнаруживает человека.
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. Если вызвать llm() без входных данных и задать prompt, отправится только подсказка.
LLM предназначен только для инференса и недоступен через CLI yolo. В нём не реализованы train, val, export, track и benchmark.
Часто задаваемые вопросы#
По умолчанию
LLMиспользует API Responses. Для конечных точек Chat Completions задайapi="chat.completions".Можно использовать OpenAI или другого поставщика с совместимым API, например DeepSeek, Kimi, Z.AI GLM или OpenRouter. Укажи название модели, базовый URL и ключ API поставщика.
Передай подсказку первым аргументом, а локальный путь, URL, URI данных, массив NumPy или изображение PIL — через
image. Поддержка изображений зависит от выбранной модели и поставщика.Нет.
LLMобеспечивает только синхронный и асинхронный инференс. Для обучения, валидации, предсказаний, экспорта, отслеживания и тестирования производительности моделей компьютерного зрения используй UltralyticsYOLO.