Pi için yapılandırma, özelleştirme, platform kurulumu ve API referansları.

Özel Models

~/.pi/agent/models.json aracılığıyla özel sağlayıcılar ve modeller (Ollama, vLLM, LM Studio, proxy'ler) ekleyin.

İçindekiler

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_BAR değişkenidir; BAR gerçek metin olduğunda ${FOO}_BAR kullanı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_KEY gibi düz büyük harf dizeleri değişmez değerlerdir; ortam değişkenleri için $MY_API_KEY kullanı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-models ve modele göre etkileşimli altbilgi ekranı girişleri id.
  • 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 id kadar yükseltilir.
  • Özel bir model id yerleşik bir modelle id eşleşirse, özel model bu yerleşik modelin yerini alır.
  • Özel bir model id yeniyse 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ı:

  • modelOverrides yerleş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'yi modelOverrides ile birleştirebilirsiniz.
  • name geçersiz kılınması yalnızca model eşleşmesini ve ikincil ayrıntı metnini değiştirir; alt bilgi ve birincil model listeleri modeli id göstermeye devam ediyor.
  • Bir sağlayıcı için models da tanımlanmışsa özel modeller yerleşik geçersiz kılmalardan sonra birleştirilir. Aynı id değ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 allowEmptySignaturetrue 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"]
            }
          }
        }
      ]
    }
  }
}