ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Dexter 使用指南:复杂金融研究问题如何被自动拆解成可执行步骤

Dexter 使用指南:复杂金融研究问题如何被自动拆解成可执行步骤 Dexter 使用指南复杂金融研究问题如何被自动拆解成可执行步骤【免费下载链接】dexterAn autonomous agent for deep financial research项目地址: https://gitcode.com/GitHub_Trending/dexter19/dexter把这家公司估值合不合理这类大问题直接丢给大模型你多半只能收到几句没有数据、没有出处的套话。Dexter 是一个开源金融研究智能体它把复杂问题自动拆成可执行的研究步骤自己抓取实时财务数据再检查自己的工作最后才给出答案。本文带你从源码层面走一遍这条提问→取数→作答的路径。为什么复杂金融问题直接问大模型总差口气你晚上翻财报想搞清楚特斯拉上季度现金流到底健康不健康。打开聊天框问一句回来的是品牌力强、但竞争激烈之类的三行字没有一个数字也没有一个出处。问题在于金融答案必须落在数据上而模型不知道数据在哪。你得自己去终端拉财报、自己算比率、自己找同行对照。这些脏活正是 Dexter 想替你干的部分。那它是怎么干成的答案在一个循环里。核心循环智能体是怎么想一步做一步的 大白话讲Dexter 的核心是一个智能体循环Agent Loop即模型想一步、做一步、再看结果的反复过程。分三步看输入你发一句问题。系统先给模型拼好开场简报——系统提示词、历史对话、你这句提问同时为这次提问开一个 scratchpad草稿板一个只增不改的记录文件后面每次工具调用都记进去。处理模型判断我是否还缺数据。缺就发起工具调用tool call即模型告诉程序去取这份数据程序执行并把结果写回对话。系统执行这些调用把结果追加回对话。输出模型认为数据够了就不再调工具它的回复就是最终答案。主循环就在 Agent 类 里// src/agent/agent.ts 主循环节选简化 while (ctx.iteration this.maxIterations) { const mc microcompactMessages(messages); // 1. 清理上下文 const response await this.callModel(messages); // 2. 让模型想一步 if (!hasToolCalls(response)) { // 3. 无工具调用 最终答案 yield* this.handleDirectResponse(responseText, ctx); return; } const { toolMessages } await this.executeTools(response, ctx); // 4. 执行工具 messages.push(...toolMessages); }整个过程默认最多跑 10 轮。到点就停并说明原因不会无限转圈。循环只是骨架真正的难点在三个细节上。关键能力拆解拆任务、压上下文、防跑偏 任务怎么拆工具表就是行动清单Dexter 没有单独的规划模块它拆任务靠的是看工具清单。工具注册表 里登记着 get_financials财务报表、get_market_data行情与新闻、read_filingsSEC 文件、stock_screener选股筛选这些金融工具每个工具还带一个能否并发标记。模型看到问题后从这张清单里挑先取什么数、再取什么数一个复杂问题就这样变成一串工具调用不需要你事先写计划。上下文怎么压三层防线防过载一次工具结果动辄几万字符模型窗口装不下这么多。Dexter 布了三层防线第一层超过 5 万字符的结果先落盘上下文里只留 2000 字符预览加文件路径见大结果持久化第二层每轮对话做一次轻量裁剪把过老的只读工具结果清掉腾位置第三层当上下文逼近阈值调一个快速模型把所有结果压缩成一份结构化研究进度纪要关键数字一个不落接着干见压缩模块。怎么防跑偏软限额而不是硬拦截你可能会问模型要是不停取数会不会一直转答案是 scratchpad 里的软限额。它把每次工具调用记成 JSONL 文件同时做软限制统计每个工具默认最多调 3 次发现你在重复几乎相同的参数就往提示词里注入一条提醒让模型自己意识到该停手了。提醒而不是拦截给模型留了自我纠正的余地。再叠加 10 轮迭代上限无限取数这种死循环基本被堵死了。原理讲完看看它在真实任务里怎么跑。实战走查一句估值问题背后的三轮调用举个例子你输入NVDA 现在的估值合理吗对比一下同行。第一轮模型先用 get_financials 拉 NVDA 最新财报同时并发起 get_market_data 取行情——只读工具可以并行跑一步顶两步。第二轮它发现缺同行数据用 stock_screener 或 web_search 补一列同业估值倍数。此时上一轮的大结果开始被裁剪microcompact 把最老的内容清成占位标记窗口腾出来了。第三轮数据够了模型停止调用工具直接输出答案用了哪些估值倍数、对照了哪些数据、结论是什么一次讲清。你最终拿到两样东西一份带数字和来源的回答外加.dexter/scratchpad/里一个 JSONL 文件完整记录每次工具调用和摘要。想核对某一步的算法翻它就行。想自己跑一遍的话配置并不复杂。快速上手三步跑通 Dexter ⚡git clone https://gitcode.com/GitHub_Trending/dexter19/dexter cd dexter bun install cp env.example .env # 填上密钥 bun start细节见 README。提醒一句.env 里至少填好 LLM 密钥如 OPENAI_API_KEY和 FINANCIAL_DATASETS_API_KEY行情数据全靠后者缺了工具集就是空的。Dexter 的价值不在于它替你说出答案而在于问题→数据→结论这条链路全程留痕、可复查。做 Agent 开发的话值得把 src/agent/ 下的循环与压缩逻辑完整读一遍做研究的话clone 下来填好密钥把你的第一个问题丢给它。【免费下载链接】dexterAn autonomous agent for deep financial research项目地址: https://gitcode.com/GitHub_Trending/dexter19/dexter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表