একটা কাস্টম OpenAI-compatible endpoint-এ Goose চালান।
Updated 2026-07-29
Goose-এর openai provider একটা host override নেয়। GOOSE_PROVIDER=openai সেট করুন, OPENAI_HOST-কে https://api.apisrouter.com-এ point করুন, এক key export করুন, এবং tool call সহ পুরো agent loop একটা single endpoint দিয়ে route হয় যেখানে catalog-এর প্রতিটা model id দিয়ে addressable।
দ্রুত উত্তর: openai provider রাখুন, host override করুন।
Goose একটা documented কাস্টম-endpoint path ship করে: GOOSE_PROVIDER-কে openai-তে রাখুন এবং সেই provider কোথায় point করে তা override করুন। OPENAI_HOST default api.openai.com host-এর জায়গা নেয়, OPENAI_API_KEY authenticate করে, এবং GOOSE_MODEL exact id দিয়ে model pick করে। Request path আলাদা: OPENAI_BASE_PATH default v1/chat/completions-এ থাকে এবং সাধারণত কোনো change দরকার হয় না। shape-টা carefully খেয়াল করুন, কারণ এটা এই class-এর বেশিরভাগ tool-এর উল্টো: OPENAI_HOST bare host নেয়, https://api.apisrouter.com, কোনো /v1 suffix ছাড়া। /v1/chat/completions অংশ OPENAI_BASE_PATH-এ থাকে। host-এ /v1 append করলে path দুইবার হয়ে যায় এবং এমন 404 তৈরি করে যা একটা ভাঙা gateway-এর মতো দেখায়।
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 sessionGoose কীভাবে তার provider-এর সাথে কথা বলে।
Goose (GitHub-এ block, প্রায় 51K star) হলো Block-এর একটা autonomous engineering agent যা task plan করে, file edit করে, shell command চালায়, এবং MCP-based extension চালায়। এসবই এক model conversation-এর উপর বসে: loop-এর প্রতিটা step tool definition সহ একটা /v1/chat/completions request, তাই provider configuration ঠিক করে পুরো agent কোথায় চলে। Configuration layered। interactive path হলো goose configure, যা openai provider-এর জন্য API key এবং একটা optional কাস্টম host জিজ্ঞাসা করে, তারপর GOOSE_PROVIDER এবং GOOSE_MODEL-এর মতো non-secret settings ~/.config/goose/config.yaml-এ লেখে; desktop app এর UI দিয়ে একই provider settings expose করে। Secret আলাদাভাবে handle হয়: key system keychain-এ যায় বা environment variable থেকে আসে, এবং সরাসরি config.yaml-এ paste করা একটা key পড়ার বদলে ignore হয়। Environment variable file-কে override করে, যা উপরের env path-কে laptop shell থেকে CI runner পর্যন্ত সবখানে কাজ করায়। Goose যেহেতু GOOSE_MODEL একটা plain string হিসেবে pass করে, id OPENAI_HOST-এর পেছনের endpoint যা serve করে তা যেকোনো কিছু হতে পারে: আজ একটা Claude id, কাল একটা Kimi বা Qwen id, শুধু এক variable-এর ব্যবধান।
Declarative path: একটা কাস্টম provider file।
env override-এর বাইরে, current Goose documentation declarative কাস্টম provider-ও বর্ণনা করে: ~/.config/goose/custom_providers/-এ (Windows-এ per-platform config directory) drop করা একটা JSON file যা built-in-গুলোর পাশে একটা named provider register করে। File engine declare করে (chat-completions endpoint-এর জন্য openai), কোন environment variable key ধরে রাখে, endpoint URL, এবং provider যে model offer করে। এখানে URL convention খেয়াল করুন, কারণ এটা আবার উল্টে যায়: OPENAI_HOST-এর মতো নয়, কাস্টম provider-এর base_url পুরো request URL path সহ, https://api.apisrouter.com/v1/chat/completions। প্রতিটা models entry একটা context_limit বহন করে যাতে Goose জানে এটা কতটা window pack করতে পারে। Declarative file বেশি ভালো fit যখন আপনি চান gateway Goose-এর provider list-এ তার নিজের named provider হিসেবে দেখা যাক, নিজের key variable সহ, openai slot দখল না করে। CI এবং দ্রুত switching-এর জন্য env override বেশি ভালো fit। দুটোই একই endpoint-এ গিয়ে শেষ হয়; একটা বেছে নিন এবং সেগুলো stack করা এড়িয়ে চলুন।
{
"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
}একটা autonomous agent-এর জন্য model বেছে নেওয়া।
Practical workflow হলো আপনার task set fixed রাখা এবং প্রতিটার জন্য কয়েকটা session ধরে দুই বা তিনটা candidate জুড়ে GOOSE_MODEL rotate করা। প্রতিটা candidate যেহেতু একই key দিয়ে route করে, per-key usage view আপনার দিকে কোনো bookkeeping ছাড়াই প্রতিটা experiment price করে।
- Goose unattended stretch চালায়: plan, edit, run, output পড়া, repeat। raw eloquence-এর চেয়ে tool-call reliability বেশি গুরুত্বপূর্ণ, যে কারণে claude-sonnet-4-6 এবং claude-opus-4-7 main loop-এর জন্য মানুষ যেখানে converge করে সেই default।
- kimi-k2.7-code-এর মতো coding-tuned id refactor-heavy session-এর জন্য test করার যোগ্য; একটা gateway দিয়ে সেই test একটা GOOSE_MODEL change, কোনো provider migration নয়।
- লম্বা session context compound করে। declarative path-এ context_limit দিয়ে honestly declared একটা genuine 200k window-সহ একটা model, summarize করার আগে Goose-কে বেশি session history বহন করতে দেয়।
- Scripted বা CI ব্যবহারের জন্য, একটা mid-tier id (gpt-5.4, qwen3.7-max) প্রায়ই frontier spend-এর একটা ভগ্নাংশে well-scoped task-এর bar clear করে; উপরে default করার আগে আপনার নিজের task-এ measure করুন।
ব্যবহার অনুযায়ী পেমেন্ট · অফিশিয়াল মূল্যের নিচে
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| মডেল | অফিশিয়াল মূল্য | আমাদের মূল্য |
|---|---|---|
| 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 |
Goose-specific failure mode।
OPENAI_HOST-এ appended /v1। host variable bare host নেয়; path OPENAI_BASE_PATH-এ থাকে, যা ইতিমধ্যে default v1/chat/completions-এ। host হিসেবে https://api.apisrouter.com/v1 /v1/v1/... request এবং 404 তৈরি করে। এটা একক সবচেয়ে সাধারণ ভুল, ঠিক কারণ অন্য প্রতিটা tool /v1 suffix চায়। কাস্টম provider file-এ full-URL convention। declarative base_url হলো /v1/chat/completions সহ পুরো request URL, OPENAI_HOST-এর বিপরীত convention। একটা কাস্টম provider file-এ একটা bare host copy করা এটাকে ঠিক ততটাই ভাঙে যতটা OPENAI_HOST-এ একটা full URL copy করা ভাঙে। config.yaml-এর key authenticate করে না। Goose keychain বা environment থেকে secret পড়ে, এবং config.yaml-এ রাখা key value ignore করে। file edit করার পরেও একটা 401 থেকে গেলে, এটাই কারণ; variable export করুন বা goose configure আবার চালান এবং prompt হলে key enter করুন। Desktop session shell export দেখে না। desktop app আপনার terminal profile থেকে কিছুই inherit করে না। desktop settings UI দিয়ে provider configure করুন, অথবা variable সেট আছে এমন একটা shell থেকে launch করুন। Stacked configuration source। একটা পুরনো OPENAI_HOST export আপনি এইমাত্র config.yaml-এ যা সেট করেছেন তা override করতে পারে, কারণ environment file-কে হারায়। routing ভুল দেখালে, কোনো layer-কে দোষ দেওয়ার আগে Goose launch করা একই shell-এ relevant variable print করুন।
কারা একটা gateway দিয়ে Goose route করে।
- Engineer যারা Goose-কে daily driver হিসেবে চালান এবং প্রতি vendor-এ একটা credential set না রেখে এক key-এর পেছনে Claude, GPT, Kimi, এবং Qwen পৌঁছানোযোগ্য চান।
- Team যারা Goose-কে CI বা scheduled job-এ রাখেন। env-only path-এর মানে runner-এর ঠিক দুটো routing variable এবং এক secret দরকার, inject করা সহজ এবং rotate করা সহজ।
- Developer যারা real task-এ agent model তুলনা করেন। প্রতিটা candidate একই endpoint-এর বিরুদ্ধে একটা GOOSE_MODEL value, per-key usage দিয়ে automatically priced।
- Platform team যারা একাধিক vendor dashboard মিলিয়ে না দেখে এক billing surface-এ agent spend প্রতি key এবং প্রতি model visible চান।
- Developer যাদের কোনো নির্দিষ্ট vendor-এর billing-এ access নেই। কোনো card requirement ছাড়া Top-up based access প্রতি provider sign-up dependency সরিয়ে দেয়।
Endpoint verify করুন এবং প্রথম session debug করুন।
একটা session শুরু করার আগে confirm করুন gateway GOOSE_MODEL-এর id serve করে; /v1/models listing হলো authoritative spelling, version suffix সহ। First-session failure consistent। একটা 404 মানে host এবং path ভুল compose হয়েছে, প্রায় সবসময়ই OPENAI_HOST-এ /v1। একটা 401 মানে key Goose যেখানে খোঁজে সেখানে নেই: এটাকে launch করা shell-এ export করা নেই, keychain-এ নেই, বা config.yaml-এর ভেতরে অকেজোভাবে বসে আছে। gateway থেকে একটা model-not-found error মানে GOOSE_MODEL-এ একটা id typo। session শুরু হলেও tool call অদ্ভুতভাবে আচরণ করলে, check করুন আপনি এমন একটা model-এ আছেন যা genuinely tool use সাপোর্ট করে; উপরের table-এর সব id-ই করে। Loop চলতে শুরু করলে, APIsRouter console per-request model, token count, এবং spend দেখায়। একটা autonomous agent হলো সেই workload যেখানে এটা সবচেয়ে গুরুত্বপূর্ণ: session লম্বা, tool-call turn অনেক, এবং usage view-ই যেভাবে আপনি দেখেন একটা বিকেলের Goose আসলে কত খরচ করেছে।
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" | head -50সাধারণ প্রশ্ন
Goose কি তার openai provider দিয়ে Claude বা Kimi মডেল চালাতে পারে?
হ্যাঁ। openai provider একটা protocol client, কোনো vendor lock নয়: OPENAI_HOST একটা multi-vendor endpoint-এ point করা থাকলে, GOOSE_MODEL যেকোনো served id হতে পারে, Claude, Kimi, এবং Qwen সহ, এবং tool calling-সহ agent loop অপরিবর্তিত কাজ করে।
OPENAI_HOST-এর কি /v1 suffix দরকার?
না, এবং এটা যোগ করলে routing ভেঙে যায়। OPENAI_HOST bare host নেয় (https://api.apisrouter.com); request path OPENAI_BASE_PATH-এ থাকে, যা default v1/chat/completions-এ। এটা বেশিরভাগ tool যে convention ব্যবহার করে তার উল্টো।
env override এবং একটা কাস্টম provider file-এর মধ্যে পার্থক্য কী?
env override built-in openai provider reroute করে: setup করতে সবচেয়ে দ্রুত, CI-এর জন্য ideal। ~/.config/goose/custom_providers/-এ একটা কাস্টম provider JSON gateway-কে নিজের key variable এবং model list সহ তার নিজের named provider হিসেবে register করে। যেভাবেই হোক একই endpoint; একটা বেছে নিন।
config.yaml-এ রাখা API key Goose কেন ignore করে?
Design অনুযায়ী। Goose system keychain বা environment variable থেকে secret পড়ে এবং config.yaml-এর key ignore করে। OPENAI_API_KEY export করুন (বা আপনার api_key_env variable), অথবা goose configure বা desktop settings দিয়ে key enter করুন যাতে এটা keychain-এ চলে যায়।
CLI এবং desktop app কি এই configuration শেয়ার করে?
তারা config.yaml এবং keychain শেয়ার করে, কিন্তু আপনার shell environment নয়: একটা terminal-এ export করা variable সেই terminal থেকে launch করা CLI session-এ পৌঁছায়, desktop app-এ নয়। desktop app-কে এর settings UI দিয়ে configure করুন, বা shared config file প্লাস keychain-এর উপর নির্ভর করুন।
agent কাজের জন্য GOOSE_MODEL-এ কোন model নাম দেওয়া উচিত?
main loop-এর জন্য claude-sonnet-4-6 দিয়ে শুরু করুন; এটা multi-step tool use-এ ভালো টিকে থাকে। refactor-heavy session-এ kimi-k2.7-code এবং well-scoped CI task-এ একটা mid-tier id test করুন। এক endpoint-এর পেছনে প্রতিটা test একটা single variable change।