Đi tới nội dung
Tất cả tài liệu

Code

LiteLLM

Trỏ LiteLLM tới nokeep bằng tiền tố openai/ và api_base. Cách này chạy được trong proxy và trong Python SDK.

Đã kiểm tra 29 tháng 10, 2026

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

Ứng dụng của bạn sau đó gọi proxy (mặc định http://0.0.0.0:4000) với model_name, và proxy gọi nokeep. model_info cho LiteLLM biết giá của nokeep theo từng token, để việc theo dõi chi phí khớp với hóa đơn của bạn. Nếu thiếu phần này, LiteLLM không có giá cho các mô hình của nokeep và không thể tính lệnh gọi tốn bao nhiêu.

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)

Một provider nokeep gốc đã được đề xuất với LiteLLM. Cho tới khi nó được phát hành, tiền tố openai/ cùng api_base là cách kết nối; yêu cầu được gửi đi đúng như vậy.

Streaming

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)

Công cụ, thinking và bộ lấy mẫu

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)

Với tiền tố openai/, reasoning_effort và tools được chuyển nguyên vẹn. Trong proxy, đặt các trường cố định cho từng mô hình dưới litellm_params (ví dụ reasoning_effort: high), hoặc để mỗi bên gọi tự gửi giá trị của mình. Xem Gọi công cụ và Thinking.

Những điều cần lưu ý

  • `reasoning_effort` chỉ nhận giá trị riêng của mô hình. deepseek-v4.1-flash-uncensored nhận none, low, high, max; glm-5.3-flash-uncensored nhận low, high. Các giá trị minimal, medium và xhigh của ứng dụng khác sẽ chạy ở mức gần nhất mà mô hình hỗ trợ (medium thành high, xhigh thành max nơi mô hình có mức đó); mọi giá trị khác nhận 400 invalid_reasoning_effort. Xem Thinking.
  • GLM tự chọn công cụ. glm-5.3-flash-uncensored chỉ nhận tool_choice là auto hoặc none. Ép buộc một công cụ (required, hoặc nêu tên một hàm) sẽ nhận 400 unsupported_tool_choice. Dùng DeepSeek khi bạn cần ép chọn một công cụ.
  • Trường mà mô hình không nhận được sẽ bị bỏ, không bị từ chối. Lệnh gọi vẫn được trả lời, và header phản hồi x-nokeep-ignored nêu tên những gì đã bị bỏ. GLM chỉ giữ tools, tool_choice và reasoning_effort, nên temperature và response_format của nó bị bỏ. Xem mỗi mô hình nhận những trường nào.
  • Phần nội dung chỉ gồm văn bản và hình ảnh. Phần image_url hoạt động trên deepseek-v4.1-flash-uncensored; GLM chỉ đọc văn bản. Phần âm thanh và tệp (như PDF) nhận 400 unsupported_input.
  • `n` phải bằng 1. Muốn nhiều câu trả lời, hãy gọi nhiều lần.

drop_params: true khiến LiteLLM bỏ các trường mà nó cho rằng provider không nhận, trước khi gọi. nokeep đã tự bỏ những gì mô hình không nhận và nêu tên trong x-nokeep-ignored, nên bạn không cần đến nó.

Câu hỏi

Tôi có đặt khóa nokeep vào config.yaml không?

Không. Viết api_key: os.environ/NOKEEP_API_KEY và LiteLLM sẽ đọc khóa từ môi trường khi khởi động.

Vì sao LiteLLM không hiện chi phí cho các lệnh gọi nokeep?

Nó không biết giá của nokeep. Thêm khối model_info từ config phía trên; giá trong đó lấy từ cùng bảng với hóa đơn của bạn. Bản thân hóa đơn làm tròn mỗi lệnh gọi lên thành một tín dụng nguyên.