cheapaimodel

LlamaIndex

Pakai model cheapaimodel di LlamaIndex lewat API yang kompatibel dengan OpenAI.

Salin

LlamaIndex terhubung ke layanan yang kompatibel dengan OpenAI lewat OpenAILike dari paket llama-index-llms-openai-like. LlamaIndex tidak bisa mencari detail model dari ID yang tidak dikenalnya, jadi ada dua hal yang perlu kamu atur sendiri: bahwa model itu adalah model chat, dan jendela konteksnya.

Pengaturan LlamaIndexNilai
Base URLapi_basehttps://api.cheapaimodel.ai/v1
API keyapi_keyKey kamu dari halaman API key di Konsol
ID modelmodeldeepseek-v4-1-flash, atau ID apa pun dari katalog
Model chatis_chat_modelTrue
Jendela kontekscontext_windowPanjang konteks model dalam token, ada di halaman model itu di katalog

Penyiapan

Paket LlamaIndex versi saat ini butuh Python 3.10 atau yang lebih baru.

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

Cek panjang konteks di halaman model, misalnya deepseek-v4-1-flash, lalu isikan ke 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)

Dengan is_chat_model=True, semua panggilan, termasuk complete, dikirim ke /v1/chat/completions.

Pakai di seluruh LlamaIndex

Pasang di Settings supaya jadi default untuk indeks, query engine, dan chat engine:

main.py
from llama_index.core import Settings

Settings.llm = llm

Indeks vektor juga butuh model embedding, dan secara default Settings.embed_model memakai milik OpenAI. cheapaimodel belum punya model embedding, jadi isi Settings.embed_model dengan model embedding dari penyedia lain atau model lokal. Jangan arahkan ke Base URL kami.

Kesalahan umum

  • Permintaan terkirim ke /v1/completions. Secara default is_chat_model bernilai False, sehingga complete, bahkan chat, dikirim ke endpoint completions versi lama sebagai satu prompt. Model kami hanya mencantumkan /v1/chat/completions dan /v1/responses. Atur is_chat_model=True.
  • ValueError: Unknown model 'deepseek-v4-1-flash'. Please provide a valid OpenAI model name. LLM yang dipakai adalah OpenAI dari llama_index.llms.openai, yang hanya menerima nama model milik OpenAI sendiri. Pakai OpenAILike.
  • Could not load OpenAI embedding model saat membangun indeks. Settings.embed_model masih memakai default OpenAI. Isi dengan model embedding dari penyedia lain atau model lokal.
  • 503 dengan model_not_found di /v1/embeddings. Penyebabnya sama, tapi kali ini OPENAI_API_KEY dan OPENAI_API_BASE diisi dengan key cheapaimodel kamu dan Base URL kami: model embedding default membacanya lalu meminta model embedding ke kami. Sebagai gantinya, berikan api_key dan api_base ke OpenAILike, lalu atur Settings.embed_model.
  • 400 dari kimi-k3. OpenAILike selalu mengirim temperature, default-nya 0.1, sedangkan kimi-k3 hanya menerima 1 atau 0.6. Berikan temperature=1.0. Lihat Batasan parameter sampling.
  • Satu query memicu beberapa permintaan. Secara default context_window bernilai 3900 token, dan LlamaIndex memecah teks hasil retrieval supaya muat, jadi query engine mengirim lebih banyak permintaan daripada yang perlu. Isi dengan panjang konteks model.

Untuk kesalahan Base URL seperti lupa /v1, lihat Base URL.