Skip to content
All docs

Guides

Samplers for fiction

DeepSeek takes the samplers fiction apps send: temperature, top_p, top_k, min_p, and frequency, presence and repetition penalties. GLM takes none of them.

Checked 26 October 2026

Starting values

FieldStart atWhat it does
temperature0.9How adventurous the word choice is. Lower it to 0.7 if replies wander.
top_p0.95Cuts the long tail of unlikely words. 1 turns it off.
min_p0.05Drops words far less likely than the best one. Pairs well with a higher temperature.
top_k0 (off)Keeps only the k likeliest words. Leave it off when top_p or min_p is set.
repetition_penalty1.05Breaks loops on pet phrases in long chats. 1 is off.
frequency_penalty0Leave at 0 when repetition_penalty is set, or names get avoided.
presence_penalty0Raise to 0.2 only if a story keeps restating the scene.

Send them

curl
curl https://nokeep.ai/v1/chat/completions \
  -H "Authorization: Bearer $NOKEEP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "deepseek-v4.1-flash-uncensored",
  "temperature": 0.9,
  "top_p": 0.95,
  "min_p": 0.05,
  "repetition_penalty": 1.05,
  "max_tokens": 400,
  "messages": [
    {
      "role": "system",
      "content": "You are Mara, a ship’s navigator with a dry wit. Stay in character."
    },
    {
      "role": "user",
      "content": "The storm is closing in. What do we do?"
    }
  ]
}'

OpenAI’s SDKs have no argument for min_p, top_k or repetition_penalty. Pass them in extra_body in Python, or as extra fields in JavaScript.

Python
reply = client.chat.completions.create(
    model="deepseek-v4.1-flash-uncensored",
    temperature=0.9,
    extra_body={"min_p": 0.05, "repetition_penalty": 1.05},
    messages=messages,
)

With GLM

glm-5.3-flash-uncensored takes no samplers. Every one you send is dropped and named in x-nokeep-ignored, so your app keeps working; the reply just uses the model’s own settings.