核心内容摘要
利用FUTURE POLICE构建智能运维助手:日志语音查询与故障定位
AIå�Ÿç”Ÿåº”用领域æ€�ç»´æ ‘çš„åˆ›æ–°æ¨¡å¼�æ�¢è®¨å…³é”®è¯�AIå�Ÿç”Ÿåº”用ã€�æ€�ç»´æ ‘Tree of Thoughts, ToTã€�大è¯è¨€æ¨¡å�‹LLMã€�å¤šæ¥æ�¨ç�†ã€�生æˆ�å¼�AI摘è¦�éš�ç�€ç”Ÿæˆ�å¼�AI技术的爆å�‘“AIå�Ÿç”Ÿåº”用â€�AI-Native Applicationæˆ�为科技领域的新é£�å�£ã€‚这类应用ä»�设计之åˆ�就深度ä¾�赖大è¯è¨€æ¨¡å�‹LLMçš„æ�¨ç�†ä¸�生æˆ�能力而é��ä¼ ç»Ÿè½¯ä»¶çš„åŠŸèƒ½å� åŠ ã€‚ä½†ä¼ ç»ŸLLM在处ç�†å¤�æ�‚问题时如数å¦è¯�æ˜�ã€�ç–略游æˆ�ã€�多轮对è¯�常出ç�°æ€�è·¯å�¡å£³æˆ–逻辑æ–层。本文将è�šç„¦ä¸€ç§�çª�ç ´æ€§åˆ›æ–°æ¨¡å¼�——æ€�ç»´æ ‘Tree of Thoughts, ToT通过类比人类解题时的è�‰ç¨¿çº¸æ€�ç»´æ�示其如何让AIåƒ�äººç±»ä¸€æ ·åˆ†æ¥éª¤ã€�å�¯å›�溯地æ€�考ä»�而é‡�æ�„AIå�Ÿç”Ÿåº”ç”¨çš„æ ¸å¿ƒèƒ½åŠ›è¾¹ç•Œã€‚èƒŒæ™¯ä»‹ç»�目的和范围本文旨在解ç”ä¸‰ä¸ªæ ¸å¿ƒé—®é¢˜ä¸ºä½•AIå�Ÿç”Ÿåº”用需è¦�æ€�ç»´æ ‘è¿™ç§�创新模å¼�æ€�ç»´æ ‘çš„è¿�è¡Œæœºåˆ¶å¦‚ä½•æ¨¡æ‹Ÿäººç±»çš„å¤šæ¥æ�¨ç�†æ€�ç»´æ ‘å¦‚ä½•å…·ä½“è�½åœ°å¹¶æ�¨åЍAIå�Ÿç”Ÿåº”用的功能å�‡çº§å†…容覆盖技术å�Ÿç�†ã€�æ•°å¦æ¨¡å�‹ã€�å®�战案例å�Šæœªæ�¥è¶‹åŠ¿é€‚å�ˆå¯¹ç”Ÿæˆ�å¼�AI应用开å�‘感兴趣的开å�‘者ã€�产å“�ç»�ç�†å�ŠæŠ€æœ¯çˆ±å¥½è€…ã€‚é¢„æœŸè¯»è€…AI应用开å�‘者想了解如何优化LLMçš„å¤�æ�‚任务处ç�†èƒ½åŠ›äº§å“�ç»�ç�†æƒ³è®¾è®¡æ›´æ™ºèƒ½çš„AIå�Ÿç”ŸåŠŸèƒ½æŠ€æœ¯çˆ±å¥½è€…å¯¹AIæ�¨ç�†æœºåˆ¶å¥½å¥‡çš„é��专业读者文档结æ�„概述本文将ä»�人类æ€�考 vs ä¼ ç»ŸAIå“�应的对比切入é€�æ¥æ‹†è§£æ€�ç»´æ ‘çš„æ ¸å¿ƒæ¦‚å¿µé€šè¿‡æ•°å¦æ¨¡å�‹å’Œä»£ç �示例解æ��技术细节结å�ˆæ•™è‚²ã€�客æœ�ã€�ç ”å�‘辅助ç‰å®�际场景展示其应用价值最å��æ�¢è®¨æœªæ�¥ä¸�多模æ€�ã€�自主智能体的è��å�ˆè¶‹åŠ¿ã€‚æœ¯è¯è¡¨æ ¸å¿ƒæœ¯è¯å®šä¹‰AIå�Ÿç”Ÿåº”用ä»�需求分æ��到æ�¶æ�„设计å�‡ä»¥LLMä¸ºæ ¸å¿ƒèƒ½åŠ›çš„åº”ç”¨å¦‚AutoGPTã€�Notion AI区别äº�ä¼ ç»Ÿåº”ç”¨AIæ�’件的集æˆ�模å¼�。æ€�ç»´æ ‘Tree of Thoughts, ToT一ç§�让LLMæ¨¡æ‹Ÿäººç±»å¤šæ¥æ�¨ç�†çš„æ¡†æ�¶é€šè¿‡ç”Ÿæˆ�-评估-å›�溯机制æ�„建动æ€�æ€�维路径。大è¯è¨€æ¨¡å�‹LLM如GPT-4ã€�PaLM 2ç‰å…·å¤‡å¼ºä¸Šä¸‹æ–‡ç�†è§£ä¸�生æˆ�能力的预è®ç»ƒæ¨¡å�‹ã€‚ç›¸å…³æ¦‚å¿µè§£é‡Šä¼ ç»Ÿæ��示工程Prompt Engineering通过设计输入文本引导LLM输出适用äº�简å�•任务如翻译ã€�摘è¦�但难以处ç�†éœ€è¦�å¤šæ¥æ�¨ç�†çš„å¤�æ�‚问题。链å¼�æ€�考Chain of Thought, CoTLLM的基础æ�¨ç�†æ–¹æ³•通过é€�æ¥æ�¨å¯¼ç”Ÿæˆ�ç”æ¡ˆä½†ç¼ºä¹�å›�溯修æ£èƒ½åŠ›ç±»ä¼¼å�•çº¿ç¨‹å†™ä½œæ–‡ã€‚æ ¸å¿ƒæ¦‚å¿µä¸�è�”系故事引入å°�æ˜�解数å¦é¢˜çš„å�¯ç¤ºå‘¨æœ«å°�æ˜�é�‡åˆ°ä¸€é�“æ•°å¦é¢˜â€œé¸¡å…”å�Œç¬¼å¤´å…±35个脚共94å�ªé—®é¸¡å…”å�„å‡ å�ªâ€�ä¼ ç»ŸAIçš„å�𿳕åƒ�é€Ÿç®—æœºå™¨äººä¸€æ ·ç›´æ�¥è¾“入问题ç‰å¾…ç”æ¡ˆã€‚如æ�œæ¨¡å�‹è®ç»ƒæ—¶æ²¡è§�过类似题å�¯èƒ½è¾“出错误比如直æ�¥ç®—35×270忽略兔å�多2å�ªè„šã€‚å°�æ˜�çš„å�šæ³•åœ¨è�‰ç¨¿çº¸ä¸Šç”»äº†æ£µæ€�ç»´æ ‘å�‡è®¾å…¨æ˜¯é¸¡â†’脚数35×270比å®�é™…å°‘24å�ªæ¯�æ�¢1å�ªå…”脚数2→需è¦�æ�¢24÷212å�ªå…”验è¯�12å�ªå…”×4 23å�ªé¸¡Ã—2 484694æ£ç¡®ã€‚å°�æ˜�çš„è�‰ç¨¿çº¸æ€�维有三个关键动作生æˆ�多ç§�å�‡è®¾åˆ†æ”¯ã€�评估å�‡è®¾å�ˆç�†æ€§å‰ªæ��ã€�å›�溯修æ£é”™è¯¯å›�退。æ€�ç»´æ ‘ToTæ£æ˜¯è®©AIå¦ä¼šè¿™ç§�打è�‰ç¨¿èƒ½åŠ›çš„æŠ€æœ¯æ¨¡å¼�ã€‚æ ¸å¿ƒæ¦‚å¿µè§£é‡Šåƒ�ç»™å°�å¦ç”Ÿè®²æ•…äº‹ä¸€æ ·æ¦‚å¿µä¸€AIå�Ÿç”Ÿåº”用——会æ€�è€ƒçš„æ™ºèƒ½åŠ©æ‰‹ä¼ ç»ŸAPPåƒ�å·¥å…·ç›’ä½ éœ€è¦�自己选工具比如用计算器算题ã€�ç”¨æ–‡æ¡£å†™ç”æ¡ˆAIå�Ÿç”Ÿåº”用åƒ�å°�助手它能ç�†è§£ä½ 的需求主动调用å�„ç§�èƒ½åŠ›è§£å†³é—®é¢˜æ¯”å¦‚ä½ è¯´å¸®æˆ‘è§£é¸¡å…”å�Œç¬¼é—®é¢˜å®ƒç›´æ�¥è¾“å‡ºè§£é¢˜è¿‡ç¨‹ç”æ¡ˆã€‚但è¦�处ç�†å¤�æ�‚问题这个å°�助手需è¦�æ›´è�ªæ˜�çš„æ€�考方å¼�。概念二æ€�ç»´æ ‘ToT——AIçš„è�‰ç¨¿çº¸æƒ³è±¡AIå¤§è„‘é‡Œæœ‰ä¸€å¼ ä¼šåŠ¨æ€�生长的æ€�维地图æ¯�个节点是一个æ€�路比如å�‡è®¾å…¨æ˜¯é¸¡èŠ‚ç‚¹ä¸‹çš„åˆ†æ”¯æ˜¯ä¸‹ä¸€æ¥å�¯èƒ½çš„æ“�作比如计算脚数或æ�¢å…”å�试试。AI会åƒ�å°�æ˜�ä¸€æ ·ç”Ÿæˆ�多个å�¯èƒ½çš„æ€�路分支检查æ¯�个æ€�路是å�¦å�ˆç�†è¯„估如æ�œæŸ�个分支走ä¸�通比如脚数算错就å›�到上一æ¥é€‰å�¦ä¸€ä¸ªåˆ†æ”¯å›�溯。概念三大è¯è¨€æ¨¡å�‹LLM——æ€�ç»´æ ‘çš„ç¬”LLM是AIçš„è¯è¨€å¤§è„‘能ç�†è§£é—®é¢˜å¹¶ç”Ÿæˆ�æ–‡å—。æ€�ç»´æ ‘éœ€è¦�LLMå�šä¸‰ä»¶äº‹ç”Ÿæˆ�器Generatoræ ¹æ�®å½“å‰�æ€�路写出下一æ¥å�¯èƒ½çš„æ“�作比如å�‡è®¾å…¨æ˜¯å…”会æ€�æ ·è¯„ä¼°å™¨Evaluator判æ–当å‰�æ€�路是å�¦å�ˆç�†æ¯”如脚数比å®�际多这个å�‡è®¾å�¯èƒ½æœ‰é—®é¢˜æ•´å�ˆå™¨Integrator把所有å�¯è¡Œçš„æ€�路串起æ�¥å½¢æˆ�æœ€ç»ˆç”æ¡ˆæ¯”如æ£ç¡®çš„解法是æ�¢12å�ªå…”ã€‚æ ¸å¿ƒæ¦‚å¿µä¹‹é—´çš„å…³ç³»ç”¨å°�å¦ç”Ÿèƒ½ç�†è§£çš„æ¯”å–»AIå�Ÿç”Ÿåº”用 vs æ€�ç»´æ ‘AIå�Ÿç”Ÿåº”用是å°�助手æ€�ç»´æ ‘æ˜¯å®ƒçš„è�ªæ˜�大脑。就åƒ�å°�æ˜�需è¦�è�‰ç¨¿çº¸æ‰�能解å¤�æ�‚题å°�助手需è¦�æ€�ç»´æ ‘æ‰�能处ç�†å¤�æ�‚任务。æ€�ç»´æ ‘ vs LLMæ€�ç»´æ ‘æ˜¯è§£é¢˜æ–¹æ³•LLM是执行解题的手。就åƒ�å°�æ˜�用铅笔在è�‰ç¨¿çº¸ä¸Šå†™å—LLM用生æˆ�-评估-å›�溯在æ€�ç»´æ ‘é‡Œå†™æ€�路。AIå�Ÿç”Ÿåº”用 vs LLMAIå�Ÿç”Ÿåº”用是最终产å“�LLMæ˜¯æ ¸å¿ƒå¼•æ“�。就åƒ�手机需è¦�芯片æ‰�能è¿�行AIå�Ÿç”Ÿåº”用需è¦�LLMæ�é…�æ€�ç»´æ ‘æ‰�能å®�ç�°æ™ºèƒ½åŠŸèƒ½ã€‚æ ¸å¿ƒæ¦‚å¿µå�Ÿç�†å’Œæ�¶æ�„的文本示æ„�图æ€�ç»´æ ‘çš„æ ¸å¿ƒæ�¶æ�„å�¯æ¦‚括为1æ ¸3模å�—æ ¸å¿ƒåŠ¨æ€�æ€�ç»´æ ‘ç”±èŠ‚ç‚¹å’Œåˆ†æ”¯æ�„æˆ�çš„æ ‘çŠ¶ç»“æ�„æ¯�个节点代表一个æ�¨ç�†çжæ€�。模å�—生æˆ�模å�—生æˆ�候选分支评估模å�—判æ–分支å�ˆç�†æ€§æ�œç´¢æ¨¡å�—é��å�†æ ‘结æ�„寻找最优路径。Mermaid æµ�程图å�ˆç�†ä¸�å�ˆç�†æ˜¯å�¦é—®é¢˜è¾“入生æˆ�åˆ�å§‹æ€�è·¯æ ¹èŠ‚ç‚¹è¯„ä¼°å½“å‰�æ€�路是å�¦å�ˆç�†?生æˆ�下一æ¥åˆ†æ”¯å�节点å›�溯到父节点å°�试其他分支是å�¦æ‰¾åˆ°ç”案?è¾“å‡ºæœ€ç»ˆè·¯å¾„æ ¸å¿ƒç®—æ³•å�Ÿç�† 具体æ“�作æ¥éª¤æ€�ç»´æ ‘çš„æ ¸å¿ƒæ˜¯åŸºäº�æ ‘ç»“æ�„çš„æ�œç´¢æ�¨ç�†å…¶ç®—法æµ�程å�¯åˆ†ä¸º5æ¥ä»¥è§£æ•°å¦é¢˜ä¸ºä¾‹æ¥éª¤1问题分解生æˆ�æ ¹èŠ‚ç‚¹å°†å¤�æ�‚问题拆解为å�¯å¤„ç�†çš„å�问题。例如鸡兔å�Œç¬¼å�¯æ‹†è§£ä¸ºå�‡è®¾å…¨æ˜¯é¸¡â†’计算脚数→对比å®�际脚数的åˆ�å§‹æ€�è·¯æ ¹èŠ‚ç‚¹ã€‚æ¥éª¤2生æˆ�候选分支扩展å�节点用LLM生æˆ�å�¯èƒ½çš„ä¸‹ä¸€æ¥æ“�作å�节点。例如分支1“å�‡è®¾å…¨æ˜¯é¸¡è®¡ç®—脚数â€�分支2“å�‡è®¾å…¨æ˜¯å…”计算脚数â€�分支3“设鸡有xå�ªå…”有35-xå�ªåˆ—方程2x4(35-x)94â€�。æ¥éª¤3评估分支å�ˆç�†æ€§å‰ªæ��用评估器å�¯ä»¥æ˜¯LLMæˆ–è§„åˆ™åˆ¤æ–æ¯�个分支是å�¦å�¯è¡Œã€‚例如分支1计算脚数70比å®�é™…å°‘24评估为部分å�ˆç�†éœ€ä¿®æ£åˆ†æ”¯2计算脚数140比å®�际多46评估为部分å�ˆç�†éœ€ä¿®æ£åˆ†æ”¯3ç›´æ�¥åˆ—方程评估为高å�ˆç�†æ€§å�¯ç›´æ�¥æ±‚解。æ¥éª¤4æ�œç´¢æœ€ä¼˜è·¯å¾„深度/å¹¿åº¦ä¼˜å…ˆæ ¹æ�®è¯„估结æ�œé€‰æ‹©åˆ†æ”¯ç»§ç»æ�¢ç´¢ã€‚例如优先处ç�†é«˜å�ˆç�†æ€§çš„分支3若分支3解出x23鸡则直æ�¥å¾—åˆ°ç”æ¡ˆè‹¥åˆ†æ”¯3计算错误比如列方程时符å�·é”™è¯¯åˆ™å›�æº¯åˆ°æ ¹èŠ‚ç‚¹å°�试分支1或分支2。æ¥éª¤5æ•´å�ˆè¾“出生æˆ�æœ€ç»ˆç”æ¡ˆå°†æœ€ä¼˜è·¯å¾„上的所有节点æ€�路整å�ˆæˆ�自然è¯è¨€è¾“å‡ºè§£é¢˜è¿‡ç¨‹ç”æ¡ˆã€‚Python伪代ç �示例模拟ToTæµ�程classThoughtNode:def__init__(self,content,parentNone):self.contentcontent# 当å‰�æ€�路内容如å�‡è®¾å…¨æ˜¯é¸¡self.parentparent# 父节点å›�溯用self.children[]# å�èŠ‚ç‚¹ä¸‹ä¸€æ¥æ€�è·¯self.score0# 评估分数越高越å�ˆç�†defgenerate_branches(current_node,llm):用LLM生æˆ�当å‰�节点的å�节点候选分支promptf当å‰�æ€�è·¯{current_node.content}。请生æˆ�下一æ¥å�¯èƒ½çš„æ“�作最多3个。branchesllm.generate(prompt)# LLMè¿”å›�候选分支列表return[ThoughtNode(branch,parentcurrent_node)forbranchinbranches]defevaluate_branch(node,llm):用LLM评估分支å�ˆç�†æ€§
分promptf�路{node.content}。请评估这个�路对解决问题的帮助
分10分最��。node.scorellm.generate(prompt,temperature
# 温度设0结�更确定returnnode.scoredefsearch_tree(root,llm,max_depth
:深度优先æ�œç´¢æœ€ä¼˜è·¯å¾„current_noderootfordepthinrange(max_depth):# 生æˆ�å�节点current_node.childrengenerate_branches(current_node,llm)# 评估å�节点forchildincurrent_node.children:evaluate_branch(child,llm)# 选择分数最高的å�èŠ‚ç‚¹ç»§ç»æ�¢ç´¢current_nodemax(current_node.children,keylambdax:x.score)# 检查是å�¦æ‰¾åˆ°ç”案å�‡è®¾ç”案包å�«æ£ç¡®å…³é”®è¯�ifæ£ç¡®incurrent_node.content:returncurrent_node# 若未找到å›�溯到父节点å°�试其他分支æ¤å¤„简化å®�际需å®�ç�°å›�溯逻辑returnNone# 示例调用rootThoughtNode(解决鸡兔å�Œç¬¼é—®é¢˜å¤´35脚
answer_nodesearch_tree(root,llmGPT
print(最终æ€�路路径,get_path(answer_node))# 输出ä»�æ ¹åˆ°ç”æ¡ˆèŠ‚ç‚¹çš„è·¯å¾„æ•°å¦æ¨¡å�‹å’Œå…¬å¼� 详细讲解 举例说æ˜�æ€�ç»´æ ‘çš„æ•°å¦æœ¬è´¨æ˜¯åœ¨çжæ€�空间ä¸å¯»æ‰¾æœ€ä¼˜è·¯å¾„å�¯ç”¨é©¬å°”å�¯å¤«å†³ç–过程MDPæ��述状æ€�定义状æ€� ( s_t )第 ( t ) æ¥çš„æ�¨ç�†çжæ€�对应æ€�ç»´æ ‘çš„ä¸€ä¸ªèŠ‚ç‚¹åŒ…å�«å½“å‰�æ€�路内容和å�†å�²è·¯å¾„。动作 ( a_t )ä»�状æ€� ( s_t ) 生æˆ�å�节点的æ“�作如å�‡è®¾å…¨æ˜¯é¸¡ã€‚转移概ç�‡ä»�状æ€� ( s_t ) 执行动作 ( a_t ) 转移到状æ€� ( s_{t1} ) 的概ç�‡P ( s t 1 ∣ s t , a t ) LLM生æˆ�该å�节点的概ç�‡ P(s_{t1} | s_t, a_t) \text{LLM生æˆ�该å�节点的概ç�‡}P(st1​∣st​,at​)LLM生æˆ�该å�节点的概ç�‡å¥–励函数评估状æ€� ( s_t ) çš„å�ˆç�†æ€§å¥–励 ( R(s_t) ) 越高该状æ€�è¶Šå�¯èƒ½å¯¼å�‘æ£ç¡®ç”案。例如R ( s t ) α × 逻辑一致性 β × ä¸�问题相关性 ( α β 1 ) R(s_t) \alpha \times \text{逻辑一致性} \beta \times \text{ä¸�问题相关性} \quad (\alpha\beta
R(st​)α×逻辑一致性β×�问题相关性(αβ
举例在鸡兔å�Œç¬¼é—®é¢˜ä¸çжæ€� ( s_1 )“å�‡è®¾å…¨æ˜¯é¸¡è„šæ•°70â€�其逻辑一致性得分为
8脚数计算æ£ç¡®ä½†ä¸�å®�é™…ä¸�符相关性得分为1ç›´æ�¥å…³è�”问题则 ( R(s_
1)
5×
8
5×
1
9 )。最优路径æ�œç´¢ç›®æ ‡æ˜¯æœ€å¤§åŒ–累积奖励 ( G \sum_{t0}^T \gamma^t R(s_t) )( \gamma ) ä¸ºæŠ˜æ‰£å› å�æ�ƒè¡¡çŸæœŸå’Œé•¿æœŸå¥–励。通过广度优先æ�œç´¢BFS或深度优先æ�œç´¢DFS找到 ( G ) 最大的路径。项目å®�战代ç �å®�际案例和详细解释说æ˜�å¼€å�‘ç�¯å¢ƒæ�建我们将开å�‘一个AIæ•°å¦é¢˜è§£ç”å™¨æ ¸å¿ƒåŠŸèƒ½æ˜¯ç”¨æ€�ç»´æ ‘å¤„ç�†å¤šæ¥æ•°å¦é¢˜ã€‚工具链LLMOpenAI GPT-4通过API调用框æ�¶LangChain简化LLM交互è¯è¨€Python
9ä¾�赖库openai,langchain,networkx绘制æ€�ç»´æ ‘ã€‚æº�代ç �详细å®�ç�°å’Œä»£ç �解读以下是关键模å�—的简化代ç �完整代ç �è§�GitHub仓库
æ€�维节点类ThoughtNodefromdataclassesimportdataclassfromtypingimportList,OptionaldataclassclassThoughtNode:content:str# 当å‰�æ€�路内容如å�‡è®¾å…¨æ˜¯é¸¡è„šæ•°35×270parent:Optional[ThoughtNode]None# 父节点children:List[ThoughtNode]None# å�节点score:float
0# 评估分数
defget_path(self)-List[str]:è�·å�–ä»�æ ¹èŠ‚ç‚¹åˆ°å½“å‰�节点的路径path[]currentselfwhilecurrent:path.append(current.content)currentcurrent.parentreturnpath[::-1]# å��转列表ä»�æ ¹åˆ°å½“å‰�节点
生�候选分支用LangChain调用LLMfromlangchain.chat_modelsimportChatOpenAIfromlangchain.promptsimportChatPromptTemplate llmChatOpenAI(model_namegpt-4,temperature
0.