LlamaIndex
Usa los modelos de cheapaimodel en LlamaIndex a través de la API compatible con OpenAI.
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 LlamaIndex | Valor | |
|---|---|---|
| Base URL | api_base | https://api.cheapaimodel.ai/v1 |
| Clave de API | api_key | La clave que creaste en la página Claves de API de la consola |
| ID del modelo | model | deepseek-v4-1-flash o cualquier ID del catálogo |
| Modelo de chat | is_chat_model | True |
| Ventana de contexto | context_window | La 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.
pip install llama-index-llms-openai-likeConsulta la longitud de contexto en la página del modelo, por ejemplo deepseek-v4-1-flash, y ponla en CONTEXT_WINDOW:
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:
from llama_index.core import Settings
Settings.llm = llmLos í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_modelesFalsede forma predeterminada, lo que envíacomplete, e inclusochat, al endpoint heredado de completions como un solo prompt. Nuestros modelos solo incluyen/v1/chat/completionsy/v1/responses. Defineis_chat_model=True. ValueError: Unknown model 'deepseek-v4-1-flash'. Please provide a valid OpenAI model name. Estás usandoOpenAIdellama_index.llms.openai, que solo acepta los nombres de modelo propios de OpenAI. UsaOpenAILike.Could not load OpenAI embedding modelal construir un índice.Settings.embed_modelsigue siendo el predeterminado de OpenAI. Asígnale un modelo de embeddings de otro proveedor o uno local.503conmodel_not_founden/v1/embeddings. Es la misma causa, pero conOPENAI_API_KEYyOPENAI_API_BASEdefinidas con tu clave de cheapaimodel y nuestra Base URL: el modelo de embeddings predeterminado las lee y nos pide un modelo de embeddings. Mejor pasaapi_keyyapi_baseaOpenAILikey asignaSettings.embed_model.400dekimi-k3.OpenAILikesiempre envíatemperature,0.1de forma predeterminada, y kimi-k3 solo acepta1o0.6. Pasatemperature=1.0. Consulta Límites de muestreo.- Una consulta hace varias solicitudes.
context_windowes 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.