ERNIE 5.1 ra mắt ngày 9 tháng 5 năm 2026, và trong vòng một tuần, API Qianfan đã hỗ trợ mô hình này. Nếu bạn muốn gọi ERNIE 5.1 từ mã nguồn, định tuyến tool call, hoặc đưa nó vào vòng lặp tác nhân với Apidog, bài viết này hướng dẫn từng bước: tạo tài khoản, lấy khóa, gửi request, streaming, tool calling và xử lý lỗi.
Mục tiêu là có thể chạy được ngay. Bạn sẽ có ví dụ curl, Python, Node.js và một bộ request có thể nhập vào Apidog để kiểm thử.
Nếu bạn chưa đọc bài phân tích ra mắt ERNIE 5.1, hãy đọc lướt trước; bài đó bao gồm benchmark và so sánh với DeepSeek V4 và Kimi K2.6. Bài này tập trung vào phần triển khai.
Bước 1: Lấy khóa API Qianfan
ERNIE 5.1 được cung cấp qua nền tảng Qianfan của Baidu Intelligent Cloud. Không có “API ERNIE” riêng biệt; tất cả request đều đi qua Qianfan.
Thực hiện các bước sau:
- Truy cập cloud.baidu.com và tạo hoặc đăng nhập tài khoản Baidu Intelligent Cloud. Nhà phát triển quốc tế có thể đăng ký bằng email; một số tính năng doanh nghiệp vẫn yêu cầu số điện thoại Trung Quốc đại lục.
- Mở bảng điều khiển Qianfan tại console.bce.baidu.com/qianfan.
- Vào Quản lý khóa API (
API Key 管理) và chọn Tạo khóa API. - Chọn workspace và cấp quyền truy cập dịch vụ chat-completions.
- Sao chép khóa. Khóa có dạng
bce-v3/ALTAK-xxxx/xxxx.
Không hard-code khóa trong source code. Lưu vào biến môi trường:
export QIANFAN_API_KEY="bce-v3/ALTAK-xxxx/xxxx"
Có hai điểm cần lưu ý:
- Endpoint v2 dùng Bearer token duy nhất. Luồng
access_tokenOAuth v1 cũ đang bị loại bỏ, không nên dùng cho mã mới. - ERNIE 5.1 là mô hình trả phí ngay từ đầu. Hãy nạp một số dư nhỏ, ví dụ ¥10, trước khi gửi request đầu tiên.
Bước 2: Gửi request bằng curl tới endpoint tương thích OpenAI
Qianfan cung cấp endpoint chat-completions tương thích với OpenAI. Nếu hệ thống của bạn đã dùng định dạng OpenAI, bạn chỉ cần đổi base URL và model ID.
-
Base URL:
https://qianfan.baidubce.com/v2 -
Model ID:
ernie-5.1 -
Model preview:
ernie-5.1-previewcho một số tính năng truy cập sớm
Request tối thiểu:
curl https://qianfan.baidubce.com/v2/chat/completions \
-H "Authorization: Bearer $QIANFAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "ernie-5.1",
"messages": [
{"role": "system", "content": "You are a senior API designer."},
{"role": "user", "content": "Sketch a REST schema for a GitHub-style PR review API. Be concise."}
],
"temperature": 0.3
}'
Response có dạng tương thích OpenAI:
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1746780000,
"model": "ernie-5.1",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "..." },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 42,
"completion_tokens": 318,
"total_tokens": 360
}
}
Cách xử lý lỗi nhanh:
-
401 Unauthorized: khóa sai hoặc đã hết hạn. -
403: khóa hợp lệ nhưng workspace chưa bật model ERNIE 5.1. Vào console và thêm model vào danh sách được phép.
Bước 3: Gọi ERNIE 5.1 từ Python
Vì endpoint tương thích OpenAI, bạn có thể dùng SDK Python openai và chỉ cần đổi base_url.
Cài SDK nếu chưa có:
pip install openai
Ví dụ gọi chat completion:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["QIANFAN_API_KEY"],
base_url="https://qianfan.baidubce.com/v2",
)
response = client.chat.completions.create(
model="ernie-5.1",
messages=[
{"role": "system", "content": "You explain APIs in plain English."},
{"role": "user", "content": "Why would I use server-sent events over WebSockets for a chat UI?"},
],
temperature=0.4,
)
print(response.choices[0].message.content)
print(f"\nTokens used: {response.usage.total_tokens}")
Nếu bạn đã có wrapper quanh OpenAI SDK, thử nghiệm A/B với ERNIE 5.1 thường chỉ cần đổi base_url và model. Cách này cũng tương tự với API của DeepSeek và nhiều nhà cung cấp mô hình Trung Quốc khác.
Bước 4: Streaming token cho giao diện chat
Với UI chat, nên bật streaming để người dùng thấy phản hồi ngay khi model sinh token.
Trong Python, đặt stream=True:
stream = client.chat.completions.create(
model="ernie-5.1",
messages=[{"role": "user", "content": "Write a haiku about API versioning."}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Request curl tương đương để debug:
curl https://qianfan.baidubce.com/v2/chat/completions \
-H "Authorization: Bearer $QIANFAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "ernie-5.1",
"stream": true,
"messages": [{"role": "user", "content": "Stream a 3-sentence joke."}]
}' \
--no-buffer
Định dạng stream giống OpenAI: các dòng data: {...} và kết thúc bằng:
data: [DONE]
Bước 5: Dùng ERNIE 5.1 với tool calling
ERNIE 5.1 được nhấn mạnh ở khả năng dùng công cụ. Theo thông tin ra mắt, mô hình đạt điểm cao hơn DeepSeek-V4-Pro trên τ³-bench và SpreadsheetBench-Verified, nghĩa là tool calling được tối ưu cho các tình huống thực tế hơn là chỉ demo.
Schema tool giống function calling của OpenAI:
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city.",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "City name, e.g. Singapore"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["city"],
},
},
}
]
response = client.chat.completions.create(
model="ernie-5.1",
messages=[{"role": "user", "content": "What's the weather in Tokyo right now?"}],
tools=tools,
tool_choice="auto",
)
tool_calls = response.choices[0].message.tool_calls
if tool_calls:
call = tool_calls[0]
print(f"Model wants to call: {call.function.name}({call.function.arguments})")
Sau khi code của bạn chạy công cụ thực tế, hãy nối kết quả vào messages dưới dạng message có role tool, rồi gọi lại model. Vòng lặp kết thúc khi:
finish_reason == "stop"
và tool_calls rỗng.
Một điểm nên xử lý phòng ngừa: ERNIE 5.1 đôi khi trả về arguments của tool dưới dạng JSON được bọc trong code block thay vì chuỗi JSON thuần. Hãy parse bằng json.loads() trong try/except; nếu lỗi, loại bỏ phần
```json trước khi parse lại.
Ví dụ helper đơn giản:
python
import json
import re
def parse_tool_arguments(raw):
try:
return json.loads(raw)
except json.JSONDecodeError:
cleaned = re.sub(r"^
```json|```
$", "", raw.strip(), flags=re.MULTILINE).strip()
return json.loads(cleaned)
Bước 6: Gọi ERNIE 5.1 từ Node.js
Với dự án Node.js dùng openai v5+, cấu hình tương tự Python.
Cài package:
bash
npm install openai
Ví dụ:
javascript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.QIANFAN_API_KEY,
baseURL: "https://qianfan.baidubce.com/v2",
});
const completion = await client.chat.completions.create({
model: "ernie-5.1",
messages: [
{ role: "user", content: "Return a JSON object with 3 API design tips." },
],
response_format: { type: "json_object" },
});
console.log(completion.choices[0].message.content);
response_format: { type: "json_object" } hoạt động và đáng dùng khi bạn cần JSON. Tuy nhiên, JSON schema nghiêm ngặt (json_schema) vẫn đang được triển khai trên Qianfan, nên hãy validate response trong code thay vì chỉ dựa vào ràng buộc từ model.
Ví dụ validate tối thiểu:
javascript
const raw = completion.choices[0].message.content;
let data;
try {
data = JSON.parse(raw);
} catch {
throw new Error("Model did not return valid JSON");
}
if (!Array.isArray(data.tips)) {
throw new Error("Invalid response shape: expected tips array");
}
Bước 7: Kiểm thử và so sánh bằng Apidog
Nếu bạn đang so sánh ERNIE 5.1, DeepSeek V4 và Kimi K2.6, không nên quản lý mọi thứ bằng nhiều lệnh terminal rời rạc. Dùng Apidog để tạo một workspace duy nhất, mỗi nhà cung cấp là một thư mục, cùng body request và môi trường riêng cho từng API key.
Thiết lập trong khoảng 60 giây:
- Mở Apidog và tạo project mới tên “LLM bake-off.”
- Thêm environment với các biến:
text
QIANFAN_API_KEY
DEEPSEEK_API_KEY
MOONSHOT_API_KEY
- Tạo ba request, mỗi request trỏ tới base URL của từng nhà cung cấp.
- Đặt
modellần lượt là:
text
ernie-5.1
deepseek-chat
kimi-k2-6
- Dùng cùng một mảng
messagescho cả ba request. - Dùng tính năng Run của Apidog để chạy song song và so sánh output.
Gói miễn phí đủ để làm việc này. Apidog lưu lịch sử request theo environment, nên bạn có thể quay lại tuần sau và chạy lại cùng một bài đánh giá với phiên bản model mới. Cách này dễ kiểm soát hơn nhiều so với việc giữ nhiều lệnh curl trong tmux.
Để xem thêm về kiểm thử đa nhà cung cấp, đọc Kiểm thử LLM cục bộ dưới dạng API và hướng dẫn API GLM 5.1.
Giá cả, giới hạn tốc độ và hạn mức
Giá công khai của Qianfan cho ERNIE 5.1 không có trong bài phát hành. Hãy kiểm tra bảng giá trực tiếp trong console trước khi báo cáo số liệu nội bộ.
Ba điểm thực tế cần xử lý trong quá trình tích hợp:
- Rate limit áp dụng theo workspace. Tài khoản mới thường có QPS thấp. Sau khi thử nghiệm xong, hãy nâng giới hạn trong console nếu cần production traffic.
-
Token usage có trong response. Trường
usagegồmprompt_tokens,completion_tokensvàtotal_tokens. Hãy log các giá trị này cho từng request để tự tính chi phí. - Không có prompt caching tự động. Qianfan hiện không cung cấp cơ chế lưu prompt gốc cho ERNIE 5.1 như Anthropic. Nếu system prompt dài 2.000 token, bạn sẽ trả phí cho phần đó ở mỗi lần gọi. Hãy thiết kế prompt và context window cho phù hợp.
Ví dụ log token usage:
python
response = client.chat.completions.create(
model="ernie-5.1",
messages=messages,
)
usage = response.usage
print({
"prompt_tokens": usage.prompt_tokens,
"completion_tokens": usage.completion_tokens,
"total_tokens": usage.total_tokens,
})
Xử lý lỗi thường gặp
Các lỗi bạn sẽ gặp trong thực tế:
| Trạng thái | Ý nghĩa | Cách khắc phục |
|---|---|---|
401 |
Bearer token sai hoặc đã hết hạn | Tạo lại khóa từ console |
403 |
Model chưa được bật cho workspace | Thêm ERNIE 5.1 trong console |
429 |
Đạt giới hạn tốc độ | Dừng lại và retry với jitter |
400 |
Message không hợp lệ | Kiểm tra thứ tự role user/assistant |
500/502 |
Lỗi tạm thời phía Qianfan | Retry một lần; nếu tiếp diễn, kiểm tra trang trạng thái |
Mọi lời gọi production nên có retry với exponential backoff, giới hạn tối đa 3 lần. Nếu chạy production, hãy ghi lại request_id từ response headers; bộ phận hỗ trợ của Baidu cần giá trị này khi debug.
Wrapper Python tối thiểu cho production
Nếu muốn đưa ERNIE 5.1 vào ứng dụng ngay, đây là wrapper nhỏ gọn để xử lý phần lớn tình huống phổ biến:
python
import os
import time
import random
from openai import OpenAI, RateLimitError, APIError
client = OpenAI(
api_key=os.environ["QIANFAN_API_KEY"],
base_url="https://qianfan.baidubce.com/v2",
)
def chat(messages, *, model="ernie-5.1", temperature=0.3, max_retries=3):
for attempt in range(max_retries):
try:
return client.chat.completions.create(
model=model,
messages=messages,
temperature=temperature,
)
except RateLimitError:
time.sleep((2 ** attempt) + random.random())
except APIError as e:
if e.status_code and e.status_code >= 500 and attempt < max_retries - 1:
time.sleep(1 + attempt)
continue
raise
raise RuntimeError("ERNIE 5.1 retries exhausted")
Dùng wrapper:
python
messages = [
{"role": "system", "content": "You are a concise API assistant."},
{"role": "user", "content": "Design a pagination scheme for a REST API."},
]
response = chat(messages)
print(response.choices[0].message.content)
Wrapper này xử lý phần retry cơ bản. Với streaming và tool calling, hãy mở rộng từ cùng cấu trúc này.
Câu hỏi thường gặp
API ERNIE 5.1 có miễn phí không?
Không. Qianfan hoạt động theo mô hình trả tiền theo mức sử dụng. Không có gói miễn phí vĩnh viễn; tài khoản mới đôi khi nhận được credit thử nghiệm. Nếu muốn thử miễn phí, dùng giao diện chat tại ernie.baidu.com hoặc xem các tùy chọn LLM miễn phí.
Tôi có thể chạy ERNIE 5.1 cục bộ không?
Không. Không có trọng số công khai. Nếu bắt buộc triển khai tại chỗ, hãy xem cách chạy DeepSeek V4 cục bộ hoặc các LLM cục bộ tốt nhất năm 2026.
OpenAI SDK có hoạt động mà không cần sửa nhiều không?
Có. Đặt base_url thành https://qianfan.baidubce.com/v2 và api_key thành khóa Qianfan. Trường model dùng ID model của Qianfan, không phải OpenAI. Function calling, streaming và response_format: json_object đều hoạt động. Xác thực json_schema nghiêm ngặt vẫn đang được triển khai.
ERNIE 5.1 xử lý prompt tiếng Trung và tiếng Anh như thế nào?
Cả hai đều là ưu tiên chính. Điểm Arena Search 1.223 đến từ nhóm bình chọn đa ngôn ngữ. Với tác vụ kỹ thuật tiếng Anh như code và thiết kế API, mô hình cạnh tranh với các model tiên tiến. Với viết sáng tạo tiếng Trung, nó là một trong những model Trung Quốc mạnh nhất.
Chiều dài output tối đa là bao nhiêu?
Chưa được công bố chính thức. Trong thực tế, response đơn lượt thường giới hạn khoảng 8K token trước khi model kết thúc. Với tác vụ tạo văn bản dài, hãy chia nhỏ nội dung và tiếp tục theo từng phần.
Nếu bạn đang xây dựng tác nhân trên ERNIE 5.1, hãy tải Apidog và dùng bộ request tương thích OpenAI để mock, kiểm thử và tài liệu hóa endpoint Qianfan cùng các service còn lại.



Top comments (0)