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
3from langchain_core.output_parsers import StrOutputParser
4
5prompt_template = ChatPromptTemplate.from_messages([
6 ("system", "你是一个有用的助手"),
7 ("user", "请给我讲一个关于{topic}的笑话")
8])
9llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
10output_parser = StrOutputParser()
11chain = prompt_template | llm | output_parser
12
13result = chain.invoke({"topic": "学生"})
14
15print(result)
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个具有{culture}特色的品牌名字。
8示例:服饰品牌{clothing_brand}, 艺术品牌{art_brand}。
9注意返回内容只有品牌的名字且用,分隔""")
10])
11
12llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
13output_parser = CommaSeparatedListOutputParser()
14
15chain = prompt_template | llm | output_parser
16
17names_list = chain.invoke({"culture": "意大利", "clothing_brand": "风尚罗马", "art_brand": "文艺之光"})
18
19print(names_list)
1['意大利风情', '美食之旅', '经典之韵']