# LlamaIndex (/vi/docs/guides/llamaindex)

Dùng mô hình của cheapaimodel trong LlamaIndex qua API tương thích OpenAI.



LlamaIndex kết nối với các dịch vụ tương thích OpenAI qua `OpenAILike` từ gói `llama-index-llms-openai-like`. Vì `OpenAILike` không tự tra được thông tin của mô hình lạ, bạn cần tự khai báo hai điều: đây là mô hình chat, và cửa sổ ngữ cảnh của nó dài bao nhiêu.

|                 | Thiết lập LlamaIndex | Giá trị                                                                                                 |
| --------------- | -------------------- | ------------------------------------------------------------------------------------------------------- |
| Base URL        | `api_base`           | `https://api.cheapaimodel.ai/v1`                                                                        |
| API key         | `api_key`            | Key của bạn từ trang [API key](https://console.cheapaimodel.ai/keys) trong bảng điều khiển              |
| ID mô hình      | `model`              | `deepseek-v4-1-flash`, hoặc bất kỳ ID nào trong [danh mục](/vi/models)                                  |
| Mô hình chat    | `is_chat_model`      | `True`                                                                                                  |
| Cửa sổ ngữ cảnh | `context_window`     | Độ dài ngữ cảnh của mô hình tính bằng token, xem trên trang của mô hình đó trong [danh mục](/vi/models) |

## Thiết lập [#set-it-up]

Các gói LlamaIndex hiện tại cần Python 3.10 trở lên.

```bash title="Terminal"
pip install llama-index-llms-openai-like
```

Tra độ dài ngữ cảnh trên trang của mô hình, ví dụ [deepseek-v4-1-flash](/vi/models/deepseek-v4-1-flash), rồi điền vào `CONTEXT_WINDOW`:

```python title="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)
```

Với `is_chat_model=True`, mọi lệnh gọi, kể cả `complete`, đều được gửi tới `/v1/chat/completions`.

## Dùng trong toàn bộ LlamaIndex [#use-it-across-llamaindex]

Gán `llm` vào `Settings` để làm mặc định cho index, query engine và chat engine:

```python title="main.py"
from llama_index.core import Settings

Settings.llm = llm
```

Vector index còn cần một mô hình embedding, và mặc định `Settings.embed_model` dùng mô hình của OpenAI. cheapaimodel chưa có mô hình embeddings, nên đặt `Settings.embed_model` thành mô hình embedding của nhà cung cấp khác hoặc một mô hình chạy cục bộ. Đừng trỏ mô hình embedding tới Base URL của chúng tôi.

## Lỗi thường gặp [#common-mistakes]

* **Yêu cầu bị gửi tới `/v1/completions`.** Mặc định `is_chat_model` là `False`, khiến `complete`, thậm chí cả `chat`, được gửi tới endpoint completions cũ dưới dạng một prompt duy nhất. Các mô hình của chúng tôi chỉ liệt kê `/v1/chat/completions` và `/v1/responses`. Đặt `is_chat_model=True`.
* **`ValueError: Unknown model 'deepseek-v4-1-flash'. Please provide a valid OpenAI model name`.** LLM đang dùng là `OpenAI` từ `llama_index.llms.openai`, vốn chỉ nhận tên mô hình của chính OpenAI. Dùng `OpenAILike`.
* **`Could not load OpenAI embedding model` khi tạo index.** `Settings.embed_model` vẫn là mặc định của OpenAI. Đổi sang mô hình embedding của nhà cung cấp khác hoặc một mô hình chạy cục bộ.
* **`503` kèm `model_not_found` ở `/v1/embeddings`.** Cùng nguyên nhân, khi `OPENAI_API_KEY` và `OPENAI_API_BASE` được đặt thành key cheapaimodel của bạn và Base URL của chúng tôi: mô hình embedding mặc định cũng đọc các biến này nên gửi yêu cầu embeddings sang chúng tôi. Thay vào đó, hãy truyền `api_key` và `api_base` cho `OpenAILike`, rồi đặt `Settings.embed_model`.
* **`kimi-k3` trả về `400`.** `OpenAILike` luôn gửi `temperature`, mặc định là `0.1`, trong khi kimi-k3 chỉ nhận `1` hoặc `0.6`. Truyền `temperature=1.0`. Xem [Giới hạn tham số lấy mẫu](/vi/docs/concepts/models#sampling-limits).
* **Một truy vấn tạo ra nhiều yêu cầu.** Mặc định `context_window` là 3900 token, và LlamaIndex chia nhỏ văn bản truy xuất được cho vừa, nên query engine gửi nhiều yêu cầu hơn mức cần thiết. Đặt `context_window` bằng độ dài ngữ cảnh của mô hình.

Với các lỗi Base URL như thiếu `/v1`, xem [Base URL](/vi/docs/api/base-url#common-mistakes).
