İçeriğe atla
Tüm belgeler

Kod

LiteLLM

LiteLLM’i openai/ öneki ve api_base ile nokeep’e yönlendir. Hem proxy’de hem Python SDK’sında çalışır.

29 Ekim 2026 tarihinde kontrol edildi

Proxy

config.yaml
model_list:
  - model_name: deepseek-v4.1-flash-uncensored
    litellm_params:
      model: openai/deepseek-v4.1-flash-uncensored
      api_base: https://nokeep.ai/v1
      api_key: os.environ/NOKEEP_API_KEY
    model_info:
      input_cost_per_token: 0.00000045
      cache_read_input_token_cost: 0.000000011
      output_cost_per_token: 0.00000175
  - model_name: glm-5.3-flash-uncensored
    litellm_params:
      model: openai/glm-5.3-flash-uncensored
      api_base: https://nokeep.ai/v1
      api_key: os.environ/NOKEEP_API_KEY
    model_info:
      input_cost_per_token: 0.0000002
      cache_read_input_token_cost: 0.00000004
      output_cost_per_token: 0.00000065
Shell
pip install 'litellm[proxy]'
export NOKEEP_API_KEY="sk-nokeep-test"  # your own key once it connects
litellm --config config.yaml

Uygulamaların sonra proxy’yi (varsayılan olarak http://0.0.0.0:4000) model_name ile çağırır, proxy de nokeep’i çağırır. model_info, LiteLLM’e nokeep’in token başına fiyatlarını verir; böylece harcama takibi faturanla eşleşir. Bu olmadan LiteLLM nokeep’in modelleri için bir fiyat bilmez ve çağrıların ne tuttuğunu hesaplayamaz.

Python SDK

Shell
pip install litellm
export NOKEEP_API_KEY="sk-nokeep-test"  # your own key once it connects
Python
import os
import litellm

reply = litellm.completion(
    model="openai/deepseek-v4.1-flash-uncensored",
    api_base="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
    messages=[{"role": "user", "content": "Name three good names for a tavern."}],
)
print(reply.choices[0].message.content)
print(reply.usage)

LiteLLM’e yerel bir nokeep sağlayıcısı önerildi. Yayımlanana kadar api_base ile birlikte openai/ öneki girişin yoludur; isteği olduğu gibi gönderir.

Akış

Python
import os
import litellm

stream = litellm.completion(
    model="openai/deepseek-v4.1-flash-uncensored",
    api_base="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
    messages=[{"role": "user", "content": "Tell me a story in three lines."}],
    stream=True,
    stream_options={"include_usage": True},
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="", flush=True)
    if getattr(chunk, "usage", None):
        print("\n", chunk.usage)

Araçlar, düşünme ve örnekleyiciler

Python
import os
import litellm

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get the weather in a city",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

reply = litellm.completion(
    model="openai/deepseek-v4.1-flash-uncensored",
    api_base="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
    messages=[{"role": "user", "content": "What's the weather in Lisbon?"}],
    tools=tools,
    reasoning_effort="high",
    max_tokens=4000,
    extra_body={"min_p": 0.05},  # fields LiteLLM has no argument for
)
print(reply.choices[0].message.tool_calls)

openai/ öneki ile reasoning_effort ve tools değişmeden geçer. Proxy’de, her model için sabit alanları litellm_params altında tanımla (örneğin reasoning_effort: high) ya da her çağıranın kendi değerini göndermesine izin ver. Bkz. Araç çağrıları ve Düşünme.

Dikkat edilecekler

  • `reasoning_effort` yalnızca modelin kendi değerlerini kabul eder. deepseek-v4.1-flash-uncensored none, low, high, max alır; glm-5.3-flash-uncensored low, high alır. Diğer uygulamaların minimal, medium ve xhigh değerleri modelin en yakın düzeyinde çalışır (medium high olarak, xhigh modelde varsa max olarak); başka her değer 400 invalid_reasoning_effort hatası verir. Bkz. Düşünme.
  • GLM araçlarını kendi seçer. glm-5.3-flash-uncensored yalnızca auto ya da none tool_choice değeri kabul eder. Bir aracı zorlamak (required ya da bir işlev adı vermek) 400 unsupported_tool_choice hatası verir. Bir aracı zorlaman gerekiyorsa DeepSeek kullan.
  • Bir modelin alamayacağı alanlar reddedilmez, atılır. Çağrı yine yanıt verir ve x-nokeep-ignored yanıt başlığı, dışarıda bırakılanları söyler. GLM yalnızca tools, tool_choice ve reasoning_effort alanlarını tutar; bu yüzden temperature ve response_format atılır. Bkz. her modelin hangi alanları aldığı.
  • İçerik parçaları yalnızca metin ve resimdir. image_url parçaları deepseek-v4.1-flash-uncensored üzerinde çalışır; GLM yalnızca metni okur. Ses ve dosya parçaları (bir PDF) 400 unsupported_input hatası verir.
  • `n` değeri 1 olmalıdır. Birden çok yanıt istiyorsan birden çok çağrı yap.

drop_params: true, LiteLLM’in çağrıdan önce bir sağlayıcının alamayacağına inandığı alanları atmasını sağlar. nokeep, bir modelin alamayacağını zaten atar ve bunu x-nokeep-ignored içinde adlandırır; bu yüzden buna ihtiyacın yok.

Sorular

nokeep anahtarımı config.yaml’a yazmam gerekir mi?

Hayır. api_key: os.environ/NOKEEP_API_KEY yaz; LiteLLM başladığında anahtarı ortamdan okur.

LiteLLM neden nokeep çağrıları için maliyet göstermiyor?

nokeep’in fiyatlarını bilmiyor. Yukarıdaki yapılandırmadaki model_info bloğunu ekle; içindeki fiyatlar faturanla aynı tablodan gelir. Faturanın kendisi her çağrıyı yukarı, tam krediye yuvarlar.