LangChain
LangChain简介
LangChain是一个用于开发由大语言模型 (LLMs) 提供支持的应用程序的框架。
LangChain 简化了 LLM 应用程序生命周期的每个阶段:
- 开发(Development):使用LangChain的开源构建模块、组件和第三方集成(Integrations)来构建您的应用程序。使用LangGraph构建具有一流流处理和人机交互支持的有状态代理(stateful agents)。
- 生产化(Productionization):使用LangSmith检查、监控和评估您的链(chains),以便您能够持续优化并自信地进行部署。
- 部署(Deployment):使用LangGraph Cloud将您的LangGraph应用程序转换为生产就绪的 API 和助手。

具体而言,该框架由以下开源库组成:
- langchain-core:基础抽象和LangChain表达语言(LCEL)。
- langchain-community:第三方集成。
- 合作伙伴package(例如 langchain-openai、langchain-anthropic 等):某些集成已进一步拆分为仅依赖于 langchain-core 的轻量级独立包。
- langchain:组成应用程序认知架构的链(chains)、代理(agents)和检索策略(retrieval strategies)。
- LangGraph:通过将步骤建模为图中的边和节点,构建稳健且有状态的多参与者LLM应用程序。与LangChain无缝集成,但也可以独立使用。
- LangServe:将LangChain链部署为REST API。
- LangSmith:一个开发者平台,允许您调试、测试、评估和监控LLM应用程序。
LangChain提供的功能
- 与大模型进行交互
- 管理提示语(Prompt)
- 支持不同模型之间的连接
- 提供基于RAG的生成
- 使代理(Agent)可以执行任务并观察结果
- 提供基于记忆(Memory)的状态管理
关键词:LLMs, Prompt, Chains, RAG, Agent, Memory
Hello LangChain
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
prompt_template = ChatPromptTemplate.from_messages([
("system", "你是一个有用的助手"),
("user", "请给我讲一个关于{topic}的笑话")
])
prompt = prompt_template.invoke({"topic": "学生"})
print(prompt)
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
response = llm.invoke(prompt)
print(response.content)messages=[SystemMessage(content='你是一个有用的助手', additional_kwargs={}, response_metadata={}), HumanMessage(content='请给我讲一个关于学生的笑话', additional_kwargs={}, response_metadata={})]
当然可以!这是一个关于学生的笑话:
有一天,老师问学生:“如果你有三只苹果,给了你朋友两只,你还有多少只苹果?”
学生思考了一下,回答:“老师,我还有一只苹果,但我失去了一个朋友!”
希望这个笑话能让你笑一笑!LangChain表达语言(LCEL)
使用LangChain的链式调用语法 (LCEL) 可以更加简洁地组织代码:
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
prompt_template = ChatPromptTemplate.from_messages([
("system", "你是一个有用的助手"),
("user", "请给我讲一个关于{topic}的笑话")
])
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
output_parser = StrOutputParser()
chain = prompt_template | llm | output_parser
result = chain.invoke({"topic": "学生"})
print(result)from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import CommaSeparatedListOutputParser
prompt_template = ChatPromptTemplate.from_messages([
("system", "你是一位品牌命名专家"),
("user", """请模仿示例起3个具有{culture}特色的品牌名字。
示例:服饰品牌{clothing_brand}, 艺术品牌{art_brand}。
注意返回内容只有品牌的名字且用,分隔""")
])
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
output_parser = CommaSeparatedListOutputParser()
chain = prompt_template | llm | output_parser
names_list = chain.invoke({"culture": "意大利", "clothing_brand": "风尚罗马", "art_brand": "文艺之光"})
print(names_list)['意大利风情', '美食之旅', '经典之韵']