YOLO Vision 2026:

Интерфейс 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, data 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)

Локальные файлы и объекты изображений кодируются в виде data 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 работает с провайдерами, которые предоставляют Responses API или Chat Completions API, совместимые с OpenAI, включая 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_urlNoneНеобязательный эндпоинт, совместимый с OpenAI
api_keyNoneКлюч API; в противном случае SDK считывает OPENAI_API_KEY
promptNoneИнструкция, добавляемая в начало запросов с обычным текстом и изображениями
**kwargsАргументы запросов SDK по умолчанию; аргументы для конкретного вызова переопределяют соответствующие значения конструктора

source принимает текст, нативный список сообщений или объект изображения. image принимает URL изображения, data URI, путь, массив NumPy или изображение PIL. Вызов model() с настроенным prompt отправляет только сам промпт.

LLM предназначен только для инференса и недоступен через CLI yolo. Он не реализует train, val, export, track или benchmark.

FAQ#

  • LLM по умолчанию использует Responses API. Установи api="chat.completions" для эндпоинтов Chat Completions.

  • Ты можешь использовать OpenAI или другого провайдера с совместимым API, такого как DeepSeek, Kimi, Z.AI GLM или OpenRouter. Используй имя модели, базовый URL и ключ API провайдера.

  • Передай промпт в качестве первого аргумента, а локальный путь, URL, data URI, массив NumPy или изображение PIL — через image. Поддержка изображений зависит от выбранной модели и провайдера.

  • Нет. LLM обеспечивает только синхронный и асинхронный инференс. Используй YOLO от Ultralytics для обучения, валидации, предсказания, экспорта, трекинга и бенчмаркинга в компьютерном зрении.

Участники

Комментарии