Langchain 就像是一个金融顾问团队,可以帮你分析市场数据、提供投资建议和自动化决策流程。
# 创建一个简单的金融分析链
from langchain.chains import SimpleSequentialChain
from langchain.llms import OpenAI
# 初始化语言模型
llm = OpenAI(temperature=0.7)
# 股票分析链
分析链 = LLMChain(
llm=llm,
prompt=PromptTemplate(
input_variables=["股票代码"],
template="分析 {股票代码} 的基本面情况:"
)
)
# 投资建议链
建议链 = LLMChain(
llm=llm,
prompt=PromptTemplate(
input_variables=["分析结果"],
template="根据以下分析给出投资建议: {分析结果}"
)
)
# 组合链
完整分析链 = SimpleSequentialChain(
chains=[分析链, 建议链],
verbose=True
)
结果 = 完整分析链.run("AAPL")
# 存储金融新闻用于后续检索
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
# 创建嵌入模型
embeddings = OpenAIEmbeddings()
# 金融新闻列表
金融新闻 = [
"美联储宣布加息25个基点",
"科技股普遍下跌",
"通胀率连续三个月下降"
]
# 创建向量存储
向量数据库 = Chroma.from_texts(
金融新闻,
embeddings,
collection_name="金融新闻"
)
# 检索相关内容
相关新闻 = 向量数据库.similarity_search("利率变化")

# 设计一个分析市场趋势的工具
from langchain.agents import Tool, initialize_agent
from langchain.agents import AgentType
from langchain.utilities import GoogleSerperAPIWrapper
# 搜索工具
搜索 = GoogleSerperAPIWrapper()
搜索工具 = Tool(
name="搜索引擎",
func=搜索.run,
description="用于获取最新市场信息"
)
# 数据分析工具
def 分析市场趋势(查询内容):
# 这里可以连接专业的金融API
return f"对 {查询内容} 的市场趋势分析结果"
分析工具 = Tool(
name="趋势分析",
func=分析市场趋势,
description="分析特定市场或股票的走势"
)
# 初始化代理
市场分析代理 = initialize_agent(
tools=[搜索工具, 分析工具],
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# 执行分析
分析结果 = 市场分析代理.run("分析美国科技股近期趋势")
# 创建评估投资风险的链
from langchain.prompts import ChatPromptTemplate
from langchain.output_parsers import ResponseSchema, StructuredOutputParser
# 定义输出格式
风险评分_schema = ResponseSchema(
name="风险评分",
description="从1-10评估风险水平,10最高"
)
风险因素_schema = ResponseSchema(
name="风险因素",
description="列出主要风险因素"
)
建议策略_schema = ResponseSchema(
name="建议策略",
description="如何应对这些风险"
)
# 创建输出解析器
解析器 = StructuredOutputParser([风险评分_schema, 风险因素_schema, 建议策略_schema])
格式指南 = 解析器.get_format_instructions()
# 创建提示模板
风险评估模板 = ChatPromptTemplate.from_template(
"""分析以下投资的风险情况:
投资目标: {投资对象}
市场情况: {市场描述}
{格式指南}
"""
)
# 构建完整链
风险评估链 = LLMChain(
llm=llm,
prompt=风险评估模板,
output_parser=解析器
)
# 执行评估
评估结果 = 风险评估链.run(
投资对象="特斯拉股票",
市场描述="当前市场波动较大,科技股整体估值较高",
格式指南=格式指南
)
# 利用记忆组件记录历史投资决策
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
# 创建记忆组件
投资记忆 = ConversationBufferMemory()
# 创建考虑历史决策的链
投资组合链 = ConversationChain(
llm=llm,
memory=投资记忆,
prompt=PromptTemplate(
input_variables=["history", "input"],
template="""作为投资组合管理专家,根据历史决策和当前市场情况给出建议。
历史决策:
{history}
当前情况:
{input}
投资建议:"""
)
)
# 记录第一次决策
第一次建议 = 投资组合链.predict(input="我的组合中有60%科技股,市场预期美联储将加息")
# 后续决策会考虑历史
第二次建议 = 投资组合链.predict(input="最新数据显示通胀降低,但失业率上升")

# 设计一个完整的投资研究助手
from langchain.agents import AgentExecutor, Tool
from langchain.agents import create_pandas_dataframe_agent
import pandas as pd
import yfinance as yf
# 获取股票数据
def 获取股票数据(股票代码):
try:
股票 = yf.Ticker(股票代码)
历史数据 = 股票.history(period="1y")
return pd.DataFrame(历史数据)
except Exception as e:
return f"获取数据失败: {e}"
# 创建股票数据工具
股票数据工具 = Tool(
name="股票历史数据",
func=获取股票数据,
description="获取股票的历史价格数据,输入股票代码如AAPL"
)
# 创建数据分析代理
def 创建分析代理(数据框):
return create_pandas_dataframe_agent(
llm=llm,
df=数据框,
verbose=True
)
# 投资研究流程
def 投资研究(股票代码):
# 步骤1: 获取数据
股票数据 = 获取股票数据(股票代码)
if isinstance(股票数据, str):
return 股票数据 # 返回错误信息
# 步骤2: 创建分析代理
分析代理 = 创建分析代理(股票数据)
# 步骤3: 执行分析
技术分析 = 分析代理.run(f"对{股票代码}进行技术分析,计算主要指标")
趋势分析 = 分析代理.run(f"分析{股票代码}的价格趋势和波动性")
# 步骤4: 生成投资建议
投资建议链 = LLMChain(
llm=llm,
prompt=PromptTemplate(
input_variables=["股票代码", "技术分析", "趋势分析"],
template="""
基于以下分析为{股票代码}提供投资建议:
技术分析: {技术分析}
趋势分析: {趋势分析}
投资建议:
"""
)
)
最终建议 = 投资建议链.run(
股票代码=股票代码,
技术分析=技术分析,
趋势分析=趋势分析
)
return {
"股票代码": 股票代码,
"技术分析": 技术分析,
"趋势分析": 趋势分析,
"投资建议": 最终建议
}
# 创建金融新闻分析器
from langchain.document_loaders import WebBaseLoader
from langchain.indexes import VectorstoreIndexCreator
# 定义新闻源
金融新闻源 = [
"https://finance.example.com/markets",
"https://finance.example.com/stocks",
"https://finance.example.com/economy"
]
# 函数:加载和分析新闻
def 分析金融新闻(股票代码="", 主题=""):
# 加载网页内容
文档加载器 = WebBaseLoader(金融新闻源)
# 创建向量索引
索引 = VectorstoreIndexCreator().from_loaders([文档加载器])
# 构建查询
if 股票代码 and 主题:
查询 = f"{股票代码} {主题}"
elif 股票代码:
查询 = f"{股票代码} 最新消息"
elif 主题:
查询 = f"{主题} 市场影响"
else:
查询 = "今日重要金融新闻"
# 查询相关新闻
新闻结果 = 索引.query(查询)
# 提取关键信息
提取链 = LLMChain(
llm=llm,
prompt=PromptTemplate(
input_variables=["新闻内容"],
template="""
从以下金融新闻中提取关键信息:
{新闻内容}
请提供:
1. 主要事件摘要
2. 可能的市场影响
3. 相关股票或行业
"""
)
)
分析结果 = 提取链.run(新闻内容=新闻结果)
return {
"查询": 查询,
"原始新闻": 新闻结果,
"分析结果": 分析结果
}

Langchain 库是构建智能金融决策系统的强大工具,可以帮你:
哎呀,终于搞定这个投资助手了!加班做完这套系统后,我相信你的投资分析效率会提高不少。不过记住,再智能的系统也只是工具,最终决策还是你自己拍板。开始用起来吧!

