Ultralytics YOLO27:

Интерфейс 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_urlNoneНеобязательная конечная точка, совместимая с OpenAI
api_keyNoneКлюч API; в противном случае SDK считывает OPENAI_API_KEY
promptNoneИнструкция, добавляемая перед обычными текстовыми запросами и запросами с изображениями
**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 предоставляет только синхронный и асинхронный инференс. Используй Ultralytics YOLO для обучения, валидации, предсказаний, экспорта, трекинга и бенчмаркинга компьютерного зрения.

Участники

Комментарии