eino reasoning_content 完整指南:5 分钟拿到模型的思考过程
【免费下载链接】einoThe ultimate LLM/AI application development framework in Go.项目地址: https://gitcode.com/GitHub_Trending/ei/eino
模型答错时,你手里只有最后一句答案,看不到它为什么这么想。在 eino 里,reasoning_content 字段就是为此设计的:模型回答前的思考过程会被写进消息结构体,Go 代码里直接就能读。
这个特性解决了什么问题
Agent 调错了工具。react agent 选错工具时,你手里只有最终的 tool call。reasoning_content 让你看到它当时盯着哪些参数、为什么选了这条路,而不是只看到结果。
答案碰对了,过程是歪的。数学应用题答案凑对、推导链条却站不住,质检和审计场景里你只认过程。这个字段就是那条证据链。
推理 token 算不清账。不少厂商对推理 token 单独计费,eino 在 TokenUsage 里把这笔账单独记了下来,成本核算不用靠猜。
它是怎么工作的
字段定义在数据层:schema/message.go 中Message结构体带一个可选的ReasoningContent字符串,json 标签是reasoning_content,omitempty。它从哪家厂商的响应里解析出来,由模型实现(eino-ext 中)决定,核心框架只管存。
流式响应下思考是分段到达的,eino 的消息拼接逻辑按顺序把每个分片的ReasoningContent接回完整文本;OpenAI 系模型还有 schema/openai/extension.go 里的ReasoningExtension做带索引的拼装。
下游消费有三处:Message.String()打日志时会输出它;summarization 中间件把它计入上下文长度;TokenUsage的ReasoningTokens记下用了多少推理 token。
如何开启 eino reasoning_content:最快配置方法
没有额外开关,字段本来就在Message上。选一个支持推理模式的模型(如 DeepSeek 推理系列),调用后直接读字段:
resp, err := chatModel.Generate(ctx, messages) if err == nil && resp.ReasoningContent != "" { fmt.Println(resp.ReasoningContent) }流式模式下每个分片消息同样带一段ReasoningContent,eino 会自动拼好,你不用手写拼装。
上手后的实际效果:reasoning_content 输出前后对比
改之前:resp.Content里只有"答案:B",被质疑时说不清依据。
改之后:resp.ReasoningContent先给出"题目给了三个条件,先排除 A、C……",Content再给 B。答错时你能定位到判断断在哪一步。
同时,日志里String()的输出会多出一段reasoning content:,排查时不用再临时加调试代码。
常见坑与排查:reasoning_content 不生效怎么办
为什么 resp.ReasoningContent 一直是空字符串?
先确认模型是否真支持推理模式、参数是否开启。字段带omitempty,非推理模型的 JSON 响应里也没有这个字段,空值是正常情况,不是报错。
流式输出报 "mix indexed and non-indexed" 怎么办?
OpenAI 系扩展的拼接要求分片要么全带索引、要么全不带,混用会直接报错。检查你用的模型实现和真实厂商是否匹配,别把两种模型封装混在一个流里。
上下文长度怎么突然涨了?
summarization 中间件会把ReasoningContent计入总长度,长思考链会吃掉窗口。调高摘要触发阈值,或主动裁剪旧的推理内容。
进阶用法
上下文预算管理:配合adk/middlewares/summarization的 summarization 中间件使用,上下文超阈值时自动摘要,推理内容也被纳入预算,不会悄悄撑爆窗口。
成本分析:读TokenUsage.CompletionTokensDetails.ReasoningTokens,把"思考花费"和"回答花费"分开评估,再决定要不要换更便宜的模型。
想看字段完整定义和流式拼接实现,读 schema/message.go;更多框架用法参考中文文档 README.zh_CN.md。
【免费下载链接】einoThe ultimate LLM/AI application development framework in Go.项目地址: https://gitcode.com/GitHub_Trending/ei/eino
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考