reasoning_content 示例
DeepSeek 等模型可在响应中返回 reasoning_content(思考过程)和 content(面向用户的答案)。pagent 通过 RunEnd 承载这两部分,流式场景下通过 ReasoningDelta / TextDelta 事件分别推送。
详见事件说明:事件流
用法
下面展示直接 API 写法。可运行示例统一放在 examples/README.md。
非流式:读取 RunEnd
python
end = await agent.run(question, reasoning_effort="medium")
print(end.reasoning_content) # 思考过程(可能为空,视模型而定)
print(end.content) # 最终答案
# session 里 assistant 消息也会带上 reasoning_content
assert agent.session.messages[-1].get("reasoning_content") == end.reasoning_content注意:请打印 end.content,不要 print(end),否则会看到整段 RunEnd(...) repr。
流式:arun_events
python
answer_started = False
async for event in agent.arun_events(question, reasoning_effort="medium"):
match event:
case ReasoningDelta(text=t):
print(t, end="", flush=True) # 推理流
case TextDelta(text=t):
if not answer_started:
print("\nanswer: ", end="", flush=True)
answer_started = True
print(t, end="", flush=True) # 正文流
case RunEnd():
print()agent.arun() 仍只产出正文字符串(内部过滤 TextDelta),与 CLI 行为一致。
题目说明
英文(默认) — 三盒标签逻辑题,鼓励分步推理。
中文(--zh) — 鸡兔同笼:35 个头、94 只脚,求鸡兔各几只(标准解:鸡 23,兔 12)。
可在 reasoning_common.py 中修改 QUESTION_EN / QUESTION_ZH。
reasoning_effort
与 CLI 的 /effort 相同,通过 run_kwargs 传给模型,例如:
python
await agent.run("...", reasoning_effort="medium")
await agent.arun_events("...", reasoning_effort=0.5)是否返回 reasoning_content 取决于 Provider 与模型,pagent 只负责透传与写入 session。