Magdagdag ng custom OpenAI-compatible provider sa Zed.

Updated 2026-07-29

Binabasa ng Zed ang mga custom provider diretso mula sa settings.json. Magdeklara ng language_models.openai_compatible block na may api_url na naka-set sa https://api.apisrouter.com/v1, ilista ang mga model id na gusto mo, at ang bawat isa ay lilitaw sa model picker ng agent panel sa ilalim ng iisang key.

Mabilisang sagot: isang block sa settings.json.

Native na sinusuportahan ng Zed ang mga custom OpenAI-compatible provider. Magdagdag ng provider entry sa ilalim ng language_models.openai_compatible sa settings.json, itakda ang api_url sa https://api.apisrouter.com/v1, at ideklara ang bawat model na gusto mo sa ilalim ng available_models kasama ang pangalan at laki ng context nito. Agad na lilitaw ang mga model sa agent panel model dropdown. Sadyang hindi napupunta sa settings.json ang API key. Itinatago ito ng Zed sa system keychain kapag ipinasok mo sa pamamagitan ng provider settings UI, o binabasa mula sa isang environment variable na hinango mula sa iyong provider key: ang provider na pinangalanang apisrouter ay bumabasa ng APISROUTER_API_KEY. Mas may priyoridad ang mga environment variable kaysa sa mga value ng keychain.

{
  "language_models": {
    "openai_compatible": {
      "apisrouter": {
        "api_url": "https://api.apisrouter.com/v1",
        "available_models": [
          {
            "name": "claude-sonnet-4-6",
            "display_name": "Claude Sonnet 4.6",
            "max_tokens": 200000
          }
        ]
      }
    }
  }
}

Paano nilulutas ng Zed ang mga custom provider at model.

Ang Zed (zed-industries sa GitHub, humigit-kumulang 87K stars) ay isang high-performance na editor na may agent panel na nagpaplano, nag-e-edit ng mga file, at nagpapatakbo ng mga tool. Nagsasalita ang openai_compatible na provider type nito sa standard na /v1/chat/completions na protocol, na eksaktong si-serve ng isang multi-vendor na gateway, kaya walang plugin o extension sa pagitan ng editor at ng endpoint. May dobleng gawain ang provider key na pinili mo ("apisrouter" sa itaas). Pinapangalanan nito ang provider sa agent panel settings, at binubuo nito ang environment variable na sinusuri ng Zed para sa key, upper-snake-cased na may _API_KEY na suffix. Mahalagang maunawaan ang panuntunang iyon sa pagpapangalan bago mag-debug ng kahit ano: palitan ang pangalan ng provider at magbabago rin ang inaasahang pangalan ng variable. Ang available_models ay isang allowlist. Hindi kayang i-enumerate ng Zed ang isang custom endpoint nang mag-isa, kaya ang mga id lamang na idinedeklara mo ang nagiging mapipili, bawat isa ay eksaktong string kasama ang anumang version suffix. Kapag ang endpoint sa likod ng api_url ay nagse-serve ng mga id ng Claude, GPT, Gemini, at Kimi magkatabi, ginagawa ng isang provider block na cross-vendor na switchboard sa likod ng isang key ang agent panel picker. Isang paalala sa saklaw: gumagamit ang edit predictions feature ng Zed ng sarili nitong mga dedicated na model at hiwalay itong na-configure; ang isang custom provider ay nagpapatakbo sa agent panel at inline assistant, hindi sa edit predictions.

Buong setup: mga model, laki ng context, at capabilities.

Ang bawat entry ng available_models ay tumatanggap ng higit pa sa isang pangalan. Idinideklara ng max_tokens ang context window ng model, at sinusukat ng max_output_tokens ang haba ng generation; ginagamit ng Zed ang mga figure na ito para pamahalaan ang mahahabang agent thread, kaya ang pagdedeklara ng isang long-context na model na may maliit na max_tokens ay tahimik na nasasayang ang headroom ng model. Sinasabi ng capabilities object sa Zed kung ano ang suportado ng model: itakda ang tools sa true para sa kahit ano na plano mong ipatakbo sa agent panel, at paganahin lamang ang images para sa mga model na talagang tumatanggap ng image input. Para sa key, ang maaasahang path sa isang desktop editor ay ang provider settings UI, na nag-iimbak ng value sa system keychain. Gumagana rin ang environment-variable na path, na may isang paalala na sakop sa seksyon ng debugging: hindi mana ng mga GUI application na inilunsad mula sa dock ang iyong shell profile.

{
  "language_models": {
    "openai_compatible": {
      "apisrouter": {
        "api_url": "https://api.apisrouter.com/v1",
        "available_models": [
          {
            "name": "claude-sonnet-4-6",
            "display_name": "Claude Sonnet 4.6",
            "max_tokens": 200000,
            "max_output_tokens": 64000,
            "capabilities": { "tools": true, "images": false }
          },
          {
            "name": "claude-opus-4-7",
            "display_name": "Claude Opus 4.7",
            "max_tokens": 200000,
            "capabilities": { "tools": true }
          },
          { "name": "gpt-5.5", "display_name": "GPT-5.5", "max_tokens": 200000 },
          { "name": "kimi-k2.7-code", "display_name": "Kimi K2.7 Code", "max_tokens": 200000 }
        ]
      }
    }
  }
}

Pagpili ng mga model para sa agent panel.

Dahil nasa parehong picker ang bawat idinedeklarang model, ang praktikal na workflow ay paghahambing sa tunay na trabaho sa halip na mga benchmark: patakbuhin ang parehong klase ng gawain sa dalawang kandidato sa magkaibang araw at hayaang pagpasyahan ng per-key na usage log ang bawat isa. Isang dropdown selection lamang ang pagpapalit ng model sa Zed, kaya zero ang setup cost ng eksperimento.

  • Nagdadala ng tunay na engineering ang agent panel: pagbabasa ng mga file, pagpaplano ng multi-step na mga edit, pagpapatakbo ng mga tool sa mahahabang thread. Rito nabibilang ang isang frontier na coding model (claude-sonnet-4-6, claude-opus-4-7, gpt-5.5).
  • Sulit idekralara ang mga coding-tuned na id tulad ng kimi-k2.7-code kahit hindi sila iyong default; ang paglipat para sa isang session na puno ng refactor ay isang picker selection lamang, hindi config edit.
  • Kumikita ng lugar ang mga long-context na model tulad ng gemini-3.1-pro-preview kapag ang mga thread ay palaging kumukuha ng malalaking file o buong-module na context sa isang usapan.
  • Mas maikli ang inline assist kaysa sa mga agent thread, kaya ang isang mabilis na mid-tier na id ay nagpapanatiling mabilis ang single-shot na mga transformation nang hindi ginagastos ang frontier tokens sa isang linyang rewrite.

Pay-as-you-go · mas mababa sa opisyal na presyo

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

ModelOpisyal na PresyoAming Presyo
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.5$5.00 / $30.00 per M$4.00 / $24.00 per M
Kimi K2.7 Code$0.95 / $4.00 per M$1.00 / $4.00 per M
Gemini 3.1 Pro Preview$2.00 / $12.00 per M$1.60 / $9.60 per M

Ang mga failure mode na specific sa mga custom provider ng Zed.

Nasa settings.json ang key at walang gumagana. Sadyang hindi nagbabasa ang Zed ng API key mula sa settings.json. Ipasok ang key sa provider settings UI, o i-export ang hinangong environment variable; hindi pinapansin ang key na na-paste sa JSON. Naka-set na ang environment variable pero humihingi pa rin ng key ang Zed. Hinango ang pangalan ng variable mula sa provider key, upper-snake-cased na may dagdag na _API_KEY, kaya kailangan ng provider na pinangalanang apisrouter ng APISROUTER_API_KEY, hindi ng OPENAI_API_KEY. At sa macOS, hindi kailanman sinosource ng isang app na inilunsad mula sa dock ang shell profile mo, kaya hindi nakikita ng app ang mga export mula sa profile. Ilunsad ang Zed mula sa terminal gamit ang zed command, o gamitin ang keychain path at laktawan ang problema nang buo. Nawawala ang isang model sa picker. Ang available_models ay isang allowlist; ang isang id na inaakala mo pero hindi mo talaga idinekrala ay hindi lamang umiiral. Ang mga id ay eksaktong string kasama ang mga version suffix, at ang listahan ng /v1/models ng gateway ang totoong pagbabaybay na kokopyahin. Hindi kayang gumamit ng tools ang agent. Kung ang capabilities block ng isang model ay nagsasabing false ang tools, hindi mag-aalok ang Zed ng tool use dito. Ideklara ang capabilities na tumutugma sa talagang suportado ng model. Ang api_url nang walang /v1. Idinaragdag ng client ang mga route path tulad ng /chat/completions sa base na ibinigay mo, kaya tama ang https://api.apisrouter.com/v1 at hindi ang bare host. Ang isang 404-shaped na pagkabigo sa kung tuwid naman ang block ay halos palaging ito.

Sino ang nagru-route ng Zed sa pamamagitan ng isang gateway.

  • Mga developer na nabubuhay sa editor at gustong makita ang Claude, GPT, at Kimi sa isang agent panel picker sa halip na magpanatili ng hiwalay na credentials bawat vendor.
  • Mga engineer na nagkukumpara ng coding models sa tunay na mga edit. Bawat kandidato ay isang idinedeklarang entry at isang dropdown selection; walang bagong account bawat eksperimento.
  • Mga team na nagsa-standardize sa isang secret. Isang APISROUTER_API_KEY sa onboarding docs ang pumapalit sa checklist ng vendor key bawat isa, at ipinapakita ng per-key usage kung ano ang ginagastos ng bawat seat.
  • Mga user na nagpapares ng frontier na agent model kasama ang mabilis na inline-assist na model mula sa ibang vendor, na hindi kayang ipahayag ng mga single-vendor na config.
  • Mga developer na walang access sa billing ng isang partikular na vendor. Inaalis ng top-up based na access na walang kailangang card ang sign-up dependency bawat provider.

I-verify ang endpoint at i-debug ang unang thread.

Bago magsimula ng agent thread, ilista kung ano ang si-serve ng gateway. Ang mga id na ibinabalik ng /v1/models ay eksaktong mga string na dapat gamitin ng mga entry ng available_models mo. Consistent ang mga pagkabigo sa unang thread. Ang 401 ay nangangahulugang mali o wala ang key na nalutas ng Zed: suriin ang keychain entry sa provider settings, o kumpirmahing nakikita ng Zed process ang hinangong environment variable, hindi lamang ng terminal mo. Ang model-not-found na error mula sa gateway ay nangangahulugang hindi tumutugma ang idinedeklarang pangalan sa isang na-serve na id, kasama ang version suffix. Kung hindi lumitaw ang provider block sa settings nang buo, i-validate ang JSON; tumatanggap ang settings.json ng mga comment pero hindi ng mga structural na error. Kapag dumadaloy na ang mga request, ipinapakita ng APIsRouter console ang per-request na model, token counts, at gastos. Ang mga agent thread ay long-context, maraming-turn na workload, at ang pagkita kung aling mga thread at aling mga model ang gumagastos ng tokens ang paraan mo para magpasya kung kumikita ba ang default model mo sa slot nito.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

Mga madalas itanong

Maaari bang gamitin ng Zed ang mga model ng Claude, GPT, at Kimi sa pamamagitan ng isang custom provider?

Oo. Ang isang custom provider ay isang api_url kasama ang isang available_models allowlist. Kapag nagse-serve ang endpoint ng maraming vendor, magdeklara ng isang entry bawat id at lumilitaw ang bawat idinedeklarang model sa agent panel picker sa ilalim ng parehong provider at key, mapapalitan bawat thread.

Saan pumupunta ang API key para sa custom provider ng Zed?

Hindi sa settings.json. Ipasok ito sa provider settings UI, na nag-iimbak nito sa system keychain, o i-export ang environment variable na hinango mula sa provider key mo: bumabasa ng APISROUTER_API_KEY ang provider na pinangalanang apisrouter. Mas may priyoridad ang mga environment variable kaysa sa mga value ng keychain.

Bakit binabalewala ng Zed ang API key na na-export ko sa shell profile ko?

Hindi kailanman sinosource ng mga GUI app na inilunsad mula sa dock ang shell profile mo, kaya hindi nakikita ng mga ito ang export. Ilunsad ang Zed mula sa terminal gamit ang zed command para mana nito ang variable, o gamitin ang settings UI at hayaang ang keychain ang mag-imbak ng key.

Bakit nawawala ang aking model sa agent panel picker?

Dapat tahasang idineklara ang mga model ng custom provider; hindi kayang i-enumerate ng Zed ang isang custom endpoint. Suriin kung nasa available_models ang eksaktong id string, kasama ang mga version suffix, at kopyahin ang mga id mula sa /v1/models na tugon ng gateway sa halip na i-type mula sa alaala.

Ano ang kinokontrol ng max_tokens at max_output_tokens sa available_models?

Idinideklara ng max_tokens ang context window ng model at sinusukat ng max_output_tokens ang haba ng generation. Ginagamit ito ng Zed para pamahalaan ang mahahabang agent thread, kaya itakda ang max_tokens sa talagang suportado ng model; ang pagkulang dito ay nagtatanggal ng context na taglay talaga ng model.

Binabago ba ng custom provider ang edit predictions ng Zed?

Hindi. Tumatakbo ang edit predictions sa sarili nitong mga dedicated na model ng Zed at hiwalay itong na-configure. Ang isang custom OpenAI-compatible na provider ay nagpapatakbo sa agent panel at inline assistant, kung saan napupunta ang /v1/chat/completions na traffic.