Cài đặt công cụ agentic
Công cụ agentic gửi nội dung file, output lệnh và toàn bộ lịch sử hội thoại ở mỗi bước. Prompt lớn như vậy có thể mất hàng chục giây trước khi token đầu tiên xuất hiện. Nếu ứng dụng của bạn bỏ cuộc trước, request vẫn bị tính nhưng bạn không nhận được gì. Hãy đặt timeout, streaming, retry và kích thước context như bên dưới.
Vì sao điều này quan trọng
- Request bị ngắt trước khi có phản hồi vẫn bị tính. Ngay khi request đến, máy chủ AI bắt đầu xử lý toàn bộ prompt. Nếu ứng dụng của bạn ngắt trước (timeout, nút dừng, mất kết nối), chi phí xử lý đã phát sinh nhưng bạn không nhận được phản hồi.
- Prompt khổng lồ cần hơn 30 giây trước token đầu tiên. Prompt agentic hàng trăm KB với hàng nghìn tin nhắn có thể vượt giới hạn mặc định của nhiều ứng dụng (30 hoặc 60 giây) trước khi một token nào được trả ra.
- Streaming giữ kết nối luôn sống. Khi bật streaming, máy chủ của chúng tôi gửi header ngay lập tức, rồi gửi tín hiệu keepalive mỗi 10 giây trong lúc chờ phản hồi. Thứ vẫn có thể cắt kết nối là giới hạn thời gian tổng của ứng dụng, nên hãy đặt tối thiểu 300 giây.
- Chọn model nhanh cho context lớn. Với phiên dài hoặc repo lớn, hãy dùng model nhanh hơn và để dành model lớn cho các bước thật sự cần. So sánh tại trang Bảng giá.
Hướng dẫn chung cho mọi công cụ
- Timeout
- Tối thiểu 300 giây. Chú ý đơn vị: có công cụ dùng giây (
300), có công cụ dùng mili giây (300000). - Streaming
- Hãy bật lên. Không có streaming thì không có dữ liệu nào chạy cho đến khi phản hồi hoàn tất, nên proxy và ứng dụng bỏ cuộc sớm hơn.
- Retry
- Giữ ở mức thấp (0–3). Retry sau timeout là một request mới và cũng bị tính phí. Hãy sửa timeout trước thay vì tăng số lần retry.
- Context
- Giữ context nhỏ. Dùng compact/tóm tắt tự động, mở phiên mới cho mỗi tác vụ và loại trừ thư mục lớn (node_modules, build, data).
Claude Code
- Base URL & key
- Làm theo hướng dẫn Claude Code:
ANTHROPIC_BASE_URL=https://ai.geraikita.com(không có /v1) vàANTHROPIC_AUTH_TOKEN= key gk- của bạn. Bạn có thể đặt các biến này trong khốienvcủa~/.claude/settings.json. - Timeout
API_TIMEOUT_MS(mili giây): thời gian mỗi lần thử chờ header phản hồi, mặc định 600000 (10 phút). Đừng giảm; nếu từng giảm, hãy đặt lại tối thiểu300000.- Streaming
- Luôn streaming. Không có cài đặt để tắt.
- Retry
CLAUDE_CODE_MAX_RETRIES, mặc định 10, tính cả timeout trước khi phản hồi bắt đầu stream. Với prompt lớn, đặt 2–3 để một bước không bị tính phí lặp đi lặp lại.- Context
/compacttóm tắt hội thoại,/clearbắt đầu hội thoại mới. Auto-compact bật sẵn (autoCompactEnabled); đặtCLAUDE_AUTOCOMPACT_PCT_OVERRIDEthấp hơn (vd. 60) để compact sớm hơn.
{
"env": {
"ANTHROPIC_BASE_URL": "https://ai.geraikita.com",
"ANTHROPIC_AUTH_TOKEN": "gk-xxxxxxxx",
"API_TIMEOUT_MS": "600000",
"CLAUDE_CODE_MAX_RETRIES": "3",
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "60"
}
}Cline
- Base URL & key
- Làm theo hướng dẫn Cline: provider OpenAI Compatible (Base URL
https://ai.geraikita.com/v1) hoặc Anthropic với Use custom base URLhttps://ai.geraikita.com. - Timeout
- Tài liệu chính thức của Cline không có cài đặt timeout cho provider OpenAI Compatible hay Anthropic (Request Timeout chỉ dành cho Ollama). Để token đầu tiên ra nhanh: thu nhỏ context và chọn model nhanh hơn cho context lớn.
- Streaming
- Tài liệu chính thức không có cài đặt streaming; không cần thay đổi gì.
- Retry
- Tài liệu chính thức không có cài đặt retry.
- Context
- Auto Compact tự động tóm tắt khi context gần đầy.
/smol(alias/compact) tóm tắt thủ công,/newtaskchuyển bản tóm tắt sang tác vụ mới. Đặt Context Window size trong Model Configuration cho khớp với model.
Roo Code
- Base URL & key
- Lưu ý: extension Roo Code đã chính thức ngừng hoạt động từ ngày 15 tháng 5 năm 2026. Nếu bạn vẫn dùng: provider OpenAI Compatible, Base URL
https://ai.geraikita.com/v1, key gk- của bạn (giống Cline). - Timeout
roo-cline.apiRequestTimeouttrong settings.json của VS Code, tính bằng giây (mặc định 600, phạm vi 0–3600, 0 = không giới hạn). Đừng đặt dưới300.- Streaming
- Đảm bảo Enable streaming luôn được tích trong profile OpenAI Compatible.
- Retry
- Khi bật Auto-Approve, request lỗi được tự động thử lại với độ trễ tăng dần; không có công tắc riêng.
- Context
- Intelligent Context Condensing (Settings → Context): hạ ngưỡng từ mức mặc định 100% để việc rút gọn bắt đầu sớm hơn, hoặc bấm Condense Context. Loại trừ thư mục lớn bằng
.rooignore.
Kilo Code
- Base URL & key
- Settings → Providers → Custom provider → OpenAI Compatible, Base URL
https://ai.geraikita.com/v1, key gk- của bạn. Hoặc dùng file~/.config/kilo/kilo.jsoncnhư ví dụ bên dưới. - Timeout
options.timeouttrên provider (mili giây) bao gồm thời gian chờ header và byte đầu tiên. Mặc định là 300000, sát giới hạn; hãy đặt600000. Đừng đặtchunkTimeoutquá thấp.- Streaming
- Tài liệu chính thức không có cài đặt streaming; không cần thay đổi gì.
- Retry
- Tài liệu chính thức không có cài đặt retry.
- Context
compaction.auto(mặc địnhtrue) và/compact. Bạn phải đặtlimit.contextcho từng model (số nhỏ hơn thì compact sớm hơn): nếu không, auto-compaction sẽ không chạy. Loại trừ thư mục lớn bằng.kilocodeignorehoặc quy tắc permission.
{
"provider": {
"geraikita": {
"npm": "@ai-sdk/openai-compatible",
"name": "Geraikita AI",
"options": {
"baseURL": "https://ai.geraikita.com/v1",
"apiKey": "gk-xxxxxxxx",
"timeout": 600000
},
"models": {
"claude-sonnet-5": {
"name": "Claude Sonnet 5",
"limit": { "context": 128000, "output": 16000 }
}
}
}
},
"compaction": { "auto": true }
}Cursor
- Base URL & key
- Cursor Settings → Models → OpenAI API key. Tài liệu chính thức của Cursor không mô tả base URL tùy chỉnh; nếu phiên bản Cursor của bạn có Override OpenAI Base URL, hãy nhập
https://ai.geraikita.com/v1. API key riêng chỉ dùng được cho model chat (Tab vẫn dùng model tích hợp của Cursor), và request đi qua máy chủ của Cursor. - Timeout
- Tài liệu chính thức không có cài đặt timeout điều chỉnh được. Thay vào đó: thu nhỏ context, mở chat mới cho mỗi tác vụ và chọn model nhanh để token đầu tiên đến trước giới hạn của ứng dụng.
- Streaming
- Do Cursor xử lý; không có cài đặt.
- Retry
- Tài liệu chính thức không có cài đặt retry.
- Context
- Cursor tự động tóm tắt phần cũ của hội thoại khi context gần đầy. Mở chat mới mỗi khi đổi tác vụ và loại trừ file lớn bằng
.cursorignore.
OpenCode
- Base URL & key
- Làm theo hướng dẫn OpenCode: provider
@ai-sdk/openai-compatiblevớibaseURLhttps://ai.geraikita.com/v1. - Timeout
- Trong
provider.geraikita.options(mili giây):headerTimeout(chờ header, mặc định 300000) vàchunkTimeout(khoảng cách giữa các chunk stream, mặc định 300000).timeout(giới hạn tổng) tắt theo mặc định; nếu đặt, hãy dùng tối thiểu300000. - Streaming
- Luôn streaming. Không có cài đặt để tắt.
- Retry
- Tài liệu chính thức không có cài đặt retry. Nếu request liên tục bị ngắt, hãy sửa timeout và thu nhỏ context.
- Context
compaction.auto(mặc địnhtrue) tự động tóm tắt phiên khi context đầy./compacttóm tắt thủ công,/newbắt đầu phiên mới.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"geraikita": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://ai.geraikita.com/v1",
"apiKey": "{env:GERAIKITA_API_KEY}",
"headerTimeout": 300000,
"chunkTimeout": 300000
}
}
},
"compaction": { "auto": true }
}Continue
- Base URL & key
- Trong
config.yaml:provider: openai,apiBase: https://ai.geraikita.com/v1,apiKey= key gk- của bạn. - Timeout
requestOptions.timeouttính bằng giây (mặc định 7200). Dùng tối thiểu300, không phải 300000.- Streaming
- Provider
openailuôn streaming. - Retry
- Tài liệu chính thức không có cài đặt retry.
- Context
defaultCompletionOptions.contextLengthvàmaxTokensgiới hạn kích thước context và phản hồi. Mở chat mới cho mỗi tác vụ; Continue CLI có/compactvà/clear.
models:
- name: Claude Sonnet 5 (Geraikita)
provider: openai
model: claude-sonnet-5
apiBase: https://ai.geraikita.com/v1
apiKey: gk-xxxxxxxx
requestOptions:
timeout: 600 # giây, không phải mili giây
defaultCompletionOptions:
contextLength: 64000 # nhỏ hơn = lịch sử bị cắt bớt
maxTokens: 8192n8n
- Base URL & key
- Credential OpenAI: đặt Base URL là
https://ai.geraikita.com/v1và API key gk- của bạn. Credential Anthropic: Base URLhttps://ai.geraikita.com. - Timeout
- Node OpenAI Chat Model → Options → Timeout (mili giây). Mặc định là 60000 (60 giây), nguyên nhân phổ biến khiến request bị cắt ở giây thứ 60; hãy đặt tối thiểu
300000. Node HTTP Request → Options → Timeout cũng tính bằng mili giây. Self-hosted: đừng đặtEXECUTIONS_TIMEOUT(giây) thấp hơn mức đó. - Streaming
- AI Agent → Options → Enable Streaming (bật sẵn; cần Chat Trigger hoặc Webhook với Response Mode Streaming). Anthropic Chat Model → Stream Responses. OpenAI Chat Model không có tùy chọn streaming, nên hãy dựa vào Timeout đủ dài.
- Retry
- OpenAI Chat Model → Options → Max Retries, mặc định 2. Retry sau timeout cũng bị tính phí; hãy sửa Timeout trước.
- Context
- Sub-node Simple Memory → Context Window Length = số lượt tương tác trước được gửi đi. Giữ nhỏ, vd. 5–10.
OpenAI SDK (Python & Node.js)
- Base URL & key
base_url/baseURL=https://ai.geraikita.com/v1,api_key/apiKey= key gk- của bạn. Ví dụ cơ bản có trong Request đầu tiên.- Timeout
timeout: giây trong Python, mili giây trong Node.js. Mặc định của SDK là 10 phút, ổn miễn là bạn không hạ xuống dưới 300 giây.- Streaming
stream=True(Python) /stream: true(Node.js).- Retry
max_retries/maxRetries, mặc định 2, tính cả việc thử lại request bị timeout. Với prompt lớn, đặt 0–1.- Context
- Chỉ gửi phần lịch sử cần thiết: cắt bớt tin nhắn cũ hoặc tóm tắt trước khi gửi.
from openai import OpenAI
client = OpenAI(
base_url="https://ai.geraikita.com/v1",
api_key="gk-xxxxxxxx",
timeout=600.0, # giây
max_retries=1, # retry sau timeout cũng bị tính phí
)
stream = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Halo!"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Anthropic SDK (Python & Node.js)
- Base URL & key
base_url/baseURL=https://ai.geraikita.com(không có /v1, SDK tự thêm /v1/messages),api_key/apiKey= key gk- của bạn.- Timeout
timeout: giây trong Python, mili giây trong Node.js; mặc định 10 phút. SDK từ chối request không streaming dự kiến kéo dài hơn khoảng 10 phút, nên hãy dùng streaming.- Streaming
client.messages.stream(...), hoặcstream=True/stream: truetrênmessages.create.- Retry
max_retries/maxRetries, mặc định 2. Với prompt lớn, đặt 0–1.- Context
- Chỉ gửi phần lịch sử cần thiết; giới hạn
max_tokenstheo nhu cầu của phản hồi.
import anthropic
client = anthropic.Anthropic(
base_url="https://ai.geraikita.com", # không có /v1
api_key="gk-xxxxxxxx",
timeout=600.0, # giây
max_retries=1, # retry sau timeout cũng bị tính phí
)
with client.messages.stream(
model="claude-sonnet-5",
max_tokens=4096,
messages=[{"role": "user", "content": "Halo!"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)curl
- Base URL & key
- Header
Authorization: Bearer gk-...tớihttps://ai.geraikita.com/v1/chat/completions. Ví dụ cơ bản có trong Request đầu tiên. - Timeout
- Không có
--max-timethì curl không giới hạn tổng thời gian. Nếu dùng, hãy đặt tối thiểu300(giây). - Streaming
"stream": truetrong body, cộng thêm-N(--no-buffer) để các chunk phản hồi hiện ra ngay.- Retry
--retrymặc định là 0 và cũng thử lại khi timeout. Đừng thêm nó cho prompt lớn.- Context
- Bạn tự xây body: chỉ gửi những tin nhắn cần thiết.
curl https://ai.geraikita.com/v1/chat/completions \
--max-time 600 -N \
-H "Authorization: Bearer gk-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5","stream":true,"messages":[{"role":"user","content":"Halo!"}]}'Điều khoản tính phí
Request bị hủy từ phía người mua (ứng dụng timeout, nút dừng, mất kết nối) trước khi có phản hồi vẫn bị tính phí. Output trống chỉ được bồi hoàn khi sự cố ở phía chúng tôi (máy chủ trả về phản hồi trống hoặc lỗi, hoặc không có output trong ≥60 giây). Áp dụng từ ngày 1 tháng 11 năm 2026.
Điều khoản & Điều kiện, Điều 10Câu hỏi thường gặp
Ứng dụng của tôi bị timeout và output trống. Tôi có vẫn bị tính phí không?
Có, nếu ứng dụng của bạn ngắt trước khi phản hồi đến: máy chủ AI đã xử lý prompt của bạn. Điều này được quy định trong Điều khoản & Điều kiện và áp dụng từ ngày 1 tháng 11 năm 2026.
Khi nào output trống được bồi hoàn?
Khi sự cố ở phía chúng tôi: máy chủ trả về phản hồi trống hoặc lỗi, hoặc hoàn toàn không có output trong 60 giây trở lên.
Sao không tăng số lần retry cho xong?
Mỗi lần retry là một request mới. Nếu nguyên nhân là timeout quá ngắn, retry chỉ lặp lại khoản phí mà không có kết quả. Hãy tăng timeout lên tối thiểu 300 giây và bật streaming.
Prompt của tôi rất lớn. Cách nào hiệu quả nhất?
Tóm tắt hoặc mở phiên mới, loại trừ thư mục lớn và dùng model nhanh hơn cho context lớn. So sánh các model tại trang Bảng giá.