手把手教你构建AI Agent:从理论到实战(附股票推荐案例)!
文章详细介绍了AI Agent的开发方法,包括核心组件(大脑、感知、行动、记忆)、实现框架和设计原则。通过代码示例展示了如何构建简单AI Agent,并提供了股票推荐Agent的具体实现方案。文章强调安全第一、工具明确等关键设计原则,指出构建AI Agent的本质是让大模型作为"决策中心"指挥工具完成任务。
如何写AI Agent?
那么如何写一个AI Agent?
例如如何写一个推荐股票的AI Agent? 可推荐股票, 并且推荐什么时机买入, 什么时机卖出, 适合短线操作, 做波段, 还是长线持有?
看看Qwen怎么回答,让AI设计AI
一、如何写一个AI Agent
写一个 AI Agent(智能体)的核心思想是:让程序不仅能执行固定指令,还能感知环境、自主决策、调用工具、记忆历史,并持续完成目标。下面我用通俗易懂的方式,结合当前主流技术(如大模型 + 工具调用 + 记忆机制),分步骤说明如何构建一个实用的 AI Agent。
01.AI Agent 的核心组件(4 大要素)
一个典型的 AI Agent 包含以下模块:
| 模块 | 作用 | 常见实现 |
|---|---|---|
| 大脑(Reasoning) | 决策、规划、推理 | 大语言模型(如 Qwen、GPT、Llama) |
| 感知(Perception) | 理解输入(文本、图像等) | LLM + 多模态模型 |
| 行动(Action) | 调用工具、执行操作 | 函数调用(Function Calling)、API |
| 记忆(Memory) | 存储历史、上下文、知识 | 向量数据库、短期/长期记忆 |
✅ 简单说:Agent = LLM + 工具 + 记忆 + 循环控制
02.写一个最简 AI Agent(代码示例)
假设我们要做一个“能查天气、做计算、回答问题”的 Agent。
步骤 1:定义工具(Tools)
import mathimport requestsdef get_weather(city: str) -> str: # 模拟调用天气 API return f"今天 {city} 晴,25°C"def calculate(expression: str) -> float: # 安全计算(仅支持简单表达式) try: return eval(expression, {"__builtins__": {}}, {"math": math}) except: return "计算错误"
步骤 2:让 LLM 决定是否调用工具
使用支持 Function Calling 的模型(如 Qwen-Max、GPT-4、Ollama + function schema)。
from qwen_agent import Agent # 假设使用通义千问官方 Agent 框架# 定义工具描述(供 LLM 理解)tools = [ { "name": "get_weather", "description": "查询某城市的天气", "parameters": {"city": "城市名,如'北京'"} }, { "name": "calculate", "description": "计算数学表达式", "parameters": {"expression": "合法的数学表达式,如'2+3*4'"} }]# 创建 Agentagent = Agent( model="qwen-max", tools=tools, system_prompt="你是一个智能助手,能回答问题、查天气、做计算。")# 运行response = agent.run("北京今天天气怎么样?")print(response) # → 调用 get_weather("北京") → 返回天气
🔧 如果不用官方框架,也可手动解析 LLM 输出的 JSON,判断是否需要调用工具。
03.进阶:加入记忆与多轮规划
1. 短期记忆:用对话历史(Chat History)
history = [ {"role": "user", "content": "北京天气?"}, {"role": "assistant", "tool_calls": [{"name": "get_weather", "args": {"city": "北京"}}]}, {"role": "tool", "content": "今天北京晴,25°C"}, {"role": "assistant", "content": "北京今天晴,25°C"}]
2. 长期记忆:用向量数据库(如 Chroma、Milvus)
- 把重要信息(如用户偏好、知识片段)存入向量库
- 每次决策前,先检索相关记忆
from chromadb import Clientclient = Client()collection = client.create_collection("memory")# 存记忆collection.add( documents=["用户喜欢喝美式咖啡"], metadatas=[{"user_id": "123"}], ids=["mem1"])# 查记忆results = collection.query(query_texts=["用户喜欢什么咖啡?"], n_results=1)
3. 自主规划(ReAct / Plan-and-Execute)
让 Agent 先写计划,再执行:
用户问:“帮我订明天从北京到上海的机票,预算 1000 元内。”
Agent 思考:
- 需要知道明天的日期 → 调用
get_current_date() - 查询航班 → 调用
search_flights("北京", "上海", "2024-06-15", max_price=1000) - 如果有结果,返回;否则建议改期或加预算。
04.推荐框架(快速上手)
| 框架 | 特点 | 适合人群 |
|---|---|---|
| LangChain | 功能全面,支持记忆、工具、链式调用 | 开发者 |
| LlamaIndex | 专注 RAG + Agent,适合知识问答 | 研究者 |
| Qwen-Agent (通义) | 中文友好,支持 function calling | 国内用户 |
| AutoGen (微软) | 多 Agent 协作,适合复杂任务 | 高级用户 |
| Ollama + LM Studio | 本地运行开源模型 + 工具调用 | 隐私敏感者 |
05.关键设计原则
- 安全第一:不要让 Agent 直接执行
eval()、os.system()等危险操作。 - 工具要明确:每个工具要有清晰的输入/输出描述,方便 LLM 理解。
- 失败要兜底:工具调用失败时,Agent 应能解释或换策略。
- 避免无限循环:设置最大思考步数(如最多 5 步)。
06.一个完整流程图(ReAct 模式)

总结
写 AI Agent 的本质是:把大模型当作“决策中心”,让它指挥各种工具完成任务。
✅ 初学者建议:
- 用 Qwen-Agent 或 LangChain 搭一个能查天气/计算的 demo
- 加入 向量数据库 实现长期记忆
- 尝试 多步任务(如“总结最近3篇关于AI的新闻”)
🌟 最终目标:让 Agent 像一个“数字员工”,能独立完成复杂工作。
如果你有具体场景(如客服、数据分析、游戏 NPC),我可以给出针对性架构!
二、如何写一个推荐股票的AI Agent?
要构建一个推荐股票的 AI Agent,能判断买入/卖出时机,并建议操作风格(短线、波段、长线),需要融合 金融知识、技术指标、市场数据、大模型推理能力 和 风险控制逻辑。
下面我将从 设计架构 → 核心模块 → 代码示例 → 风险提示 四个层面,给出一个可落地的 AI Agent 实现方案。
01.整体架构(ReAct + 工具调用)

02.核心模块设计
1. 工具(Tools)定义
| 工具名 | 功能 | 数据源 |
|---|---|---|
get_stock_price(symbol) |
获取当前价格、52周高低 | Yahoo Finance / Tushare |
get_technical_indicators(symbol) |
计算 MACD、RSI、均线、布林带 | TA-Lib / 自定义 |
get_fundamentals(symbol) |
获取 PE、PB、ROE、营收增速 | 东方财富 / Tushare |
get_market_sentiment() |
获取新闻情绪、资金流向 | 新浪财经 / 东方财富 API |
classify_trend(symbol) |
判断趋势:上涨/震荡/下跌 | 基于均线+波动率 |
2. 决策逻辑(由 LLM + 规则驱动)
- 短线(<5天):RSI 超卖 + 放量突破 + MACD 金叉
- 波段(1-3个月):处于上升通道 + 回踩均线 + 基本面稳健
- 长线(>6个月):低估值 + 高 ROE + 行业龙头 + 股息率 > 2%
LLM 负责综合解读指标,避免硬编码规则。
03.代码实现(Python + Qwen + Tushare)
假设你有 Tushare token(免费注册),并安装
qwen-agent、tushare、talib
步骤 1:安装依赖
pip install qwen-agent tushare TA-Lib pandas numpy
步骤 2:定义工具
import tushare as tsimport talibimport pandas as pdts.set_token('YOUR_TUSHARE_TOKEN')pro = ts.pro_api()def get_stock_price(symbol: str) -> dict: df = ts.get_realtime_quotes(symbol) return { "price": float(df['price'].iloc[0]), "high_52w": float(df['high'].iloc[0]), "low_52w": float(df['low'].iloc[0]) }def get_technical_indicators(symbol: str, days=60) -> dict: df = ts.pro_bar(ts_code=symbol, adj='qfq', freq='D', start_date='20240101') df = df.sort_index(ascending=True) close = df['close'].values rsi = talib.RSI(close, timeperiod=14)[-1] macd, signal, hist = talib.MACD(close) ma20 = talib.SMA(close, 20)[-1] ma60 = talib.SMA(close, 60)[-1] return { "rsi": rsi, "macd": macd[-1], "macd_signal": signal[-1], "ma20": ma20, "ma60": ma60, "price": close[-1] }def get_fundamentals(symbol: str) -> dict: # 简化:假设 symbol 是 ts_code,如 '600519.SH' df = pro.daily_basic(ts_code=symbol, trade_date='20240614') ifnot df.empty: return { "pe": df['pe'].iloc[0], "pb": df['pb'].iloc[0], "total_mv": df['total_mv'].iloc[0] # 亿元 } return {"pe": None, "pb": None}
步骤 3:构建 Agent
from qwen_agent import Agenttools = [ { "name": "get_stock_price", "description": "获取股票当前价格和52周高低", "parameters": {"symbol": "股票代码,如 '600519'"} }, { "name": "get_technical_indicators", "description": "获取技术指标:RSI、MACD、均线", "parameters": {"symbol": "股票代码"} }, { "name": "get_fundamentals", "description": "获取基本面数据:PE、PB", "parameters": {"symbol": "股票代码(带交易所后缀,如 '600519.SH')"} }]system_prompt = """你是一个专业的股票投资顾问AI,擅长结合技术面与基本面给出操作建议。请根据工具返回的数据,回答以下问题:1. 是否值得买入?当前是否是好时机?2. 建议买入区间、止损位、目标卖出价。3. 适合短线(<5天)、波段(1-3月)还是长线(>6月)?4. 风险提示(如高估值、行业利空等)。"""agent = Agent( model="qwen-max", tools=tools, system_prompt=system_prompt)# 用户提问response = agent.run("分析贵州茅台(600519)现在是否适合买入?")print(response)
04.典型输出示例(模拟)
股票:贵州茅台(600519)
当前价:1700 元
技术面:RSI=45(中性),MACD金叉,股价站上20日均线,但未突破60日均线。
基本面:PE=28,PB=8.5,估值偏高,但ROE>30%,行业龙头。
建议:
- 操作风格:波段持有(1-2个月),不适合短线(波动小),长线需等待估值回调。
- 买入区间:1650 - 1680 元(当前可分批建仓)
- 止损位:1600 元(跌破60日均线)
- 目标价:1850 元(前高压力位)
- 风险提示:消费复苏不及预期、估值偏高、短期无催化剂。
05.进阶优化方向
| 方向 | 说明 |
|---|---|
| 多因子模型 | 加入资金流、北向持仓、龙虎榜数据 |
| 回测验证 | 用 backtrader 验证策略历史表现 |
| 风险控制 | 加入最大回撤限制、仓位建议 |
| 多股票对比 | 同时分析多个标的,推荐最优 |
| 本地部署 | 用 Ollama + Qwen2.5-Coder + 本地数据,避免 API 依赖 |
⚠️ 重要风险提示
本 AI Agent 仅用于技术演示,不构成投资建议。
股市有风险,入市须谨慎。AI 无法预测黑天鹅事件(如政策突变、财报暴雷)。
建议:AI 辅助决策 + 人工复核 + 严格止损。
如果你希望我提供 完整可运行的 GitHub 项目模板(含 Docker 部署、Web UI),也可以告诉我!
三、0基础怎么学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

更多推荐
所有评论(0)