
1. 项目概述当金融数据巨头“钻进”智能体干了十几年金融科技我见过太多“风口”来了又去。从大数据到云计算再到前几年的“中台”每个新概念出来金融机构的技术部门都得忙活一阵子供应商们更是蜂拥而上包装出各种解决方案。但这次看到万得Wind——这家服务了中国金融行业近三十年的数据与信息巨头——高调宣布全面拥抱“智能体”Agent我的第一反应不是“又来了”而是“这次可能真的不一样”。这不像是一个追赶时髦的营销动作更像是一个数据帝国在面临时代剧变时一次深思熟虑的、关乎生存的“基因重组”。万得是什么在金融圈它几乎等同于“数据”本身。从最早的终端机里滚动的行情数据到后来包罗万象的宏观、行业、公司财报、研报、新闻万得构建了一个庞大、精密且封闭的数据王国。分析师、基金经理、研究员们的工作流深度绑定在万得的终端和API上。它的商业模式清晰而稳固卖数据、卖软件、卖服务。然而当大模型和智能体的浪潮席卷而来传统的“数据查询-下载-人工分析”模式正在被颠覆。一个能理解自然语言、能自主调用工具、能串联工作流的“智能体”本质上是在重构用户与数据交互的界面和效率。这对万得而言不是锦上添花的功能迭代而是一场必须打赢的“入口保卫战”。所以当万得说要把自己“塞进”智能体其背后的核心命题是如何将一个积累了三十年、结构复杂、体量庞大的传统数据服务系统解构、重组并注入到一个以自然语言为交互核心、以任务自动化为目标的智能体架构中这绝不仅仅是给现有产品加一个聊天机器人外壳那么简单。它涉及到数据底层结构的重塑、服务能力的原子化封装、复杂金融逻辑的模型化理解以及最关键的——商业模式的重新想象。接下来我就结合自己对金融数据行业和智能体技术的理解拆解一下这场转型背后的逻辑、挑战与可能的实现路径。2. 核心需求解析为什么是“智能体”而不仅仅是“大模型”很多人的第一感觉是万得接入一个大模型做个智能问答不就行了这恰恰是理解这个项目深度的关键分水岭。大模型是“大脑”它拥有强大的理解和生成能力但智能体是“大脑手和脚”它具备感知、规划、决策和执行的能力。对于万得这样的场景后者才是刚需。2.1 从“数据检索”到“任务执行”的范式迁移传统万得终端用户比如一位债券研究员的典型工作流是心里有一个问题例如“筛选出AA评级、剩余期限1-3年、且最近一个月收益率上行超过20BP的城投债”。他需要将这个抽象问题翻译成万得终端能理解的具体操作打开债券筛选器依次设置信用评级、期限、债券类型、指标变化等条件执行筛选导出结果可能还要再导入Excel做个简单的图表。这个过程需要用户具备熟练的终端操作技能和清晰的金融逻辑。而智能体模式下的理想状态是用户直接用自然语言提出上述问题。智能体需要完成以下动作理解意图解析出这是一个“债券筛选”任务并识别出三个核心筛选维度评级、期限、收益率变化。规划步骤知道完成这个任务需要调用“债券数据查询接口”、“历史行情计算接口”和“条件筛选功能”。调用工具将用户的自然语言指令转化为对万得底层一系列API的精确调用。例如先获取全市场城投债清单再批量查询其评级、期限和特定时间段的收益率数据最后在内存中进行逻辑运算和筛选。呈现结果不仅返回一个债券列表还能自动生成一个简要的统计摘要如符合条件债券总数、平均收益率、行业分布等并附上关键数据的可视化图表。这个转变的核心是用户不再需要学习复杂的软件操作而是直接定义问题。智能体承担了“金融逻辑翻译官”和“软件操作执行者”的双重角色。这对提升分析师效率、降低工具使用门槛具有革命性意义。2.2 破解“数据孤岛”与“工作流断裂”的顽疾金融机构内部数据和分析工具往往是割裂的。万得的数据可能在终端里彭博的数据在另一个终端内部研究数据在本地数据库风险模型在专门的系统里。一个完整的投资决策需要跨多个平台获取信息并手工拼接效率低下且易出错。智能体架构为连接这些孤岛提供了统一的“调度层”。一个设计良好的金融智能体可以具备“多工具调用”能力。它的行动链可能是先调用万得API获取市场公开数据再通过企业内部认证接口调取自营持仓数据接着启动一个本地的Python脚本运行特定的风险计算模型最后将所有结果汇总生成一份投资建议简报。万得将自己“塞进”智能体意味着它希望成为这个调度网络中最核心、最可靠的数据工具节点而不是一个被绕开的孤岛。它主动开放和标准化自身的服务接口以智能体可调用的方式呈现从而牢牢嵌入新一代的分析工作流中。2.3 应对“实时决策”与“规模覆盖”的业务压力金融市场瞬息万变许多机会窗口以秒计。传统人工监控和筛查模式存在延迟和盲区。智能体可以7x24小时运行根据预设的、极其复杂的条件例如“监测所有医药股当某公司新药临床试验III期结果公告且关键指标超预期同时其竞争对手股价波动率放大时”实时扫描全市场数据瞬间触发预警并推送分析简报。这种“不知疲倦的初级分析师”能力是人力无法比拟的。此外对于大型金融机构研究员资源是稀缺的。智能体可以将资深研究员的分析方法论“如何筛选具有安全边际的成长股”沉淀成可复用的智能体或工作流赋能给更多的初级员工或覆盖更广泛的股票池实现投研能力的规模化复制。注意金融智能体的核心难点不在于“生成一段流畅的点评”而在于“执行一次准确无误的操作”。后者对确定性、可靠性和可追溯性的要求是极高的。一句错误的SQL查询可能导出错误数据一个错误的API参数可能导致交易失误。因此万得这类厂商的智能体其价值基石必须是“精准的工具调用”而非“华丽的文本生成”。3. 架构拆解万得如何被“塞进”智能体把大象装冰箱分三步把万得塞进智能体步骤更复杂但逻辑可循。这本质上是一个庞大的系统重构工程。3.1 能力原子化将庞然大物拆解成乐高积木传统的万得终端是一个功能高度集成、界面复杂的“黑箱”。智能体需要的是标准化、高内聚、低耦合的“能力单元”。因此第一步是对万得三十年积累的所有功能进行彻底的原子化解构。数据查询类原子能力这是最基础的。例如“获取股票A在2023年度的每日收盘价”、“获取公司B最新一期的资产负债表”、“获取行业C的所有成分股列表”。每个能力对应一个或多个纯净的API输入明确股票代码、日期、指标名输出结构化。指标计算类原子能力金融分析涉及大量衍生指标。如“计算股票A过去20日的移动平均线”、“计算债券D的到期收益率”、“计算投资组合E的夏普比率”。这些能力封装了金融公式和计算逻辑。分析工具类原子能力如“对一组股票进行估值分位数排序”、“进行财务报表的同比环比分析”、“绘制股价与成交量的联动图表”。这类能力复杂度更高可能由多个数据查询和计算步骤组合而成。监控预警类原子能力如“持续监控股票F的股价突破某阈值时告警”、“监控宏观指标G当其发布值偏离预期范围时触发”。这个过程需要建立一套完整的“能力地图”和“API目录”并对每个能力进行清晰的自然语言描述和参数定义以便智能体的“大脑”大模型能够理解和调用。3.2 智能体“大脑”选型与金融语料灌注智能体的核心决策引擎是一个大语言模型。万得面临的选择是使用通用开源模型如Llama、Qwen进行深度微调还是与顶尖闭源模型如GPT-4、Claude深度合作抑或是从头训练一个垂直金融大模型。从实际路径看“通用底座行业精调”可能是更务实的选择。即选择一个强大的通用模型作为基础然后使用万得独有的、海量的、结构化的金融数据进行监督微调SFT和基于人类反馈的强化学习RLHF。这个训练过程的核心目标是精通金融术语与逻辑让模型深刻理解“市盈率”、“久期”、“信用利差”、“量化宽松”等专业概念以及它们之间的关联。掌握万得能力地图让模型学会将用户的自然语言问题精准映射到上文所述的原子能力上。例如用户问“茅台贵不贵”模型应联想到需要调用“获取贵州茅台估值指标”和“进行行业估值对比”等能力。遵循严谨的分析范式金融分析拒绝天马行空。模型生成的分析逻辑必须严谨、可追溯。训练时需要注入大量的优秀研报、分析框架作为正例。3.3 工作流引擎与记忆模块设计简单的问答无法处理复杂任务。用户可能会说“帮我分析一下新能源车板块的投资机会要包括产业链上下游、主要公司对比、近期政策影响和风险提示。”这显然是一个需要多步骤、多能力协同的复合任务。这就需要引入“工作流引擎”。智能体的大脑在解析此类任务后不应立即行动而是先生成一个任务执行计划Plan。这个计划可能包括1定义新能源车板块范围调用行业成分股查询2获取上下游公司名单及基本面数据批量调用公司查询3进行财务指标对比调用分析工具4爬取近期相关政策新闻调用新闻API文本分析5综合以上信息生成报告调用报告生成模板。同时智能体需要具备“记忆”能力包括短期会话记忆记住当前对话的上下文避免用户需要不断重复信息。长期知识记忆存储用户偏好、自定义的分析模板、历史任务记录等实现个性化服务。工具使用记忆记录每次工具调用的输入输出用于结果复核、问题排查和后续步骤的依赖。3.4 安全、合规与审计的“紧箍咒”金融无小事。智能体在金融机构的应用必须戴上安全合规的“紧箍咒”这可能是万得转型中最具挑战性的一环。数据权限管控智能体调用的每一个API都必须严格遵守用户的账号权限。一个只能看A股数据的账户其智能体绝不能查询到美股数据。这需要在智能体调用链的每一层都植入严格的权限校验。操作可审计智能体所做的每一次数据查询、每一次计算、每一个结论都必须有完整的日志记录做到全程可追溯、可复盘。当出现疑问或错误时能够清晰地还原决策链条。内容合规审查智能体生成的所有报告、观点在最终送达用户前可能需要经过合规关键词过滤或风险提示确保其内容符合金融机构的内控要求和监管规定。稳定性与降级方案当大模型推理出现幻觉胡言乱语或规划出错时系统必须有熔断机制能够回退到传统的、确定性的操作界面保证基础服务不中断。4. 实操推演构建一个简易的“万得智能体”原型为了更具体地说明我们抛开万得庞大的内部系统推演一个高度简化的、面向股票分析的智能体原型该如何构建。这有助于理解其中的技术环节。4.1 环境准备与工具封装假设我们已有万得部分数据的API访问权限这通常是企业客户才有的。我们的智能体原型需要以下核心组件大语言模型LLM选择一款支持函数调用Function Calling的模型例如OpenAI的GPT-4或国内深度求索的DeepSeek。这是智能体的“大脑”。万得API封装层将我们需要用到的万得API封装成标准的Python函数并为其编写清晰的自然语言描述。这是智能体的“手”。智能体框架使用LangChain、LlamaIndex或AutoGen等框架来编排整个智能体系统。它们提供了与模型交互、管理工具、控制流程的脚手架。以下是一个工具封装的示例# wind_api_tools.py import windpy as w # 假设的万得Python API库 from datetime import datetime, timedelta def get_stock_quote(stock_code: str) - dict: 获取指定股票的实时报价。 参数: stock_code: 股票代码例如 000001.SZ 返回: 包含最新价、涨跌幅、成交量等信息的字典。 data w.wsq(stock_code, rt_last,rt_pct_chg,rt_vol) # 将万得返回的数据结构转换为字典 return { code: stock_code, last_price: data.Data[0][0], pct_change: data.Data[1][0], volume: data.Data[2][0] } def get_historical_data(stock_code: str, start_date: str, end_date: str, fields: str close) - list: 获取股票历史行情数据。 参数: stock_code: 股票代码 start_date: 开始日期格式 YYYY-MM-DD end_date: 结束日期格式 YYYY-MM-DD fields: 所需字段默认为收盘价 返回: 日期和数据的列表。 data w.wsd(stock_code, fields, start_date, end_date) times data.Times values data.Data[0] return [{date: t.strftime(%Y-%m-%d), value: v} for t, v in zip(times, values)] def get_company_financials(stock_code: str, report_type: str Income) - dict: 获取公司主要财务指标。 参数: stock_code: 股票代码 report_type: 报表类型可选 Income(利润表), Balance(资产负债表), CashFlow(现金流量表) 返回: 财务指标字典。 # 这里简化处理实际调用更复杂的万得函数 indicator_map { Income: oper_rev,net_profit, Balance: tot_assets,tot_liab, CashFlow: net_cash_flows_oper_act } fields indicator_map.get(report_type, indicator_map[Income]) data w.wsd(stock_code, fields, 2022-12-31, 2022-12-31, rptType1) return {fields: data.Data[0][0]} # 简化返回4.2 智能体核心逻辑编排接下来我们使用LangChain来组装大脑和手。关键步骤是让LLM知道它有哪些工具可用并学会在合适的时候调用。# agent_core.py from langchain.agents import initialize_agent, AgentType from langchain_openai import ChatOpenAI # 或其他LLM from langchain.memory import ConversationBufferMemory from wind_api_tools import get_stock_quote, get_historical_data, get_company_financials # 1. 初始化LLM此处需填入实际的API Key llm ChatOpenAI(modelgpt-4, temperature0, openai_api_keyyour-key) # 2. 定义工具列表并为每个工具提供清晰的描述 tools [ Tool( nameGetStockQuote, funcget_stock_quote, description获取一只股票的实时行情包括最新价、涨跌幅和成交量。输入是股票代码例如000001.SZ。 ), Tool( nameGetHistoricalData, funcget_historical_data, description获取股票的历史价格数据。需要输入股票代码、开始日期和结束日期。用于分析趋势。 ), Tool( nameGetCompanyFinancials, funcget_company_financials, description获取公司的基本财务数据。需要输入股票代码和报表类型Income, Balance, CashFlow。 ) ] # 3. 初始化记忆让智能体有上下文概念 memory ConversationBufferMemory(memory_keychat_history, return_messagesTrue) # 4. 创建智能体 agent initialize_agent( tools, llm, agentAgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION, # 适合对话和工具调用的Agent类型 memorymemory, verboseTrue # 开启详细日志方便观察思考过程 ) # 5. 运行智能体 query 请帮我看看贵州茅台600519.SH的实时股价并告诉我它过去一个月的收盘价走势。 result agent.run(query) print(result)当用户提出上述查询时智能体内部的“思考过程”会是这样的思考用户需要两个信息实时股价和历史走势。我有GetStockQuote工具可以获取实时价有GetHistoricalData工具可以获取历史数据。行动首先调用GetStockQuote(600519.SH)得到实时数据。观察收到实时数据例如{“last_price”: 1700.5, “pct_change”: 1.2}。思考我还需要过去一个月的历史数据。我需要计算开始日期今天减去30天。行动调用GetHistoricalData(600519.SH, 2024-03-10, 2024-04-09, close)。观察收到一系列日期和收盘价。思考现在我有所有需要的信息了。我需要用自然语言组织答案并简要描述走势比如计算一下期间涨跌幅。最终回答“贵州茅台当前股价为1700.5元今日上涨1.2%。过去一个月3月10日至4月9日其收盘价从1650元波动上涨至1700.5元累计涨幅约3.06%整体呈震荡上行趋势。”4.3 复杂任务链的实现对于更复杂的任务如“对比茅台和五粮液的基本面和近期股价表现”单一的Agent可能规划能力不足。这时可以引入更高级的框架如LangChain的Plan-and-Execute模式或者使用AutoGen创建多个协作的智能体。一个简单的思路是设计一个“分析师智能体”来分解任务规划阶段分析师智能体先不调用工具而是生成一个任务列表任务1获取600519.SH和000858.SZ的实时报价。任务2获取两者过去三个月的历史收盘价。任务3获取两者最新的净利润和营业收入数据。任务4基于以上数据生成对比分析报告。执行阶段另一个“工具执行智能体”或直接由框架按顺序执行任务1-3收集所有数据。合成阶段分析师智能体收到所有数据后执行任务4生成最终对比报告。这个过程中万得的各种API被无缝地编织进一个由自然语言驱动的任务流中。5. 挑战、风险与未来展望将万得塞进智能体前景光明但道路绝非坦途。在实际落地中会面临诸多严峻挑战。5.1 技术层面的核心挑战幻觉与确定性之间的矛盾大模型的“幻觉”是其天性但金融操作要求100%的确定性。智能体错误地理解一个参数如把“每股收益”理解成“净利润”可能导致灾难性的分析错误。解决方案包括强化工具调用的模式严格限制输出格式、增加结果复核环节例如让智能体解释其数据来源和计算过程、以及建立人类在环Human-in-the-loop的审核机制尤其对于关键输出。复杂逻辑的可靠规划金融分析涉及大量“如果...那么...”的非线性逻辑。例如“如果市盈率低于行业平均且营收增长率高于20%则标记为关注”。当前的智能体在理解嵌套、多条件的复杂逻辑并转化为可靠执行计划方面能力仍有待提高。这需要极其精细的提示工程和可能结合传统规则引擎的混合系统。性能与成本实时调用大模型和频繁调用数据API响应速度和成本都是问题。对于高频、简单的查询如查股价传统终端可能更快更经济。智能体更适合处理中低频、复杂、需要串联多个步骤的分析任务。优化策略包括对常见问题建立缓存、使用更轻量的模型处理简单意图识别等。5.2 业务与生态层面的挑战商业模式重构万得传统的License收费模式面临挑战。智能体时代是按调用次数收费按处理的数据量收费还是打包成“智能分析能力”订阅如何对“智能体生成的一个观点报告”定价这需要全新的价值衡量体系和定价策略。生态竞争与开放万得一直是相对封闭的生态。而智能体的趋势是开放和连接。万得是选择打造一个只连接自家数据的“封闭智能体”还是做一个能兼容第三方数据源和工具的“开放平台”前者控制力强但可能受限后者生态广阔但可能削弱其核心数据壁垒。这是一个战略抉择。用户习惯与信任培养资深分析师对万得终端有着肌肉记忆般的熟练度。让他们放弃键盘快捷键和固定界面转而与一个“黑盒”对话机器人协作存在巨大的习惯转换成本和信任门槛。智能体必须证明其效率提升是压倒性的且结果是高度可靠的。5.3 未来演进方向尽管挑战重重但方向是清晰的。万得的智能体演进可能会分几步走初级阶段增强型问答在现有终端内嵌入智能问答助手处理简单的数据查询和指标解释作为传统操作的补充。目前很多厂商已在此阶段。中级阶段任务自动化推出独立的智能体应用或插件能够执行跨数据域、多步骤的复杂分析任务如自动生成行业扫描报告、监控组合风险等开始部分替代重复性人工劳动。高级阶段认知协作伙伴智能体深度融入投研全流程不仅能执行任务还能基于历史数据和市场信息提出假设、进行推演、提示潜在风险成为研究员和投资经理的“副驾驶”实现人机深度协同决策。平台阶段金融智能体生态万得开放其智能体底层平台和原子能力允许金融机构在其上构建自定义的、贴合自身业务流程的专属智能体甚至开发垂直领域的智能体如固收智能体、衍生品智能体进行交易。万得则成为智能体时代金融基础设施的核心提供商。我个人在实际操作中的体会是金融智能体的落地技术只占一半另一半是“金融工程”。它要求项目团队里既要有精通大模型和软件架构的工程师更要有深刻理解金融业务逻辑、数据内涵和用户真实痛点的资深从业者。两者必须紧密合作才能把智能体的“聪明劲”用在正确的金融逻辑上避免做出“用火箭发动机推动自行车”这种看似先进实则无用的东西。对于万得这样的公司其最大的优势不在于技术有多前沿而在于那三十年积累的、对金融业务和数据本身无与伦比的深度理解。这才是它在这场智能体变革中最坚实的护城河也是它能否真正成功“钻进”智能体并引领下一代金融信息服务业态的关键。