cheapaimodel

LlamaIndex

透過 OpenAI 相容 API 在 LlamaIndex 中使用 cheapaimodel 的模型。

複製

LlamaIndex 透過 llama-index-llms-openai-like 套件的 OpenAILike 連接 OpenAI 相容服務。它無法從不認識的模型 ID 查出模型資訊,所以有兩項要你自己設定:這是對話模型,以及它的上下文長度。

LlamaIndex 設定值
Base URLapi_basehttps://api.cheapaimodel.ai/v1
API Keyapi_key你在控制台 API Key 頁面建立的 Key
模型 IDmodeldeepseek-v4-1-flash,或目錄中的任一模型 ID
對話模型is_chat_modelTrue
上下文長度context_window模型的上下文長度(token 數),見目錄中該模型的頁面

設定

目前版本的 LlamaIndex 套件需要 Python 3.10 以上。

終端機
pip install llama-index-llms-openai-like

在模型頁面查出上下文長度,例如 deepseek-v4-1-flash,填入 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)

設定 is_chat_model=True 後,每次呼叫(包括 complete)都會送往 /v1/chat/completions。

在整個 LlamaIndex 中使用

把它設在 Settings 上,就成為索引、查詢引擎與對話引擎的預設模型:

main.py
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。

複製
開啟方式

本頁內容