Ultralytics YOLO27:
Get Started

Interfaz LLM de Ultralytics#

LLM es una interfaz ligera para llamar a modelos de lenguaje y visión a través de una API compatible con OpenAI. Prepara la entrada de texto o imagen, reenvía los argumentos de la solicitud al SDK oficial de Python de OpenAI y devuelve el objeto de respuesta nativo del SDK. Así es fácil añadir razonamiento lingüístico o visual junto a una canalización de YOLO sin envolver tipos de respuesta específicos de cada proveedor.

La API predeterminada es responses; usa api="chat.completions" con los proveedores que solo implementen Chat Completions.

Instalación#

Instala Ultralytics con la dependencia opcional de LLM:

pip install "ultralytics[llm]"

Para OpenAI, define la clave de API en el entorno:

export OPENAI_API_KEY="your-api-key"

API Responses#

La API Responses es la opción predeterminada. Pasa una indicación y lee output_text:

from ultralytics import LLM

llm = LLM("gpt-6-luna")
response = llm("What is YOLO?")
print(response.output_text)

Entrada multimodal#

Pasa una ruta, una URL HTTP, un URI de datos, una matriz NumPy o una imagen PIL mediante 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)

Los archivos locales y los objetos de imagen se codifican como URI de datos JPEG. Las matrices NumPy usan el orden de canales BGR de OpenCV. Una cadena que se pase como source, como llm("bus.jpg"), se interpreta como texto; usa el argumento image para enviar una imagen.

Usa prompt para una instrucción común a todas las solicitudes:

llm = LLM("gpt-6-luna", prompt="Answer in one sentence.")
response = llm("Describe this image.", image="bus.jpg")

Chat Completions#

Selecciona Chat Completions cuando el punto de acceso lo requiera y lee el formato de respuesta nativo:

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)

La misma interfaz admite entradas multimodales:

response = llm("Describe this image.", image="bus.jpg")
print(response.choices[0].message.content)

Pasa objetos de mensaje nativos cuando necesites un historial de conversación. Se reenvían sin cambios.

Llamadas en streaming y asíncronas#

Los argumentos de solicitud del SDK se reenvían sin cambios, incluido 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)

Usa async_call para solicitudes simultáneas:

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())

Proveedores compatibles con OpenAI#

LLM funciona con proveedores que ofrecen una API Responses o Chat Completions compatible con OpenAI, como DeepSeek, Kimi, Z.AI GLM y OpenRouter. Define el base_url, el nombre del modelo y la clave de API del proveedor:

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)

La misma configuración funciona con servidores locales compatibles. Los nombres de modelos, la compatibilidad con imágenes, los argumentos de solicitud y las API disponibles varían según el proveedor, así que consulta la documentación enlazada.

Combina YOLO y un LLM#

Ejecuta YOLO primero y, después, llama al LLM solo si detecta a una persona:

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]
# Llama al LLM solo cuando YOLO detecte a una persona.
if any(result.names[int(cls)] == "person" for cls in result.boxes.cls):
    response = llm("Describe the scene.", image=image)
    print(response.output_text)

Referencia de la API#

ArgumentoPredeterminadoDescripción
model"gpt-6-luna"Identificador del modelo enviado al punto de acceso seleccionado
api"responses"Formato de la API: "responses" o "chat.completions"
base_urlNonePunto de acceso opcional compatible con OpenAI
api_keyNoneClave de API; de lo contrario, el SDK lee OPENAI_API_KEY
promptNoneInstrucción que se antepone a las solicitudes de texto sin formato y de imagen
**kwargsArgumentos de solicitud predeterminados del SDK; los argumentos de cada llamada sustituyen los valores correspondientes del constructor

source acepta texto, una lista de mensajes nativa o un objeto de imagen. image acepta una URL de imagen, un URI de datos, una ruta, una matriz NumPy o una imagen PIL. Si llamas a llm() sin entrada y con prompt configurado, se envía solo la indicación.

LLM es solo para inferencia y no está disponible a través de la CLI yolo. No implementa train, val, export, track ni benchmark.

Preguntas frecuentes#

  • LLM usa la API Responses de forma predeterminada. Define api="chat.completions" para los puntos de acceso de Chat Completions.

  • Puedes usar OpenAI u otro proveedor con una API compatible, como DeepSeek, Kimi, Z.AI GLM u OpenRouter. Usa el nombre del modelo, la URL base y la clave de API del proveedor.

  • Pasa la indicación como primer argumento y una ruta local, una URL, un URI de datos, una matriz NumPy o una imagen PIL mediante image. La compatibilidad con imágenes depende del modelo y del proveedor seleccionados.

  • No. LLM solo ofrece inferencia síncrona y asíncrona. Usa YOLO de Ultralytics para entrenar, validar, predecir, exportar, realizar seguimiento y comparar el rendimiento de modelos de visión artificial.

Comentarios