Skip to content

Doc: .env.example doesn't warn that some providers' thinking behavior breaks the minimal examples #459

Description

@JinyangWang27

Summary

.env.example lists several Anthropic-compatible providers, but gives no warning that their extended-thinking behavior differs and isn't handled by the teaching examples. A learner who copies certain MODEL_ID lines and runs a chapter hits an API error or sees the model's raw reasoning leak into output.

The default (MODEL_ID=claude-sonnet-4-6) is fine. The gap is purely a missing note.

What actually happens (behavior splits three ways, not one)

Provider (env MODEL_ID) Thinking behavior on the Anthropic endpoint Effect on the examples
kimi-k2.6 thinking-native (K2-Thinking family) reject requests unless thinking is enabled
deepseek-v4-* thinking ON by default; responses always include a thinking block runs, but every turn emits thinking content
MiniMax-M2.x reasoning can leak as reasoning_content in the stream unless thinking is disabled reasoning bleeds into visible output
glm-5.2 hybrid, thinking optional/configurable works as-is

Sources:

Why not add a thinking param to the chapter code

I checked; a code fix is the wrong call:

  • No uniform flag works. kimi wants thinking enabled;
    DeepSeek and MiniMax want it disabled.
    A blanket thinking={"type":"enabled",...} would make MiniMax leak and is redundant for DeepSeek.
  • A fixed budget_tokens breaks small calls. s09_memory/code.py:178 uses max_tokens=200 and :260 uses max_tokens=800;
    the API requires budget_tokens < max_tokens, so e.g. budget_tokens=1000 returns 400 there.
  • Adding thinking plumbing expands chapter scope against the minimal-teaching design).

Proposed fix (doc-only)

Add a short note to .env.example:

Reasoning/thinking behavior varies by provider

minimal examples:

  • kimi-k2.6 is thinking-native and may require non-thinking variant like kimi-k2.7-code.
  • deepseek-v4 enables thinking by default (resp).
  • MiniMax M2.x may leak reasoning unless thinki

For the cleanest run, use claude-sonnet-4-6 (default) or a non-thinking model.

Happy to open the one-file PR if the doc-only direction looks right, or discuss if you'd prefer per-chapter thinking handling.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions