cheapaimodel

LlamaIndex

Usa los modelos de cheapaimodel en LlamaIndex a través de la API compatible con OpenAI.

Copiar

LlamaIndex se conecta a servicios compatibles con OpenAI mediante OpenAILike, del paquete llama-index-llms-openai-like. Como no puede consultar los detalles de un modelo a partir de un ID que no conoce, tú defines dos de ellos: que es un modelo de chat y su ventana de contexto.

Parámetro de LlamaIndexValor
Base URLapi_basehttps://api.cheapaimodel.ai/v1
Clave de APIapi_keyLa clave que creaste en la página Claves de API de la consola
ID del modelomodeldeepseek-v4-1-flash o cualquier ID del catálogo
Modelo de chatis_chat_modelTrue
Ventana de contextocontext_windowLa longitud de contexto del modelo en tokens, que aparece en su página del catálogo

Configuración

Los paquetes actuales de LlamaIndex requieren Python 3.10 o posterior.

Terminal
pip install llama-index-llms-openai-like

Consulta la longitud de contexto en la página del modelo, por ejemplo deepseek-v4-1-flash, y ponla en CONTEXT_WINDOW:

main.py
import os
from llama_index.core.llms import ChatMessage
from llama_index.llms.openai_like import OpenAILike

CONTEXT_WINDOW = ...  # the context length from the model's page, in tokens

llm = OpenAILike(
    model="deepseek-v4-1-flash",
    api_base="https://api.cheapaimodel.ai/v1",
    api_key=os.environ["CHEAPAIMODEL_API_KEY"],
    is_chat_model=True,
    context_window=CONTEXT_WINDOW,
)

response = llm.complete("Explain recursion in one sentence.")
print(response.text)

# Streaming
messages = [ChatMessage(role="user", content="Write a haiku about the sea.")]
for chunk in llm.stream_chat(messages):
    print(chunk.delta, end="", flush=True)

Con is_chat_model=True, todas las llamadas, incluida complete, van a /v1/chat/completions.

Úsalo en todo LlamaIndex

Asígnalo en Settings para que sea el modelo predeterminado de los índices, los motores de consulta y los motores de chat:

main.py
from llama_index.core import Settings

Settings.llm = llm

Los índices vectoriales también necesitan un modelo de embeddings, y Settings.embed_model usa de forma predeterminada el de OpenAI. cheapaimodel todavía no tiene modelos de embeddings, así que asigna a Settings.embed_model un modelo de embeddings de otro proveedor o uno local. No lo apuntes a nuestra Base URL.

Errores comunes

  • Las solicitudes van a /v1/completions. is_chat_model es False de forma predeterminada, lo que envía complete, e incluso chat, al endpoint heredado de completions como un solo prompt. Nuestros modelos solo incluyen /v1/chat/completions y /v1/responses. Define is_chat_model=True.
  • ValueError: Unknown model 'deepseek-v4-1-flash'. Please provide a valid OpenAI model name. Estás usando OpenAI de llama_index.llms.openai, que solo acepta los nombres de modelo propios de OpenAI. Usa OpenAILike.
  • Could not load OpenAI embedding model al construir un índice. Settings.embed_model sigue siendo el predeterminado de OpenAI. Asígnale un modelo de embeddings de otro proveedor o uno local.
  • 503 con model_not_found en /v1/embeddings. Es la misma causa, pero con OPENAI_API_KEY y OPENAI_API_BASE definidas con tu clave de cheapaimodel y nuestra Base URL: el modelo de embeddings predeterminado las lee y nos pide un modelo de embeddings. Mejor pasa api_key y api_base a OpenAILike y asigna Settings.embed_model.
  • 400 de kimi-k3. OpenAILike siempre envía temperature, 0.1 de forma predeterminada, y kimi-k3 solo acepta 1 o 0.6. Pasa temperature=1.0. Consulta Límites de muestreo.
  • Una consulta hace varias solicitudes. context_window es de 3900 tokens de forma predeterminada, y LlamaIndex divide el texto recuperado para que quepa, así que un motor de consulta envía más solicitudes de las necesarias. Defínelo con la longitud de contexto del modelo.

Para errores de Base URL, como olvidar /v1, consulta Base URL.

Copiar
Abrir en

En esta página