LangChain

LangChain #

LangChain简介 #

LangChain是一个用于开发由大语言模型 (LLMs) 提供支持的应用程序的框架。

LangChain 简化了 LLM 应用程序生命周期的每个阶段:

  • 开发(Development):使用LangChain的开源构建模块、组件和第三方集成(Integrations)来构建您的应用程序。使用LangGraph构建具有一流流处理和人机交互支持的有状态代理(stateful agents)。
  • 生产化(Productionization):使用LangSmith检查、监控和评估您的链(chains),以便您能够持续优化并自信地进行部署。
  • 部署(Deployment):使用LangGraph Cloud将您的LangGraph应用程序转换为生产就绪的 API 和助手。

langchain-stack.png

具体而言,该框架由以下开源库组成:

  • 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['和风茶舍', '樱花美妆', '侘寂家居']

参考链接 #

© 2024 青蛙小白
comments powered by Disqus