· · ·
内容很长,收藏起来,未来可能用得上哦
最近,很多朋友都在问:“有没有一种方法,能让AI帮我分析股票,给出专业的投资建议?”
答案是肯定的!今天我们就用 LangGraph 框架,亲手搭建一个专业的股票分析智能体。
这个智能体能做到什么?
·“特斯拉和苹果股票,哪个更值得投资?”
·“帮我看一下小米最近的股价走势”
一、核心原理:ReAct架构让AI“思考”
我们的智能体基于 ReAct(推理+行动) 架构:
1. 推理:大模型分析用户问题,决定需要什么信息
2. 行动:调用相应的工具获取数据
3. 再推理:结合数据给出最终答案
比如当用户问“特斯拉和苹果股票相比如何”时:
text用户问题 → AI分析需要两家公司数据 → 调用工具获取股票代码 → 调用工具获取详细数据 → AI分析比较 → 给出建议
二、两大核心工具的实现
工具1:智能获取股票代码
很多人不知道,“苹果公司”的股票代码不是APPLE,而是AAPL。我们的第一个工具就是解决这个问题:
pythonimport requestsdef get_stock_symbol(company_name:str)->str:"""根据公司名称获取股票代码"""api_key ="你的API密钥"url =f"https://financialmodelingprep.com/api/v3/search?query={company_name}&apikey={api_key}"response =requests.get(url)data = response.json()if data and len(data)>0:return data[0]['symbol'] # 返回第一个匹配的股票代码return"未找到对应股票代码"工具
2:获取全面的股票数据
我们使用专业的 yfinance 库来获取丰富的数据:
pythonimport yfinance as yfdefget_stock_data(symbol:str)->dict:"""获取股票详细数据"""stock = yf.Ticker(symbol)# 获取基本信息info = stock.info# 获取最近一个月的历史数据history = stock.history(period="1mo")return{"基本信息":{"公司名称": info.get('longName',''),"当前价格": info.get('currentPrice',''),"市值": info.get('marketCap',''),"市盈率": info.get('trailingPE',''),"股息率": info.get('dividendYield','')},"近期表现":{"开盘价": history['Open'].tolist(),"收盘价": history['Close'].tolist(),"成交量": history['Volume'].tolist()}}
三、LangGraph智能体构建全流程
步骤1:创建智能体节点
pythonfrom langgraph.graph import StateGraph# 定义工作流状态classAgentState(TypedDict):question:str # 用户问题context: List[str]# 上下文信息response:str # 最终回复# 创建助理节点assistant_node = StateGraph(AgentState)defassistant(state: AgentState)-> AgentState:"""处理用户消息并决定是否调用工具"""# 系统提示词 - 定义AI的角色和能力system_prompt ="""你是一位专业的金融助手,专注于股票市场的分析和投资策略。你的任务:1. 理解用户关于股票的问题2. 根据需要调用工具获取数据3. 基于数据给出专业、客观的分析回复格式:- 先总结关键数据- 然后给出分析- 最后提供建议(注明风险提示)"""# 调用大模型(这里以DeepSeek为例)response = chat_model.invoke([SystemMessage(system_prompt),HumanMessage(state['question'])])return{"response": response.content}步骤
2:构建工具调用系统
python# 将所有工具打包tools =[get_stock_symbol, get_stock_data]tool_node = ToolNode(tools)# 添加到图中assistant_node.add_node("assistant", assistant)assistant_node.add_node("tools", tool_node)# 设置条件边:决定是否调用工具defroute_tools(state):ifhasattr(state,'tool_calls')and state.tool_calls:return"tools" # 需要调用工具return"__end__" # 直接结束assistant_node.add_conditional_edges("assistant",route_tools)# 从工具节点返回助理节点assistant_node.add_edge("tools","assistant")步骤
3:编译并运行
python# 编译图graph = assistant_node.compile()# 运行智能体result = graph.invoke({"question":"特斯拉和苹果股票相比如何?哪个更适合保守型投资者?"})print(result["response"])
四、实际运行效果
当我们询问“特斯拉和苹果股票相比如何”时,智能体会:
1. 第一步:识别出需要特斯拉和苹果两家公司的数据
2. 第二步:调用 get_stock_symbol 获取股票代码(TSLA和AAPL)
3. 第三步:调用 get_stock_data 获取详细财务数据
4. 第四步:综合分析后给出建议
典型的输出结果:
text📊股票对比分析报告一、关键数据对比:- 特斯拉(TSLA)• 当前价格:$245.30• 市盈率:78.5倍• 市值:$7800亿• 月波动率:12.3%- 苹果(AAPL)• 当前价格:$185.20• 市盈率:28.9倍• 市值:$2.9万亿• 月波动率:8.7%二、分析要点:1. 成长性:特斯拉增长更快但波动大2. 稳定性:苹果现金流强劲,波动较小3. 估值:苹果估值相对合理,特斯拉溢价较高三、投资建议:✅保守型投资者:建议苹果,稳定性好,股息可靠✅成长型投资者:可考虑特斯拉,但需承受较高波动⚠️ 风险提示:股市有风险,投资需谨慎。以上分析仅供参考。
五、如何扩展这个系统?
这个基础框架可以轻松扩展:
1. 增加更多分析维度
python# 添加新闻情绪分析工具defget_news_sentiment(symbol:str):"""获取近期新闻情绪"""# 添加技术指标分析defget_technical_indicators(symbol:str):"""计算RSI、MACD等技术指标"""2.
加入可视化功能
pythonimport matplotlib.pyplot as pltdefplot_stock_comparison(data1, data2):"""绘制股票对比图表"""fig, axes = plt.subplots(2,1, figsize=(10,8))# 绘制价格走势对比axes[0].plot(data1['history']['Close'], label='特斯拉')axes[0].plot(data2['history']['Close'], label='苹果')axes[0].set_title('价格走势对比')# 绘制成交量对比axes[1].bar(range(len(data1['history'])), data1['history']['Volume'], alpha=0.5)axes[1].bar(range(len(data2['history'])), data2['history']['Volume'], alpha=0.5)return fig3.
实现个性化记忆
python# 记录用户偏好user_preferences ={"risk_tolerance":"conservative", # 风险承受能力"investment_style":"growth", # 投资风格"watchlist":["AAPL","TSLA"] # 关注列表}
六、为什么选择LangGraph?
相比其他方案,LangGraph有三大优势:
1. 灵活可控:每一行代码你都知道在做什么
2. 易于扩展:像搭积木一样添加新功能
3. 生产就绪:支持复杂的工作流和状态管理
七、获取完整源码
想要亲自动手试试吗?
📁完整项目源码包含:
·完整的Python实现代码(300行左右)
·API配置指南
·前端界面代码(Streamlit实现)
·扩展建议和优化方案
👉获取方式:
添加微信:huice666 或 danwen668,备注“股票分析源码”
下期预告
下次我们将深入讲解 《带记忆的智能体:让AI越用越聪明》:
·短期记忆 vs 长期记忆
·如何让AI记住你的投资偏好
·实现个性化投资建议系统
💡记住:技术只是工具,真正的价值在于你用它来解决什么问题。这个股票分析智能体不仅是一个项目,更是一个理解AI如何改变传统行业的窗口。
动手试试吧,也许你的第一个AI产品就从这里开始!
免责声明:本文所示案例仅供技术学习交流,不构成任何投资建议。股市有风险,投资需谨慎。
|
|

