Özel Models
~/.pi/agent/models.json aracılığıyla özel sağlayıcılar ve modeller (Ollama, vLLM, LM Studio, proxy'ler) ekleyin.
İçindekiler
- Minimal Example
- Full Example
- Supported APIs
- Provider Configuration
- Model Configuration
- Overriding Built-in Providers
- Per-model Overrides
- Anthropic Messages Compatibility
- OpenAI Compatibility
Asgari Örnek
Yerel modeller için (Ollama, LM Studio, vLLM), model başına yalnızca id gereklidir:
{
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"api": "openai-completions",
"apiKey": "ollama",
"models": [
{ "id": "llama3.1:8b" },
{ "id": "qwen2.5-coder:7b" }
]
}
}
}apiKey değeri bir yer tutucudur çünkü Ollama onu yok sayar. pi hala modelleri /model'de görünmeden önce kimlik doğrulama gerektiriyormuş gibi ele alır, bu nedenle anahtarsız yerel sunucular sahte bir değer tutmalı, /login ile o sağlayıcı için bir anahtar kaydetmeli veya modeli seçerken --api-key'yi geçmelidir.
Bazı OpenAI uyumlu sunucular, muhakeme yeteneğine sahip modeller için kullanılan developer rolünü anlamıyor. Bu sağlayıcılar için compat.supportsDeveloperRole'yi false olarak ayarlayın, böylece pi sistem istemini bunun yerine system mesajı olarak gönderir. Sunucu ayrıca reasoning_effort'yi desteklemiyorsa, compat.supportsReasoningEffort'yi de false olarak ayarlayın.
Tüm modellere uygulamak için sağlayıcı düzeyinde compat ayarını yapabilir veya belirli bir modeli geçersiz kılmak için model düzeyinde ayarlayabilirsiniz. Bu genellikle Ollama, vLLM, SGLang ve benzeri OpenAI uyumlu sunucular için geçerlidir.
{
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"api": "openai-completions",
"apiKey": "ollama",
"compat": {
"supportsDeveloperRole": false,
"supportsReasoningEffort": false
},
"models": [
{
"id": "gpt-oss:20b",
"reasoning": true
}
]
}
}
}Tam Örnek
Belirli değerlere ihtiyaç duyduğunuzda varsayılanları geçersiz kılın:
{
"providers": {
"ollama": {
"baseUrl": "http://localhost:11434/v1",
"api": "openai-completions",
"apiKey": "ollama",
"models": [
{
"id": "llama3.1:8b",
"name": "Llama 3.1 8B (Local)",
"reasoning": false,
"input": ["text"],
"contextWindow": 128000,
"maxTokens": 32000,
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }
}
]
}
}
}/model her açtığınızda dosya yeniden yüklenir. Oturum sırasında düzenleme; yeniden başlatmaya gerek yok.
Google AI Studio Örneği
Özel Gemma 4 girişleri de dahil olmak üzere Google AI Studio'dan modeller eklemek için google-generative-ai ile baseUrl kullanın:
{
"providers": {
"my-google": {
"baseUrl": "https://generativelanguage.googleapis.com/v1beta",
"api": "google-generative-ai",
"apiKey": "$GEMINI_API_KEY",
"models": [
{
"id": "gemma-4-31b-it",
"name": "Gemma 4 31B",
"input": ["text", "image"],
"contextWindow": 262144,
"reasoning": true
}
]
}
}
}google-generative-ai API türüne özel modeller eklerken baseUrl gereklidir.
Desteklenen APIs
| API | Tanım |
|---|---|
openai-completions |
OpenAI Sohbet Tamamlamaları (en uyumlu) |
openai-responses |
OpenAI Yanıtları API |
anthropic-messages |
Antropik Mesajlar API |
google-generative-ai |
Google Üretken Yapay Zeka |
Sağlayıcı düzeyinde (tüm modeller için varsayılan) veya model düzeyinde (model başına geçersiz kılma) api öğesini ayarlayın.
Sağlayıcı Yapılandırması
| Alan | Tanım |
|---|---|
baseUrl |
API uç nokta URL'si |
api |
API türü (yukarıya bakın) |
apiKey |
İsteğe bağlı API key yapılandırması (aşağıdaki değer çözünürlüğüne bakın). Kimlik doğrulama /login/auth.json veya CLI --api-key tarafından sağlandığında bunu atlayın. |
oauth |
Dinamik OAuth sağlayıcı türü. Şu anda "radius"'yi destekliyor; ağ geçidini gerektirir baseUrl. |
headers |
Özel başlıklar (aşağıdaki değer çözünürlüğüne bakın) |
authHeader |
Authorization: Bearer <apiKey>'yi otomatik olarak eklemek için true'yi ayarlayın |
models |
Model konfigürasyonları dizisi |
modelOverrides |
Bu sağlayıcıdaki yerleşik veya uzantıya kayıtlı modeller için model başına geçersiz kılmalar |
models değerine sahip sağlayıcılar için, yerleşik olmayan sağlayıcı yapılandırmalarının, sağlayıcı veya model düzeyinde baseUrl ve bir api değeri olması gerekir. Dosyayı yüklemek için apiKey gerekli değildir: kimlik doğrulama /login/auth.json, CLI --api-key veya sağlayıcı apiKey aracılığıyla yapılandırıldığında modeller kullanılabilir hale gelir. Hiçbir kimlik doğrulaması yapılandırılmamışsa modeller yüklenir ancak /model ve --list-models'de kullanılamaz durumda kalır.
Değer Çözünürlüğü
apiKey ve headers alanları komut yürütmeyi, ortam enterpolasyonunu ve değişmez değerleri destekler:
- Kabuk komutu:
"!command"başlangıçta değerin tamamını komut olarak yürütür ve stdout'yi kullanır"apiKey": "!security find-generic-password -ws 'anthropic'" "apiKey": "!op read 'op://vault/item/credential'" - Ortam enterpolasyonu:
"$ENV_VAR"veya"${ENV_VAR}", adlandırılmış değişkenin değerini kullanır. Enterpolasyon daha büyük değişmezlerin içinde çalışır."apiKey": "$MY_API_KEY" "apiKey": "${KEY_PREFIX}_${KEY_SUFFIX}"$FOO_BAR,FOO_BARdeğişkenidir;BARgerçek metin olduğunda${FOO}_BARkullanın. Eksik ortam değişkenleri değeri çözümsüz hale getirir. - Kaçışlar:
"quot;gerçek bir"quot;yayar;"$!", komut yürütmeyi tetiklemeden değişmez bir"!"yayar."apiKey": "$literal-dollar-prefix" "apiKey": "$!literal-bang-prefix" - Gerçek değer: Doğrudan kullanılır.
MY_API_KEYgibi düz büyük harf dizeleri değişmez değerlerdir; ortam değişkenleri için$MY_API_KEYkullanın."apiKey": "sk-..."
models.json için kabuk komutları istek zamanında çözümlenir. pi, rastgele komutlar için kasıtlı olarak yerleşik TTL, eski yeniden kullanım veya kurtarma mantığını uygulamaz. Farklı komutlar, farklı önbelleğe alma ve hata stratejilerine ihtiyaç duyar ve pi, doğru olanı çıkaramaz.
Komutunuz yavaşsa, pahalıysa, hız sınırlıysa veya geçici arızalarda önceki bir değeri kullanmaya devam etmesi gerekiyorsa, onu istediğiniz önbelleğe alma veya TTL davranışını uygulayan kendi komut dosyanıza veya komutunuza sarın.
/model kullanılabilirlik kontrolleri yapılandırılmış kimlik doğrulama varlığını kullanır ve kabuk komutlarını yürütmez.
Özel Başlıklar
{
"providers": {
"custom-proxy": {
"baseUrl": "https://proxy.example.com/v1",
"apiKey": "$MY_API_KEY",
"api": "anthropic-messages",
"headers": {
"x-portkey-api-key": "$PORTKEY_API_KEY",
"x-secret": "!op read 'op://vault/item/secret'"
},
"models": [...]
}
}
}Model Yapılandırması
| Alan | Gerekli | Varsayılan | Tanım |
|---|---|---|---|
id |
Evet | — | Model tanımlayıcı (API'ye aktarıldı) |
name |
HAYIR | id |
İnsan tarafından okunabilen model etiketi. (--model desenleri) eşleştirmek için kullanılır ve ikincil model detay metni olarak gösterilir. |
api |
HAYIR | sağlayıcının api |
Bu model için sağlayıcının API değerini geçersiz kıl |
reasoning |
HAYIR | false |
Genişletilmiş düşünmeyi destekler |
thinkingLevelMap |
HAYIR | atlanmış | Pi düşünme düzeylerini sağlayıcı değerleriyle eşler ve desteklenmeyen düzeyleri işaretler (aşağıya bakın) |
input |
HAYIR | ["text"] |
Giriş türleri: ["text"] veya ["text", "image"] |
contextWindow |
HAYIR | 128000 |
Belirteçlerdeki bağlam penceresi boyutu |
maxTokens |
HAYIR | 16384 |
Maksimum çıkış jetonları |
samplingParams |
HAYIR | atlanmış | Örnekleme parametreleri her istek gövdesinde kelimesi kelimesine birleştirildi (aşağıya bakın) |
cost |
HAYIR | hepsi sıfır | İsteğe bağlı istek çapında girdi fiyatlandırma katmanlarıyla milyon başına jeton oranları |
compat |
HAYIR | sağlayıcı compat |
Sağlayıcı uyumluluğu geçersiz kılınır. Her ikisi de ayarlandığında sağlayıcı düzeyi compat ile birleştirilir. |
Maliyet katmanı tam bir alternatif ücret seti sağlar ve toplam girdi kullanımı (input + cacheRead + cacheWrite) inputTokensAbove'yi aştığında tam isteğe uygulanır. Birden fazla aşama eşleştiğinde en yüksek eşik kazanır.
{
"cost": {
"input": 5,
"output": 30,
"cacheRead": 0.5,
"cacheWrite": 6.25,
"tiers": [
{
"inputTokensAbove": 272000,
"input": 10,
"output": 45,
"cacheRead": 1,
"cacheWrite": 12.5
}
]
}
}Mevcut davranış:
/model,--list-modelsve modele göre etkileşimli altbilgi ekranı girişleriid.- Yapılandırılmış
name, model eşleştirme ve ikincil model detay metni için kullanılır. Altbilgi/durum çubuğu model kimliğinin yerini almaz.
Örnekleme Parametreleri
samplingParams, pi alanları kendini ayarladıktan sonra modelin her istek gövdesiyle kelimesi kelimesine birleştirilen serbest biçimli bir nesnedir, böylece anahtarları kazanır. Pi'nin modellemediği örnekleme parametrelerini göndermek için bunu kullanın — llama.cpp'nin min_p veya vLLM'nin top_k'si gibi sunucuya özgü olanlar dahil:
{
"id": "deepseek-v4-flash",
"samplingParams": {
"temperature": 1.0,
"top_p": 0.95,
"top_k": 0,
"min_p": 0.0
}
}Yalnızca OpenAI uyumlu API'ler bunu uygular (openai-completions, openai-responses, azure-openai-responses); diğer API'ler bunu görmezden gelir. Anahtarlar pi'nin adlandırılmış istek alanlarını geçersiz kılar (örneğin, burada bir temperature anahtarı istek seviyesi sıcaklığını geçer), bu nedenle onu bir model için tek örnekleme doğruluğu kaynağı olarak tercih edin. modelOverrides'de, samplingParams anahtar başına temel modelin değeriyle birleşir.
Düşünme Seviyesi Haritası
Modele özgü düşünme kontrollerini tanımlamak için bir model üzerinde thinkingLevelMap kullanın. Anahtarlar pi düşünme seviyeleridir: off, minimal, low, medium, high, xhigh, max. Haritalar delikler içerebilir; örneğin, bir model xhigh'yi göstermeden high ve max'yi ortaya çıkarabilir.
Değerler üç durumludur:
| Değer | Anlam |
|---|---|
| atlanmış | high arasındaki standart düzeyler, sağlayıcının varsayılan eşlemesini kullanır; genişletilmiş xhigh ve max seviyeleri desteklenmez |
| sicim | Seviye desteklenir ve bu değer sağlayıcıya gönderilir |
null |
Seviye desteklenmiyor ve gizleniyor/atlanıyor/sabitleniyor |
Yalnızca kapalı, yüksek ve maksimum akıl yürütmeyi destekleyen bir model örneği:
{
"id": "deepseek-v4-pro",
"reasoning": true,
"thinkingLevelMap": {
"minimal": null,
"low": null,
"medium": null,
"high": "high",
"xhigh": null,
"max": "max"
}
}Düşünmenin devre dışı bırakılamayacağı bir model örneği:
{
"id": "always-thinking-model",
"reasoning": true,
"thinkingLevelMap": {
"off": null
}
}Taşıma: compat.reasoningEffortMap kullanan eski yapılandırmalar, bu eşlemeyi model düzeyi thinkingLevelMap'ye taşımalıdır. Kullanıcı arayüzünde görünmemesi gereken seviyeler için null tuşunu kullanın.
Yerleşik Providers Geçersiz Kılma
Yerleşik bir sağlayıcıyı, modelleri yeniden tanımlamadan bir proxy aracılığıyla yönlendirin:
{
"providers": {
"anthropic": {
"baseUrl": "https://my-proxy.example.com/v1"
}
}
}Tüm yerleşik Antropik modeller mevcut olmaya devam ediyor. Mevcut OAuth veya API key kimlik doğrulaması çalışmaya devam eder.
Özel modelleri yerleşik bir sağlayıcıda birleştirmek için models dizisini ekleyin:
{
"providers": {
"anthropic": {
"baseUrl": "https://my-proxy.example.com/v1",
"apiKey": "$ANTHROPIC_API_KEY",
"api": "anthropic-messages",
"models": [...]
}
}
}Anlambilimi birleştirme:
- Yerleşik modeller korunur.
- Özel modeller sağlayıcı içinde
idkadar yükseltilir. - Özel bir model
idyerleşik bir modelleideşleşirse, özel model bu yerleşik modelin yerini alır. - Özel bir model
idyeniyse yerleşik modellerin yanına eklenir.
Model Başına Geçersiz Kılmalar
Sağlayıcının tam model listesini değiştirmeden yerleşik modelleri özelleştirmek ve uzantıya kayıtlı modelleri eşleştirmek için modelOverrides tuşunu kullanın.
{
"providers": {
"openrouter": {
"modelOverrides": {
"anthropic/claude-sonnet-4": {
"name": "Claude Sonnet 4 (Bedrock Route)",
"compat": {
"openRouterRouting": {
"only": ["amazon-bedrock"]
}
}
}
}
}
}
}modelOverrides model başına şu alanları destekler: name, reasoning, thinkingLevelMap, input, cost (kısmi), contextWindow, maxTokens, samplingParams (anahtar başına birleştirilmiş), headers, compat.
Doğrudan OpenAI GPT-5.6 Sol, Terra ve Luna varsayılan olarak 272000 bağlam penceresine ayarlanır, böylece istekler OpenAI'nin kısa bağlam fiyatlandırma katmanında kalır. OpenAI'nin 1,05M bağlam penceresine dahil olmak için kullandığınız her modelde pencereyi artırın:
{
"providers": {
"openai": {
"modelOverrides": {
"gpt-5.6-sol": {
"contextWindow": 1050000
}
}
}
}
}Geçersiz kılma, yerleşik fiyatlandırma meta verilerini korur. Toplam 272.000'den fazla giriş jetonu içeren istekler, isteğin tamamı için GPT-5.6'nın uzun bağlam hızlarını kullanır. Gerektiğinde aynı geçersiz kılmayı gpt-5.6-terra veya gpt-5.6-luna'ye uygulayın.
Davranış notları:
modelOverridesyerleşik sağlayıcı modellerine ve eşleşen uzantıya kayıtlı sağlayıcı modellerine uygulanır.- Bilinmeyen model kimlikleri dikkate alınmaz.
- Sağlayıcı düzeyindeki
baseUrl/headers'yimodelOverridesile birleştirebilirsiniz. namegeçersiz kılınması yalnızca model eşleşmesini ve ikincil ayrıntı metnini değiştirir; alt bilgi ve birincil model listeleri modeliidgöstermeye devam ediyor.- Bir sağlayıcı için
modelsda tanımlanmışsa özel modeller yerleşik geçersiz kılmalardan sonra birleştirilir. Aynıiddeğerine sahip özel bir model, geçersiz kılınan yerleşik model girişinin yerini alır.
Antropik Mesaj Uyumluluğu
api: "anthropic-messages" kullanan sağlayıcılar veya proxy'ler için, Anthropic'e özgü istek uyumluluğunu kontrol etmek için compat kullanın.
Varsayılan olarak pi, araç başına eager_input_streaming: true gönderir. Proxy veya Antropik uyumlu bir arka uç bu alanı reddederse supportsEagerToolInputStreaming'yi false olarak ayarlayın. Pi, tools[].eager_input_streaming'yi atlayacak ve bunun yerine araç özellikli istekler için eski fine-grained-tool-streaming-2025-05-14 beta başlığını gönderecektir.
Bazı Antropik modeller, eski bütçeye dayalı düşünme yükü yerine uyarlanabilir düşünmeyi (thinking.type: "adaptive" artı output_config.effort) gerektirir. Yerleşik modeller bunu otomatik olarak ayarlar. Bu modellere yönlendiren özel sağlayıcılar veya takma adlar için forceAdaptiveThinking'yi true olarak ayarlayın.
Bazı Antropik uyumlu sağlayıcılar boş imzalara sahip düşünme blokları yayar ve bunların tekrar oynatılmasını bekler. Yalnızca bu sağlayıcılar için allowEmptySignature'ı true olarak ayarlayın; gerçek Antropik boş düşünce imzalarını reddeder.
Yerleşik Antropik modeller, model meta verilerinde supportsStrictTools özelliğini etkinleştirir. Özel Antropik uyumlu modeller, uç noktaları katı JSON şema aracı tanımlarını kabul ettiğinde bunu true olarak ayarlamalıdır.
{
"providers": {
"anthropic-proxy": {
"baseUrl": "https://proxy.example.com",
"api": "anthropic-messages",
"apiKey": "$ANTHROPIC_PROXY_KEY",
"compat": {
"supportsEagerToolInputStreaming": false,
"supportsLongCacheRetention": true,
"forceAdaptiveThinking": true,
"allowEmptySignature": true
},
"models": [
{
"id": "claude-opus-4-7",
"reasoning": true,
"input": ["text", "image"]
}
]
}
}
}| Alan | Tanım |
|---|---|
supportsEagerToolInputStreaming |
Sağlayıcının araç başına eager_input_streaming kabul edip etmediği. Varsayılan: true. Bu alanı atlamak ve aracın etkin olduğu isteklerde eski ayrıntılı araç akışı beta başlığını kullanmak için false olarak ayarlayın. |
supportsLongCacheRetention |
Önbellek tutma long olduğunda sağlayıcının Antropik uzun önbellek tutmayı (cache_control.ttl: "1h") kabul edip etmediği. Varsayılan: true. |
sendSessionAffinityHeaders |
Önbelleğe alma etkinleştirildiğinde oturum kimliğinden x-session-affinity gönderilip gönderilmeyeceği. Varsayılan: bilinen sağlayıcılar için otomatik olarak algılanır. |
supportsCacheControlOnTools |
Sağlayıcının araç tanımlarında Antropik stil cache_control işaretleyicileri kabul edip etmediği. Varsayılan: true. |
forceAdaptiveThinking |
Bu model için uyarlanabilir düşünmenin (thinking.type: "adaptive" artı output_config.effort) gönderilip gönderilmeyeceği. Yerleşik uyarlanabilir modeller bunu otomatik olarak ayarlar. Varsayılan: false. |
allowEmptySignature |
Düşünceyi metne dönüştürmek yerine boş düşünme imzalarının signature: "" olarak yeniden oynatılıp oynatılmayacağı. Varsayılan: false. |
supportsStrictTools |
Sağlayıcının katı JSON şema aracı tanımlarını kabul edip etmediği. Varsayılan: false; yerleşik Antropik modeller, oluşturulan meta verilerde bunu mümkün kılar. |
OpenAI Uyumluluğu
Kısmi OpenAI uyumluluğuna sahip sağlayıcılar için compat alanını kullanın.
- Sağlayıcı düzeyi
compat, varsayılanları o sağlayıcının altındaki tüm modellere uygular. - Model düzeyi
compat, söz konusu model için sağlayıcı düzeyindeki değerleri geçersiz kılar.
{
"providers": {
"local-llm": {
"baseUrl": "http://localhost:8080/v1",
"api": "openai-completions",
"compat": {
"supportsUsageInStreaming": false,
"maxTokensField": "max_tokens"
},
"models": [...]
}
}
}| Alan | Tanım |
|---|---|
supportsStore |
Sağlayıcı store alanını destekliyor |
supportsDeveloperRole |
developer ve system rolünü kullanın |
supportsReasoningEffort |
reasoning_effort parametresi desteği |
supportsUsageInStreaming |
stream_options: { include_usage: true }'yi destekler (varsayılan: true) |
supportsFinishReason |
Akışlı yanıtların finish_reason içerip içermediği. false olduğunda pi, akış sona erdiğinde stop veya toolUse sonucunu çıkarır. Varsayılan: true. |
maxTokensField |
max_completion_tokens veya max_tokens kullanın |
requiresToolResultName |
Araç sonuç mesajlarına name ekleyin |
requiresAssistantAfterToolResult |
Araç sonuçlarından sonra kullanıcı mesajının önüne bir asistan mesajı ekleyin |
requiresThinkingAsText |
Düşünme bloklarını düz metne dönüştürün |
requiresReasoningContentOnAssistantMessages |
Akıl yürütme etkinleştirildiğinde, tekrarlanan tüm asistan mesajlarına boş reasoning_content ekle |
thinkingFormat |
reasoning_effort, openrouter, deepseek, together, baseten, zai, qwen, chat-template veya qwen-chat-template düşünme parametrelerini kullanın |
chatTemplateKwargs |
thinkingFormat: "chat-template" için chat_template_kwargs değerleri; pi kontrollü düşünme değerleri için { "$var": "thinking.enabled" } veya { "$var": "thinking.effort" } kullanın |
chatTemplateArgs |
thinkingFormat: "baseten" için chat_template_args değerleri; pi kontrollü düşünme değerleri için { "$var": "thinking.enabled" } veya { "$var": "thinking.effort" } kullanın |
cacheControlFormat |
Sistem isteminde, son araç tanımında ve son kullanıcı, asistan veya araç sonucu metin içeriğinde Antropik stil cache_control işaretleyicileri kullanın. Şu anda yalnızca anthropic desteklenmektedir. |
sendSessionAffinityHeaders |
openai-completions için, önbelleğe alma etkinleştirildiğinde oturum kimliğinden oturum benzeşimi başlıklarını gönderin. Varsayılan: false. |
sessionAffinityFormat |
openai-completions ve openai-responses için, oturum benzeşimi başlık formatı: openai session_id/x-client-request-id gönderir (tamamlamalar ayrıca x-session-affinity), openai-nosession alt çizgi içeren session_id başlığını atlar, openrouter x-session-id gönderir. prompt_cache_key vücut parametresini etkilemez. Varsayılan: otomatik olarak algılandı. |
supportsStrictMode |
Sağlayıcının katı JSON-şema işlev aracı tanımlarını kabul edip etmediği. Varsayılanlar API'ye bağlıdır; yerleşik OpenAI modelleri açık yetenek meta verileri taşır. |
supportsOpenAIGrammarTools |
OpenAI uyumlu API'lerin özel Lark/regex dilbilgisi araçları yayınlayıp yayınlamadığı. false olduğunda dilbilgisi açısından kısıtlı araçlar normal işlevli araçlara geri döner. Varsayılan: false; yerleşik model kataloğu bunu OpenAI, OpenAI Codex, Azure OpenAI, GitHub Copilot, opencode ve Cloudflare AI Gateway'deki GPT-5+ modelleri için etkinleştirir. |
deferredToolsMode |
Sağlayıcıya özel ertelenmiş araç serileştirmesini kullanın. Şu anda Kimi'nin OpenAI uyumlu Sohbet Tamamlama formatı için yalnızca "kimi" desteklenmektedir. |
supportsLongCacheRetention |
Önbellek tutma long olduğunda sağlayıcının uzun önbellek tutmayı kabul edip etmeyeceği: OpenAI istemi önbelleğe alma için prompt_cache_retention: "24h" veya cacheControlFormat anthropic olduğunda cache_control.ttl: "1h". Varsayılan: true. |
openRouterRouting |
OpenRouter sağlayıcısının yönlendirme tercihleri. Bu nesne OpenRouter API request'nin provider alanında olduğu gibi gönderilir. |
vercelGatewayRouting |
Sağlayıcı seçimi için Vercel AI Ağ Geçidi yönlendirme yapılandırması (only, order) |
openrouter, reasoning: { effort }'yi kullanır. together, reasoning: { enabled }'yi ve ayrıca supportsReasoningEffort etkinleştirildiğinde reasoning_effort'yi kullanır. qwen üst düzey enable_thinking'yi kullanır. chat_template_kwargs.enable_thinking ve preserve_thinking gerektiren yerel Qwen uyumlu sunucular için qwen-chat-template kullanın. Yapılandırılabilir chat_template_kwargs gerektiren vLLM/Hugging Face sohbet şablonları için chat-template kullanın; örneğin DeepSeek V3.x şablonları için chatTemplateKwargs: { "thinking": { "$var": "thinking.enabled" } }. chat_template_args aracılığıyla geçiş kontrollerini kullanıma sunan ve isteğe bağlı olarak üst düzey reasoning_effort'yi destekleyen sağlayıcılar için thinkingFormat: "baseten" ile chatTemplateArgs kullanın.
cacheControlFormat: "anthropic", metin içeriği ve araç tanımlarındaki cache_control işaretçileri aracılığıyla Antropik tarzda istem önbelleğe almayı ortaya çıkaran OpenAI uyumlu sağlayıcılar içindir.
Örnek:
{
"providers": {
"openrouter": {
"baseUrl": "https://openrouter.ai/api/v1",
"apiKey": "$OPENROUTER_API_KEY",
"api": "openai-completions",
"models": [
{
"id": "openrouter/anthropic/claude-3.5-sonnet",
"name": "OpenRouter Claude 3.5 Sonnet",
"compat": {
"openRouterRouting": {
"allow_fallbacks": true,
"require_parameters": false,
"data_collection": "deny",
"zdr": true,
"enforce_distillable_text": false,
"order": ["anthropic", "amazon-bedrock", "google-vertex"],
"only": ["anthropic", "amazon-bedrock"],
"ignore": ["gmicloud", "friendli"],
"quantizations": ["fp16", "bf16"],
"sort": {
"by": "price",
"partition": "model"
},
"max_price": {
"prompt": 10,
"completion": 20
},
"preferred_min_throughput": {
"p50": 100,
"p90": 50
},
"preferred_max_latency": {
"p50": 1,
"p90": 3,
"p99": 5
}
}
}
}
]
}
}
}Vercel AI Ağ Geçidi örneği:
{
"providers": {
"vercel-ai-gateway": {
"baseUrl": "https://ai-gateway.vercel.sh/v1",
"apiKey": "$AI_GATEWAY_API_KEY",
"api": "openai-completions",
"models": [
{
"id": "moonshotai/kimi-k2.5",
"name": "Kimi K2.5 (Fireworks via Vercel)",
"reasoning": true,
"input": ["text", "image"],
"cost": { "input": 0.6, "output": 3, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 262144,
"maxTokens": 262144,
"compat": {
"vercelGatewayRouting": {
"only": ["fireworks", "novita"],
"order": ["fireworks", "novita"]
}
}
}
]
}
}
}