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 #
1from langchain_openai import ChatOpenAI
2from langchain_core.prompts import ChatPromptTemplate
3prompt_template = ChatPromptTemplate.from_messages([
4 ("system", "你是一个有用的助手"),
5 ("user", "请给我讲一个关于{topic}的笑话")
6])
7prompt = prompt_template.invoke({"topic": "学生"})
8print(prompt)
9llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
10response = llm.invoke(prompt)
11print(response.content)
1messages=[SystemMessage(content='你是一个有用的助手', additional_kwargs={}, response_metadata={}), HumanMessage(content='请给我讲一个关于学生的笑话', additional_kwargs={}, response_metadata={})]
2当然可以!这是一个关于学生的笑话:
3
4有一天,老师问学生:“如果你有三只苹果,给了你朋友两只,你还有多少只苹果?”
5
6学生思考了一下,回答:“老师,我还有一只苹果,但我失去了一个朋友!”
7
8希望这个笑话能让你笑一笑!
LangChain表达语言(LCEL) #
使用LangChain的链式调用语法 (LCEL) 可以更加简洁地组织代码:
1from langchain_openai import ChatOpenAI
2from langchain_core.prompts import ChatPromptTemplate
3
4
5prompt_template = ChatPromptTemplate.from_messages([
6 ("system", "你是一个有用的助手"),
7 ("user", "请给我讲一个关于{topic}的笑话")
8])
9llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
10chain = prompt_template | llm
11
12response = chain.invoke({"topic": "学生"})
13
14print(response.content)
1from langchain_openai import ChatOpenAI
2from langchain_core.prompts import ChatPromptTemplate
3from langchain_core.output_parsers import CommaSeparatedListOutputParser
4
5prompt_template = ChatPromptTemplate.from_messages([
6 ("system", "你是一个品牌命名专家"),
7 ("user", "请模仿示例起3个具有{country}特色的品牌名字。示例:食品品牌{food_brand}, 电子产品品牌{tech_brand}。注意返回内容只有名字且名字用\",\"分隔")
8])
9llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
10output_parser = CommaSeparatedListOutputParser()
11
12chain = prompt_template | llm | output_parser
13
14names_list = chain.invoke({"country": "日本", "food_brand": "寿司王", "tech_brand": "智控"})
15
16print(names_list)
1['和风茶舍', '樱花美妆', '侘寂家居']