告别“纯聊天”!用 Claude Agent SDK 给大模型装上“手和脚” —— 实战 A 股财报分析 Agent
告别“纯聊天”!用 Claude Agent SDK 给大模型装上“手和脚” —— 实战 A 股财报分析 Agent
现在的 LLM 越来越聪明,但它们往往受限于训练数据,缺乏实时获取外部数据或执行本地任务的能力。如何让大模型不仅能“说”,还能“做”?
MCP(Model Context Protocol)协议的出现,为这个问题提供了一个优雅的解决方案。今天,我们将借助 claude-agent-sdk,结合本地部署的开源模型,手把手教你写一个能自动抓取 A 股上市公司财报并落地的实战 Agent!
💡 核心概念解析
在开始看代码之前,我们需要搞懂两个核心概念:
- MCP (Model Context Protocol): 一种让大模型与外部工具进行标准化交互的协议。你可以把它想象成大模型和现实世界之间的“USB 接口”。
- Claude Agent SDK: 虽然名字叫 Claude SDK,但它底层基于 MCP 协议构建。这意味着 它完全可以配合 OpenAI API 兼容的本地模型(如 Qwen)一起使用! 这就是我们今天代码中最酷的地方。
🛠️ 1. 准备工作:环境与配置
代码使用 dotenv 加载环境变量,并巧妙地将 Anthropic SDK 的请求地址重定向到了本地的 http://localhost:1234/v1(通常是 LM Studio 或 vLLM 提供的服务),并将模型替换成了开源的 Qwen。
1 | import os |
Tips: 这意味着你无需调用昂贵的商业 API,只需在本地跑一个开源模型,就能体验强大的 Agent 能力!数据完全掌握在自己手里,安全又免费。
🔧 2. 打造专属“工具”:@tool 装饰器
大模型要干活,得先有工具。在 SDK 中,我们使用 @tool 装饰器来定义工具。
1 | from claude_agent_sdk import tool |
划重点:
- 工具名称 (
"getbalance"): 这是模型看到的“函数名”。 - 工具描述: 模型就是通过阅读这段描述,来决定什么时候调用这个工具的。写清楚参数类型和用途至关重要!
- 返回值规范: MCP 协议要求返回特定的 JSON 结构(包含
content数组),以便模型能够解析工具的执行结果并继续推理。
📦 3. 组装 MCP Server
定义好工具后,我们需要把它包装成一个标准的 MCP Server。这一步就像是把我们的工具打包成了一个独立的服务,随时准备被大模型调用。
1 | from claude_agent_sdk import create_sdk_mcp_server |
🚀 4. 启动 Agent 客户端
最后,初始化客户端,把刚才创建的 MCP Server 交给它,并发送指令!
1 | from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions |
🔑 核心细节
allowed_tools:
这里的mcp__tools__getbalance是一种约定俗成的工具 ID 命名规则:mcp__{server_name}__{tool_name}。把它加进去,模型在调用时就不会弹出“是否允许执行”的二次确认,实现真正的全自动运行。
⚙️ 5. 完整运行流程复盘
当你运行这段代码时,后台到底发生了什么?
- 用户输入: “获取 SH600600 的2025年度资产负债表”。
- 大模型思考: Qwen 模型分析意图,发现需要获取 A 股财报,于是决定调用
getbalance工具。 - 参数提取: 模型自动从用户的话中提取出
stock_code="SH600600"和year="2025"。 - 工具执行: Python 代码接管,通过
akshare请求金融接口,下载数据并保存为本地 CSV 文件。 - 反馈结果: 工具将“保存成功”的路径信息返回给大模型。
- 最终回复: 大模型根据执行结果,生成一段总结性的话反馈给用户。
📝 总结与思考
通过这不到 100 行的 Python 代码,我们不仅实现了一个具备自然语言理解 + 自动化执行 + 文件读写能力的智能体,还掌握了 MCP 协议的核心机制。
未来可扩展的方向:
- 多工具协同: 给 Agent 加上“利润表查询”、“现金流量表查询”等工具,让它能进行全面的财务分析。
- 数据可视化: 在工具中加入绘图功能,执行完毕后直接将生成的图表返回给大模型。
- 自动化报告: 让大模型读取 CSV 文件,自动生成一份专业的股票分析报告。
无论是金融数据抓取、天气查询还是自动化运维,你都可以用这套模板去构建属于你自己的 AI 助手。赶紧动手试试吧!
如果你觉得这篇文章对你有帮助,欢迎点赞、在看、分享给你的朋友!欢迎在评论区留言交流你在构建 Agent 过程中遇到的坑~




