Ultralytics YOLO27:
Get Started

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

Комментарии