LlamaIndex
透過 OpenAI 相容 API 在 LlamaIndex 中使用 cheapaimodel 的模型。
LlamaIndex 透過 llama-index-llms-openai-like 套件的 OpenAILike 連接 OpenAI 相容服務。它無法從不認識的模型 ID 查出模型資訊,所以有兩項要你自己設定:這是對話模型,以及它的上下文長度。
| LlamaIndex 設定 | 值 | |
|---|---|---|
| Base URL | api_base | https://api.cheapaimodel.ai/v1 |
| API Key | api_key | 你在控制台 API Key 頁面建立的 Key |
| 模型 ID | model | deepseek-v4-1-flash,或目錄中的任一模型 ID |
| 對話模型 | is_chat_model | True |
| 上下文長度 | context_window | 模型的上下文長度(token 數),見目錄中該模型的頁面 |
設定
目前版本的 LlamaIndex 套件需要 Python 3.10 以上。
pip install llama-index-llms-openai-like在模型頁面查出上下文長度,例如 deepseek-v4-1-flash,填入 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)設定 is_chat_model=True 後,每次呼叫(包括 complete)都會送往 /v1/chat/completions。
在整個 LlamaIndex 中使用
把它設在 Settings 上,就成為索引、查詢引擎與對話引擎的預設模型:
from llama_index.core import Settings
Settings.llm = llm向量索引還需要 embedding 模型,而 Settings.embed_model 預設是 OpenAI 的。cheapaimodel 目前沒有 embeddings 模型,請把 Settings.embed_model 設為其他供應商的 embedding 模型或本機模型,不要指向我們的 Base URL。
常見錯誤
- 請求送往
/v1/completions。is_chat_model預設為False,會把complete,甚至chat,都合成單一提示詞送往舊的 completions 端點。我們的模型只列出/v1/chat/completions與/v1/responses。請設定is_chat_model=True。 ValueError: Unknown model 'deepseek-v4-1-flash'. Please provide a valid OpenAI model name。 你用的是llama_index.llms.openai的OpenAI,它只接受 OpenAI 自家的模型名稱。請改用OpenAILike。- 建立索引時出現
Could not load OpenAI embedding model。Settings.embed_model仍是 OpenAI 預設值。請改設其他供應商的 embedding 模型或本機模型。 /v1/embeddings回傳503與model_not_found。 原因同上,只是OPENAI_API_KEY與OPENAI_API_BASE設成了你的 cheapaimodel Key 與我們的 Base URL:預設的 embedding 模型會讀取它們,於是向我們要求 embeddings 模型。請改把api_key與api_base傳給OpenAILike,並設定Settings.embed_model。kimi-k3回傳400。OpenAILike一定會送出temperature,預設為0.1,而 kimi-k3 只接受1或0.6。請傳入temperature=1.0。請參閱取樣參數限制。- 一次查詢送出好幾個請求。
context_window預設為 3900 個 token,LlamaIndex 會把檢索到的文字切成符合這個長度的片段,查詢引擎因此送出比需要更多的請求。請設為模型的上下文長度。
Base URL 漏了 /v1 這類錯誤,請參閱 Base URL。