Интерфейс LLM Ultralytics#
LLM — это небольшой интерфейс для вызова языковых и визуальных моделей через API, совместимый с OpenAI. Он подготавливает текстовые или графические входные данные, передаёт аргументы запроса в официальный Python SDK OpenAI и возвращает собственный объект ответа SDK. Это упрощает добавление языкового или визуального рассуждения рядом с конвейером YOLO без обёртывания специфичных для провайдера типов ответов.
API по умолчанию — responses; используй api="chat.completions" для провайдеров, которые реализуют только Chat Completions.
Установка#
Установи Ultralytics с дополнительной зависимостью для LLM:
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)Мультимодальный ввод#
Передай путь, HTTP URL, URI данных, массив NumPy или изображение PIL через 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)Локальные файлы и объекты изображений кодируются как URI данных JPEG. В массивах NumPy используется порядок каналов BGR из OpenCV. Строка, переданная как 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)Передавай собственные объекты сообщений, если нужна история диалога. Они передаются без изменений.
Потоковая передача и асинхронные вызовы#
Аргументы запросов SDK передаются без изменений, включая 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)Используй 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 работает с провайдерами, предоставляющими совместимый с 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-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. Вызов model() с настроенным prompt отправляет только промпт.
LLM предназначен только для инференса и не предоставляется через CLI yolo. Он не реализует train, val, export, track или benchmark.
Часто задаваемые вопросы#
LLMпо умолчанию использует Responses API. Укажиapi="chat.completions"для конечных точек Chat Completions.Можно использовать OpenAI или другого провайдера с совместимым API, например DeepSeek, Kimi, Z.AI GLM или OpenRouter. Используй имя модели, базовый URL и ключ API провайдера.
Передай промпт первым аргументом, а локальный путь, URL, URI данных, массив NumPy или изображение PIL — через
image. Поддержка изображений зависит от выбранной модели и провайдера.Нет.
LLMпредоставляет только синхронный и асинхронный инференс. Используй UltralyticsYOLOдля обучения, валидации, предсказаний, экспорта, трекинга и бенчмаркинга компьютерного зрения.