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
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.00000065pip install 'litellm[proxy]'
export NOKEEP_API_KEY="sk-nokeep-test" # your own key once it connects
litellm --config config.yamlUygulamaları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
pip install litellm
export NOKEEP_API_KEY="sk-nokeep-test" # your own key once it connectsimport 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ış
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
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-uncensorednone,low,high,maxalır;glm-5.3-flash-uncensoredlow,highalır. Diğer uygulamalarınminimal,mediumvexhighdeğerleri modelin en yakın düzeyinde çalışır (mediumhigholarak,xhighmodelde varsamaxolarak); başka her değer400 invalid_reasoning_efforthatası verir. Bkz. Düşünme. - GLM araçlarını kendi seçer.
glm-5.3-flash-uncensoredyalnızcaautoya danonetool_choicedeğeri kabul eder. Bir aracı zorlamak (requiredya da bir işlev adı vermek)400 unsupported_tool_choicehatası verir. Bir aracı zorlaman gerekiyorsa DeepSeek kullan. - Bir modelin alamayacağı alanlar reddedilmez, atılır. Çağrı yine yanıt verir ve
x-nokeep-ignoredyanıt başlığı, dışarıda bırakılanları söyler. GLM yalnızcatools,tool_choicevereasoning_effortalanlarını tutar; bu yüzdentemperatureveresponse_formatatılır. Bkz. her modelin hangi alanları aldığı. - İçerik parçaları yalnızca metin ve resimdir.
image_urlparçalarıdeepseek-v4.1-flash-uncensoredüzerinde çalışır; GLM yalnızca metni okur. Ses ve dosya parçaları (bir PDF)400 unsupported_inputhatası 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.