从执行到思考:构建具备自主判断与动态规划能力的AI智能体
1. 从“执行”到“思考”:智能体的本质跃迁
最近和几个做AI应用的朋友聊天,发现一个挺有意思的现象:大家用大模型API搭出来的东西,十有八九还是“高级聊天机器人”或者“带点逻辑的自动化脚本”。你问它天气,它调用天气API;你让它总结文档,它调用RAG(检索增强生成)接口。这当然有用,但总觉得缺了点什么。缺的,可能就是标题里说的“思考”能力。
我们通常说的“智能体”(Agent),在技术圈里已经快被用滥了,很多时候它就是个“能调用工具的大模型”。你给它一个任务,比如“帮我订一张明天从北京到上海的最便宜机票”,一个标准的智能体流程是:理解指令 -> 规划步骤(先查航班,再比价)-> 执行工具(调用航班查询API、比价API)-> 返回结果。这个过程很“执行”,很“流程化”,但离“思考”还差得远。
那么,一个会“思考”的智能体应该是什么样?我理解的“思考”,不是指它有了意识,而是指它具备了在复杂、不确定、信息不完整的环境下,进行 自主判断、策略调整和持续学习 的能力。它不再只是按部就班地跑预设流程,而是能像一个有经验的专家一样,遇到卡壳知道换个路子试试,发现新信息能调整原计划,甚至能从失败中总结点经验教训,下次做得更好。
举个例子,你让一个只会“执行”的智能体去“调研一下新能源汽车电池的最新技术进展并给我一份报告”。它可能会:1. 用关键词去爬论文网站。2. 把爬到的摘要扔给大模型总结。3. 生成一份报告。但如果它搜到的全是几年前的老论文呢?如果最新的突破是在某个小众技术博客里讨论的呢?这个智能体就卡住了,因为它没有“思考”:“我搜到的信息质量好像不高,是不是该换几个数据源试试?”或者“用户要的是‘最新’,我是不是得优先找最近三个月的内容,甚至去社交媒体和行业论坛看看风向?”
“手撸”一个这样的智能体,听起来很硬核,但其实核心在于设计理念的转变。我们不再仅仅关注“如何让大模型调用工具”,而是要去设计一套能让智能体“自己动脑子”的机制。这涉及到记忆、反思、策略评估、动态规划等一系列模块的有机组合。接下来,我就结合自己的一些实验和踩过的坑,聊聊怎么把这些模块搭起来,让智能体真正“活”起来。
2. 构建“思考”的基石:超越简单记忆的状态管理
要让智能体会思考,第一步是给它一个像样点的“大脑”,也就是状态管理系统。这远不止是记住你和它的上一条对话记录那么简单。一个具备思考能力的智能体,需要管理多种维度的状态,并且能让这些状态之间产生关联和影响。
2.1 短期记忆、长期记忆与工作记忆的分离
在心理学和认知科学中,人类的记忆是分层的。借鉴这个思路,我们可以为智能体设计类似的结构:
-
短期记忆(Short-term Memory) :这就是对话历史,通常保存最近几轮(比如10轮)的交互。它的作用是保持对话的连贯性,让智能体知道“刚才我们聊到哪了”。技术上,这就是我们传给大模型API的
messages列表。但要注意,无限制地增长这个列表会消耗大量Token,也可能让模型注意力分散。一个常见的技巧是进行 增量式摘要 。比如,每经过5轮对话,就让模型自己对之前的对话内容做一个简短的总结(例如:“用户询问了项目A的进度,我提供了截至上周的数据,用户接着问到了风险点。”),然后用这个总结替换掉旧的详细记录,再继续新的对话。这样既保留了关键上下文,又控制了长度。 -
长期记忆(Long-term Memory) :这是智能体的“知识库”和“经验库”。它不应该每次对话都全量加载,而是应该被索引和按需检索。这部分可以进一步细分:
- 事实性记忆 :关于用户或世界的静态信息。比如“用户张三喜欢喝黑咖啡”、“公司的服务器IP是192.168.1.1”。这通常用向量数据库(如Chroma, Weaviate)来存储和检索。当对话中提及相关实体时,通过向量相似度搜索召回。
- 程序性记忆 :关于“如何做事”的记忆。这其实就是智能体可用的工具(函数)的集合及其使用说明。这部分通常是预定义的。
- 情景性记忆 :过去重要任务或对话的“故事性”记录。比如“上周为用户李四成功解决了数据库连接超时问题,方法是调整了连接池参数和网络超时设置”。这不仅是事实,还包含了上下文、行动和结果。存储时,除了向量化,最好还能打上时间、任务类型、成功/失败等标签,方便后续进行更复杂的检索(如“查找所有与‘网络超时’相关的成功解决案例”)。
-
工作记忆(Working Memory) :这是智能体“当前正在思考”的内容。它融合了从短期记忆、长期记忆中提取的与当前任务最相关的信息,以及智能体自己生成的中间推理步骤、待办事项、当前目标等。工作记忆是动态的、临时的,是“思考”发生的舞台。在代码中,它可能体现为一个不断更新的字典或对象,包含了
current_goal,extracted_facts,plan_steps,last_observation等字段。
实操心得 :不要试图用一个庞大的
context字符串来承载所有记忆。一定要做分离。初期可以简单实现为三个独立的数据结构,并设计好它们之间的读写接口。例如,有一个MemoryManager类,提供update_short_term(msg),query_long_term(query_vector),set_working_memory(key, value)等方法。清晰的架构是后续复杂功能的基础。
2.2 状态表示与向量化检索的陷阱
长期记忆的核心技术是向量检索。但这里有个大坑: 不是所有信息都适合直接向量化 。
- 结构化信息 :比如“用户偏好:{‘咖啡’: ‘黑咖啡’, ‘茶’: ‘绿茶’, ‘会议时间’: ‘下午’}”。如果你把这些偏好拼接成一段文字“用户喜欢黑咖啡和绿茶,偏好下午开会”然后向量化,检索效率可能不高。更好的做法是,将键值对分开处理。为每个“键”(如“咖啡偏好”)生成一个固定的嵌入(Embedding),或者用“用户偏好”作为一个整体概念向量。当用户提到“喝点什么”时,用“饮料偏好”相关的向量去检索,就能精准找到“咖啡”和“茶”的条目。
-
时序性信息
:情景记忆往往带有强烈的时间属性。“昨天服务器宕机”和“三个月前服务器宕机”重要性完全不同。简单的向量检索无法体现时间先后。解决方法是在存储时,将时间戳作为一个独立的元数据字段,在检索时可以进行过滤(如
recency > ‘2024-01-01’)或者作为排序的一个权重因子。 - 多模态信息 :如果智能体需要处理图片、音频,那么记忆系统也需要支持多模态嵌入。例如,用户之前上传过一张“办公室植物照片”并说“这是我的绿萝”,那么当用户下次说“我的那盆花怎么样了”时,智能体应该能通过文本描述检索到相关的图片记忆。这需要统一的跨模态嵌入模型(如CLIP)。
一个进阶的设计是引入“记忆重要性评分”机制。每次记忆被写入或成功检索使用时,其“重要性”分数就增加。定期(比如每天)运行一个后台进程,对低分记忆进行归档或清理,对高分记忆进行强化(例如生成更丰富的描述或关联)。这模拟了人类的“遗忘曲线”和“巩固记忆”过程。
3. “思考”的核心引擎:反思、规划与决策循环
有了状态管理作为基础,我们就可以构建智能体“思考”的核心过程了。这个过程不是一个简单的“输入-输出”,而是一个包含反思、规划和决策的循环。
3.1 反思(Reflection):从结果中学习
反思是智能体从“经历”中提取经验的关键步骤,也是区别于普通流程执行的核心。反思发生在一次行动(或一系列行动)之后,旨在评估“刚才发生了什么?为什么?下次如何改进?”
我们可以设计两种级别的反思:
-
即时反思(Immediate Reflection) :在一次工具调用或一个子任务完成后立刻进行。主要回答三个问题:
- 行动是否成功? 通过工具返回码、输出内容的关键词(如“error”, “success”)或预先定义的规则来判断。
- 结果是否符合预期? 将工具输出与调用前的期望进行对比。例如,调用搜索API,期望是返回3条以上结果,但实际只返回了1条,这就不符合预期。
- 发现了什么新信息? 从结果中提取出新的、可能影响后续计划的事实。例如,搜索“特斯拉最新车型”,结果中提到了“Model 3焕新版”,这就是一个新信息。
在代码中,这可以是一个固定的提示词(Prompt)模板,让大模型根据“目标”、“执行动作”、“实际结果”来生成一段结构化的反思文本,并从中解析出“成功状态”、“新事实”、“偏差分析”等字段,更新到工作记忆中。
-
深度反思(Deep Reflection) :在一个完整任务(无论成功失败)结束时进行。它回顾整个任务链条,试图总结更高阶的经验。例如:
- 模式识别 :“在处理‘数据获取’类任务时,优先使用API A比爬虫B更可靠。”
- 策略评估 :“对于模糊的用户请求(如‘找点资料’),先请求澄清再行动,比盲目搜索效率更高。”
- 教训归纳 :“在调用‘发送邮件’工具前,如果没有明确确认收件人,极易导致错误。”
深度反思的产出应该被结构化地存储到长期记忆的情景记忆中,并打上合适的标签(如任务类型、教训类型)。未来遇到类似任务时,这些“经验包”可以被优先检索出来,作为决策的参考。
踩坑实录 :早期我把反思做得太“重”,每次行动后都让模型写一大段分析,严重拖慢了交互速度。后来发现,对于简单、成功的操作,可以用规则判断(如返回码为200即成功),无需调用大模型反思。只有遇到错误、意外结果或关键节点时,才触发“重量级”的反思。这需要在“思考深度”和“响应速度”之间做权衡。
3.2 动态规划(Dynamic Planning):从静态蓝图到实时导航
传统智能体的规划,往往是在任务开始时生成一个静态的步骤列表(Step-by-step Plan),然后机械执行。但真实世界充满变数,“思考型”智能体必须能动态调整计划。
实现动态规划,关键在于将“目标”分解为层次结构,并允许在低层次进行重规划。
-
目标分解(Goal Decomposition) :将用户的顶层指令(如“写一份市场分析报告”)分解为多个层级的子目标。
- 顶层目标 :完成市场分析报告。
- 中层目标 :1. 确定分析范围和关键指标。2. 收集竞争对手和行业数据。3. 分析数据并识别趋势。4. 撰写报告草稿。5. 润色并格式化报告。
- 底层动作 :中层目标可以进一步分解为具体的工具调用或思考步骤。例如,“收集数据”可以分解为:调用搜索引擎API、访问特定数据库、从已存文件中提取数据等。
这个分解过程本身可以由大模型完成,并且初始分解不必追求完美,因为后续可以调整。
-
条件性执行与重规划 :每个子目标的执行都不是绝对的。我们需要为其附加“前提条件”和“执行后条件”。
- 前提条件 :在执行“分析数据”前,必须满足“数据收集已完成且数据质量通过校验”。
- 执行后条件 :执行“收集竞争对手数据”后,应更新状态“已获取A、B、C公司的最新财报数据”。
智能体的执行循环就变成了:
while (顶层目标未完成) { 1. 从工作记忆中获取当前最高优先级的待处理子目标。 2. 检查其前提条件是否满足。如不满足,则转而执行满足前提条件的目标,或触发“解决阻塞问题”的子目标。 3. 执行该子目标对应的动作(可能是调用工具,也可能是内部思考)。 4. 进行即时反思,更新工作记忆(成功/失败,新信息)。 5. 根据反思结果,判断当前子目标是否完成,或是否需要调整。 6. 如果子目标失败或条件发生重大变化,触发局部重规划:重新评估剩余子目标,可能修改、删除或新增子目标。 7. 更新目标栈和优先级。 }这个循环使得智能体在遇到障碍时(比如某个API失效了),不是直接报错,而是可以尝试替代方案(换一个数据源),或者调整后续步骤的顺序(先做能做的部分)。
3.3 决策框架:让选择有据可依
当智能体面临多个可行动作时(比如,有两个不同的搜索引擎都可以用),它该如何选择?这就需要决策框架。一个简单但有效的框架是基于“预期效用”的评估。
对于每个候选动作
a_i
,我们可以让大模型估算以下几个维度(可以通过Prompt引导模型输出一个评分):
- 成功概率(P) :基于当前上下文和记忆,这个动作有多大可能成功执行?
- 预期收益(V) :如果成功,它对完成当前子目标的贡献有多大?(例如,获取的信息有多关键?)
- 成本(C) :执行这个动作的代价,包括时间、API调用费用、计算资源等。
- 信息增益(I) :这个动作除了直接产出,是否能带来减少不确定性的额外信息?(探索价值)
然后,计算一个简单的综合得分:
Score_i = P * V - C + w * I
(
w
是信息增益的权重,可以根据任务类型调整)。选择得分最高的动作执行。
这个过程也可以融入学习机制。当一个动作实际执行后,将其真实的“结果效用”与“预期效用”进行对比,偏差可以作为反馈,用于微调未来类似场景下的评估模型(如果接入了可微调的大模型),或者作为一条经验存入长期记忆(“在情境X下,动作A的实际收益通常低于预期”)。
4. 实现“思考”的脚手架:代码结构与关键模块设计
聊了这么多理论,我们来点实际的。下面我勾勒一个简易但核心的“思考型”智能体的代码结构,你可以基于这个骨架去丰富血肉。
# 以下为伪代码,展示核心结构与流程
import json
from typing import List, Dict, Any
from some_llm_client import LLMClient
from vector_db import VectorMemory
class ThinkerAgent:
def __init__(self, llm_client: LLMClient, vector_memory: VectorMemory):
self.llm = llm_client
self.memory = vector_memory
self.working_memory = {
"current_goal": None,
"subgoals_stack": [], # 子目标栈
"extracted_facts": [],
"last_action_result": None,
"plan": []
}
self.short_term_memory = [] # 对话历史
self.tools = {...} # 工具函数注册表
def _reflect_immediate(self, goal, action, result):
"""即时反思"""
prompt = f"""
目标:{goal}
执行动作:{action}
实际结果:{result}
请分析:
1. 行动是否成功?(是/否)
2. 结果是否符合预期?如果不符合,偏差是什么?
3. 从结果中发现了哪些新的事实或信息?
请以JSON格式回答,包含字段:success, deviation, new_facts。
"""
reflection = self.llm.call(prompt, expect_json=True)
# 解析reflection,更新工作记忆
if reflection.get('new_facts'):
self.working_memory['extracted_facts'].extend(reflection['new_facts'])
return reflection['success'], reflection['deviation']
def _plan_or_replan(self):
"""规划或重规划"""
current_context = self._get_full_context() # 融合工作记忆、短期记忆等
prompt = f"""
当前状态:{current_context}
最高优先级目标:{self.working_memory['current_goal']}
请制定或调整接下来的行动计划。考虑可用工具:{list(self.tools.keys())}
输出一个JSON列表,每个元素是一个行动步骤,包含字段:step_id, description, tool_to_use (可选), expected_outcome。
"""
new_plan = self.llm.call(prompt, expect_json=True)
self.working_memory['plan'] = new_plan
def _choose_action(self, candidate_actions):
"""决策:从候选动作中选择"""
decision_prompt = f"""
当前工作记忆:{self.working_memory}
候选动作:{candidate_actions}
请评估每个动作的成功概率、预期收益和成本,并推荐一个最优动作。
输出JSON:{{"chosen_action": ..., "reason": ...}}
"""
decision = self.llm.call(decision_prompt, expect_json=True)
return decision["chosen_action"]
def run(self, user_input: str):
"""主运行循环"""
# 1. 更新短期记忆,理解用户意图,设定顶层目标
self.short_term_memory.append({"role": "user", "content": user_input})
top_goal = self._understand_goal(user_input)
self.working_memory['current_goal'] = top_goal
self.working_memory['subgoals_stack'] = [top_goal]
# 2. 初始规划
self._plan_or_replan()
# 3. 执行与反思循环
while self.working_memory['subgoals_stack']:
current_subgoal = self.working_memory['subgoals_stack'][0]
# 检查前提条件...
if not self._check_preconditions(current_subgoal):
# 条件不满足,触发解决阻塞的子目标或重规划
self._handle_blockage()
continue
# 从计划中获取或生成候选动作
if not self.working_memory['plan']:
self._plan_or_replan()
candidate_actions = self._get_candidate_actions() # 可能来自plan,也可能动态生成
# 决策
chosen_action = self._choose_action(candidate_actions)
# 执行动作(可能是调用工具,也可能是内部“思考”)
result = self._execute_action(chosen_action)
# 即时反思
success, deviation = self._reflect_immediate(current_subgoal, chosen_action, result)
self.working_memory['last_action_result'] = result
if success:
# 标记子目标完成,弹出栈,可能触发深度反思
self._mark_subgoal_done(current_subgoal)
if self._is_major_milestone():
self._deep_reflect()
else:
# 处理失败:重试、替换动作、或触发重规划
self._handle_failure(deviation)
# 4. 任务完成,汇总输出
final_output = self._synthesize_output()
self.short_term_memory.append({"role": "assistant", "content": final_output})
return final_output
# ... 其他辅助方法 (_understand_goal, _execute_action, _handle_failure等)
这个框架展示了核心循环: 感知(用户输入)-> 设定目标 -> 规划 -> 决策 -> 执行 -> 反思 -> (根据反思)调整目标/规划 -> 继续执行 。每一个环节都可以用大模型驱动,也可以用规则辅助,取决于你对性能和控制力的需求。
5. 让“思考”落地:实用技巧与避坑指南
设计理念和框架都有了,但在真正“手撸”的过程中,你会遇到一堆非常具体的问题。下面分享几个让我掉过坑的要点。
5.1 提示词工程:引导“思考”而非“回答”
智能体的“思考”能力,很大程度上取决于你如何用提示词(Prompt)引导大模型。你的目标不是问模型“答案是什么”,而是问它“ 接下来应该怎么想、怎么做 ”。
- 为不同模块设计专用提示词 :不要用一个庞大的Prompt去处理所有事。为“目标分解”、“即时反思”、“决策评估”、“深度反思”分别设计精炼、角色明确的提示词。例如,反思提示词可以开头就定调:“你是一个善于从结果中学习经验的AI助手。请严格分析以下行动与结果的差距...”。
-
强制结构化输出
:这是保证程序能稳定解析模型输出的关键。在Prompt中明确要求输出JSON、XML或带有明确分隔符(如
##ANSWER##)的格式。并指定必需的字段。例如,规划步骤的输出必须是List[Dict],每个Dict包含step_id,action,tool字段。 - 提供少量示例(Few-shot) :在复杂的推理环节,比如“动态规划”,在Prompt里提供1-2个高质量的示例(Example)极其有效。示例能清晰地展示你期望的思考链条和输出格式。
- 管理上下文长度 :随着对话和任务进行,上下文会越来越长。除了前面提到的增量摘要,还可以采用“相关记忆提取”策略。在执行每个步骤前,根据当前子目标和工作记忆中的焦点,主动从长期记忆中检索最相关的几条信息(比如3条),注入到Prompt中,而不是把全部记忆都塞进去。
5.2 工具设计的“可思考性”
你为智能体提供的工具,也深刻影响着它的思考质量。
-
工具需具备良好的状态反馈
:一个工具不应该只返回成功时的数据,失败时也要提供结构化的错误信息。例如,搜索工具返回
{“status”: “error”, “code”: “NETWORK_TIMEOUT”, “message”: “请求超时,请检查网络”}就比直接抛出一个异常或返回空列表更有用。智能体可以从code字段学习到这是网络问题,可能触发重试或切换备用工具的策略。 -
工具应支持探索性调用
:有些工具可以设计得支持“试探性”调用。比如,一个文件读取工具,可以先提供一个
probe(filename)方法,只返回文件是否存在、大小、修改时间等元数据,而不读取全部内容。智能体可以先调用probe来评估,再决定是否调用完整的read。 -
工具描述要详细且包含约束
:在将工具注册给智能体时,描述不仅要说明功能,更要说明
前置条件、后置效果、可能失败的模式和副作用
。例如:“调用
send_email(to, subject, body)工具。前置条件:to必须是格式正确的邮箱地址,且已在通讯录中验证过。后置效果:一封邮件会被发送。可能失败:网络错误、收件人邮箱不存在。副作用:无。” 这能帮助智能体在决策时更准确地评估成功概率和成本。
5.3 调试与评估:如何知道它在“思考”?
开发这样的智能体,调试起来比传统程序复杂得多。你不能只看最终输出对不对,还要看它的“思考过程”是否合理。
- 实现完整的日志系统 :记录下每一轮循环的完整状态。包括:用户输入、设定的目标、生成的计划、选择的动作、动作的输入输出、反思的结果、工作内存的变更、检索到的长期记忆等。将这些日志结构化地存储(如JSONL格式),便于事后分析。
- 可视化思维链 :可以开发一个简单的可视化界面,将上述日志实时展示为一个有向图。节点代表“状态”、“目标”、“动作”,边代表“导致”、“来源于”。这能让你直观地看到智能体的“思路”是如何流动和分叉的。
- 设计评估基准 :不要只用一两个例子测试。构建一个包含不同任务类型(信息获取、复杂规划、故障排除等)和不同难度级别的测试集。评估指标除了最终任务成功率,还应包括: 平均步骤数 (效率)、 重规划次数 (灵活性)、 工具调用失败后的恢复成功率 (鲁棒性)。通过对比基线智能体(无反思、静态规划)和你的“思考型”智能体在这些指标上的差异,来量化“思考”带来的提升。
- 引入“超时”和“循环检测” :智能体可能会陷入死循环(比如反复执行同一个失败动作)。必须在代码层面设置保护机制:单个子目标的最大尝试次数、任务总耗时上限、检测重复的动作序列。一旦触发,强制智能体进入“深度反思”或向用户求助。
6. 从项目到产品:思考型智能体的应用场景与挑战
当你成功撸出一个能“思考”的智能体原型后,可能会想,这东西到底能用在哪儿?它和现有的AI应用有什么区别?
核心应用场景 恰恰在于那些 流程模糊、信息不全、需要临场判断 的领域:
- 复杂的客户支持 :不再是基于知识库的问答,而是能真正排查问题。用户说“我的应用打不开了”,智能体可以引导用户提供错误截图(调用图像识别),检查用户最近的操作日志(调用日志查询),根据常见错误模式(从长期记忆中检索案例)给出排查步骤,如果步骤失败,它能自己尝试替代方案,比如建议用户重启服务或检查网络配置。
- 动态的研究助手 :帮助研究人员跟踪某个前沿领域。你告诉它“关注‘蛋白质折叠预测’的新方法”,它能自主制定计划:定期爬取预印本网站、知名实验室博客、学术会议动态;用LLM总结新论文的核心创新点;对比不同方法的优劣;当它发现一篇论文反复被引用时,能识别其重要性并重点向你汇报。整个过程它自己调整搜索关键词、判断信息源可靠性、整合信息。
- 个性化的学习教练 :为学习者规划动态学习路径。它先评估你的基础(通过测试题),然后制定学习计划。在你学习过程中,它根据你的练习成绩(哪些知识点错得多)动态调整后续内容的难度和侧重点,推荐不同的学习资源(视频、文章、练习题),并在你遇到瓶颈时,从记忆里找出之前讲解过但你可能忘了的关联知识点进行复习提醒。
- 自动化的业务流程处理 :处理非标准化的业务流程。例如,处理采购申请单。智能体不仅能提取表单字段,还能发现模糊之处(比如“高性能服务器”配置不详),主动去联系申请人或查询历史采购记录来澄清;在审批环节,如果某个审批人迟迟不响应,它能根据规则自动升级或寻找替代审批人。
然而,将这些设想产品化,挑战巨大:
- 可靠性问题 :大模型的输出具有不确定性,一次“错误思考”可能导致灾难性后果(比如误删数据)。必须在关键决策点设置人工审核环节(Human-in-the-loop),或采用多智能体投票机制。
- 成本与延迟 :每一次“思考”(调用LLM进行反思、规划、决策)都意味着更多的API调用和更长的响应时间。需要对思考的深度和频率进行精细控制,可能80%的简单场景用快速规则,20%的复杂场景才触发深度思考。
- 安全与伦理 :一个能自主规划和行动的智能体,必须被严格约束在安全边界内。需要设计“宪法”或“护栏”,明确禁止其执行的操作(如未经授权访问数据、进行金融交易),并在每次行动前进行安全检查。
- 评估与迭代 :如何持续评估和优化一个“思考型”智能体的表现?这需要建立更复杂的评估体系,不仅看结果,还要看其决策过程的合理性、透明度和可解释性。
说到底,“手撸一个会思考的AI智能体”更像是一个开放的探索性工程,而不是一个有标准答案的项目。它没有终点,因为我们对“思考”的理解和模拟也在不断深化。但这个构建过程本身,能极大地加深你对智能体技术、大模型能力边界以及人机协作未来的理解。我最深的体会是,与其追求一个万能的全自动智能体,不如先聚焦一个垂直领域,定义清晰的边界和成功标准,从小处着手,让智能体的“思考”能力在这个小领域内真正创造价值,然后再考虑扩展。毕竟,能让它在一个具体问题上像专家一样“动脑筋”,已经是非常了不起的突破了。
更多推荐
所有评论(0)