Chạy Goose trên một endpoint tương thích OpenAI tùy chỉnh.
Updated 2026-07-29
Provider openai của Goose nhận một ghi đè host. Đặt GOOSE_PROVIDER=openai, trỏ OPENAI_HOST vào https://api.apisrouter.com, export một key, và toàn bộ vòng lặp agent, kể cả tool call, định tuyến qua một endpoint duy nhất với mọi model trong catalog chọn được theo id.
Câu trả lời nhanh: giữ provider openai, ghi đè host.
Goose có sẵn một đường dẫn endpoint tùy chỉnh có tài liệu: giữ GOOSE_PROVIDER là openai và ghi đè nơi provider đó trỏ tới. OPENAI_HOST thay thế host mặc định api.openai.com, OPENAI_API_KEY xác thực, và GOOSE_MODEL chọn model theo id chính xác. Đường dẫn request là riêng biệt: OPENAI_BASE_PATH mặc định là v1/chat/completions và thường không cần đổi. Chú ý kỹ hình dạng này, vì nó ngược với hầu hết công cụ cùng loại: OPENAI_HOST nhận host trần, https://api.apisrouter.com, không có hậu tố /v1. Phần /v1/chat/completions nằm trong OPENAI_BASE_PATH. Thêm /v1 vào host sẽ nhân đôi path và tạo ra lỗi 404 trông như gateway bị hỏng.
export GOOSE_PROVIDER=openai
export OPENAI_HOST=https://api.apisrouter.com # bare host, no /v1
export OPENAI_API_KEY=sk-APIsRouter-...
export GOOSE_MODEL=claude-sonnet-4-6
goose sessionCách Goose nói chuyện với provider của nó.
Goose (block trên GitHub, khoảng 51K sao) là một agent kỹ thuật tự chủ từ Block: lập kế hoạch, chỉnh sửa file, chạy lệnh shell, và điều khiển extension dựa trên MCP. Tất cả nằm trên một cuộc hội thoại model duy nhất: mỗi bước của vòng lặp là một request /v1/chat/completions kèm định nghĩa tool, nên cấu hình provider quyết định toàn bộ agent chạy ở đâu. Cấu hình được xếp lớp. Đường dẫn tương tác là goose configure, với provider openai sẽ hỏi API key và một host tùy chỉnh không bắt buộc, sau đó ghi các cài đặt không nhạy cảm như GOOSE_PROVIDER và GOOSE_MODEL vào ~/.config/goose/config.yaml; app desktop cũng phơi bày cùng cài đặt provider đó qua UI của nó. Bí mật được xử lý tách biệt: key vào keychain hệ thống hoặc lấy từ biến môi trường, và một key dán trực tiếp vào config.yaml bị bỏ qua chứ không được đọc. Biến môi trường ghi đè file, đó là lý do đường dẫn env ở trên hoạt động ở mọi nơi từ shell laptop tới runner CI. Vì Goose chuyển GOOSE_MODEL qua như một chuỗi thuần, id có thể là bất cứ gì endpoint phía sau OPENAI_HOST phục vụ: một id Claude hôm nay, một id Kimi hoặc Qwen ngày mai, chỉ cách nhau một biến.
Đường dẫn khai báo: một file provider tùy chỉnh.
Ngoài ghi đè env, tài liệu Goose hiện tại cũng mô tả provider tùy chỉnh dạng khai báo: một file JSON đặt vào ~/.config/goose/custom_providers/ (thư mục config theo từng nền tảng trên Windows) đăng ký một provider có tên đứng cạnh các provider tích hợp sẵn. File khai báo engine (openai cho endpoint chat-completions), biến môi trường nào giữ key, URL endpoint, và các model provider cung cấp. Chú ý quy ước URL ở đây, vì nó đảo ngược lại: khác với OPENAI_HOST, base_url của provider tùy chỉnh là URL request đầy đủ kể cả path, https://api.apisrouter.com/v1/chat/completions. Mỗi entry models mang một context_limit để Goose biết cửa sổ nó có thể gói. File khai báo phù hợp hơn khi bạn muốn gateway xuất hiện như một provider có tên riêng trong danh sách provider của Goose, với biến key riêng, thay vì chiếm chỗ của slot openai. Ghi đè env phù hợp hơn cho CI và chuyển đổi nhanh. Cả hai đều đến cùng một endpoint; chọn một cái và tránh chồng cả hai.
{
"name": "apisrouter",
"display_name": "APIsRouter",
"engine": "openai",
"api_key_env": "APISROUTER_API_KEY",
"base_url": "https://api.apisrouter.com/v1/chat/completions",
"models": [
{ "name": "claude-sonnet-4-6", "context_limit": 200000 },
{ "name": "claude-opus-4-7", "context_limit": 200000 },
{ "name": "kimi-k2.7-code", "context_limit": 200000 }
],
"supports_streaming": true,
"requires_auth": true
}Chọn model cho một agent tự chủ.
Quy trình thực tế là giữ nguyên bộ việc và xoay vòng GOOSE_MODEL qua hai hoặc ba ứng viên, mỗi cái vài phiên. Vì mọi ứng viên đều định tuyến qua cùng một key, view usage theo từng key định giá mỗi thử nghiệm mà không cần ghi chép gì thêm.
- Goose chạy các đoạn dài không giám sát: lập kế hoạch, chỉnh sửa, chạy, đọc output, lặp lại. Độ tin cậy khi gọi tool quan trọng hơn sự hùng biện thô, đó là lý do claude-sonnet-4-6 và claude-opus-4-7 là mặc định mà mọi người hội tụ về cho vòng lặp chính.
- Các id được tinh chỉnh cho coding như kimi-k2.7-code đáng thử cho các phiên nặng về refactor; qua một gateway, phép thử đó chỉ là đổi GOOSE_MODEL, không phải di trú provider.
- Phiên dài cộng dồn context. Một model có cửa sổ 200k thực sự, khai báo trung thực qua context_limit trong đường dẫn khai báo, cho phép Goose mang theo nhiều lịch sử phiên hơn trước khi phải tóm tắt.
- Với việc dùng theo kịch bản hoặc CI, một id tầm trung (gpt-5.4, qwen3.7-max) thường đủ đáp ứng cho các việc phạm vi rõ ràng với một phần nhỏ chi phí frontier; hãy đo trên công việc của chính bạn trước khi mặc định chọn cao hơn.
Trả theo mức sử dụng · thấp hơn giá chính thức
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Mô hình | Giá chính thức | Giá của chúng tôi |
|---|---|---|
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| Claude Opus 4.7 | $5.00 / $25.00 per M | $4.00 / $20.00 per M |
| GPT-5.4 | $2.50 / $15.00 per M | $2.00 / $12.00 per M |
| Kimi K2.7 Code | $0.95 / $4.00 per M | $1.00 / $4.00 per M |
| Qwen 3.7 Max | $2.50 / $7.50 per M | $2.50 / $7.50 per M |
Các lỗi thường gặp riêng của Goose.
/v1 bị thêm vào OPENAI_HOST. Biến host nhận host trần; path nằm trong OPENAI_BASE_PATH, vốn đã mặc định là v1/chat/completions. https://api.apisrouter.com/v1 làm host sẽ tạo ra request /v1/v1/... và lỗi 404. Đây là lỗi phổ biến nhất, chính xác vì mọi công cụ khác đều muốn hậu tố /v1. Quy ước URL đầy đủ trong file provider tùy chỉnh. base_url khai báo là URL request hoàn chỉnh kể cả /v1/chat/completions, ngược quy ước với OPENAI_HOST. Copy một host trần vào file provider tùy chỉnh sẽ làm hỏng nó y hệt như copy một URL đầy đủ vào OPENAI_HOST. Key trong config.yaml không xác thực. Goose đọc bí mật từ keychain hoặc môi trường, và bỏ qua giá trị key đặt trong config.yaml. Nếu 401 vẫn còn sau khi chỉnh file, đó là lý do; export biến hoặc chạy lại goose configure và nhập key khi được hỏi. Phiên desktop không thấy export shell. App desktop không kế thừa gì từ profile terminal của bạn. Cấu hình provider qua UI cài đặt desktop, hoặc khởi chạy từ một shell đã có sẵn các biến. Chồng nguồn cấu hình. Một OPENAI_HOST export cũ có thể ghi đè những gì bạn vừa đặt trong config.yaml, vì môi trường thắng file. Khi định tuyến trông sai, in các biến liên quan trong cùng shell khởi chạy Goose trước khi đổ lỗi cho lớp nào.
Ai định tuyến Goose qua một gateway.
- Kỹ sư chạy Goose làm công cụ hàng ngày, muốn Claude, GPT, Kimi, và Qwen với tới được sau một key thay vì một bộ credential riêng cho từng vendor.
- Đội nhóm đưa Goose vào CI hoặc job theo lịch. Đường dẫn chỉ-env nghĩa là runner chỉ cần đúng hai biến định tuyến và một secret, dễ tiêm vào và dễ xoay vòng.
- Lập trình viên so sánh model agent trên công việc thực. Mỗi ứng viên là một giá trị GOOSE_MODEL với cùng endpoint, định giá tự động qua usage theo từng key.
- Đội platform muốn chi tiêu agent hiện rõ theo từng key và từng model trên một bề mặt thanh toán, thay vì đối soát nhiều dashboard vendor.
- Lập trình viên không có quyền truy cập thanh toán của một vendor nào đó. Truy cập dựa trên nạp tiền không yêu cầu thẻ loại bỏ sự phụ thuộc đăng ký theo từng provider.
Xác minh endpoint và debug phiên đầu tiên.
Xác nhận gateway phục vụ id trong GOOSE_MODEL trước khi bắt đầu một phiên; danh sách /v1/models là chính tả xác thực, kể cả hậu tố phiên bản. Lỗi ở phiên đầu tiên khá nhất quán. Một lỗi 404 nghĩa là host và path ghép sai, gần như luôn là do /v1 trong OPENAI_HOST. Một lỗi 401 nghĩa là key không nằm ở chỗ Goose tìm: không export trong shell đã khởi chạy nó, không có trong keychain, hoặc nằm vô dụng trong config.yaml. Một lỗi model-not-found từ gateway là lỗi gõ sai id trong GOOSE_MODEL. Nếu phiên khởi động được nhưng tool call cư xử lạ, hãy kiểm tra bạn đang dùng một model thực sự hỗ trợ tool use; các id trong bảng trên đều hỗ trợ. Khi vòng lặp đã chạy, console APIsRouter hiển thị model theo từng request, số token, và chi phí. Một agent tự chủ là khối lượng công việc mà điều này quan trọng nhất: phiên dài, nhiều lượt tool call, và view usage là cách bạn thấy một buổi chiều dùng Goose thực sự tốn bao nhiêu.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" | head -50Câu hỏi thường gặp
Goose có thể chạy model Claude hay Kimi qua provider openai của nó không?
Có. Provider openai là một client giao thức, không phải khóa cứng vendor: với OPENAI_HOST trỏ vào một endpoint đa vendor, GOOSE_MODEL có thể là bất kỳ id nào được phục vụ, kể cả Claude, Kimi, và Qwen, và vòng lặp agent kèm tool call hoạt động không đổi.
OPENAI_HOST có cần hậu tố /v1 không?
Không, và thêm nó sẽ làm hỏng định tuyến. OPENAI_HOST nhận host trần (https://api.apisrouter.com); path request nằm trong OPENAI_BASE_PATH, mặc định là v1/chat/completions. Đây là ngược lại với quy ước hầu hết công cụ dùng.
Khác biệt giữa ghi đè env và một file provider tùy chỉnh là gì?
Ghi đè env định tuyến lại provider openai tích hợp sẵn: nhanh nhất để cài đặt, lý tưởng cho CI. Một file JSON provider tùy chỉnh trong ~/.config/goose/custom_providers/ đăng ký gateway như một provider có tên riêng với biến key riêng và danh sách model riêng. Cùng một endpoint dù chọn cách nào; chọn một cái.
Vì sao Goose bỏ qua API key tôi đặt trong config.yaml?
Đó là chủ ý. Goose đọc bí mật từ keychain hệ thống hoặc biến môi trường và bỏ qua key trong config.yaml. Export OPENAI_API_KEY (hoặc biến api_key_env của bạn), hoặc nhập key qua goose configure hay cài đặt desktop để nó vào keychain.
CLI và app desktop có dùng chung cấu hình này không?
Chúng dùng chung config.yaml và keychain, nhưng không dùng chung shell environment: biến export trong một terminal chạm tới phiên CLI khởi chạy từ terminal đó, không chạm tới app desktop. Cấu hình app desktop qua UI cài đặt của nó, hoặc dựa vào file config chung cộng keychain.
GOOSE_MODEL nên đặt tên model nào cho việc agent?
Bắt đầu với claude-sonnet-4-6 cho vòng lặp chính; nó giữ vững tốt với tool use nhiều bước. Thử kimi-k2.7-code cho các phiên nặng về refactor và một id tầm trung cho việc CI phạm vi rõ ràng. Sau một endpoint, mỗi thử nghiệm chỉ là đổi một biến.