AI 系列:LangChain基础

LangChain介绍

LangChain是目前流行的大语言模型相关应用的开发框架。其他的框架还包括Microsoft的Semantic Kernel,Amazon的Bedrock,开源的Hugging Face Transformers和LlamaIndex等等。

至于为什么要使用框架呢。这里举个我自己的简单的例子。之前我在做用Python streamlit实现简单的AI 大模型对话对比器的时候,这个对话器的设计是可以同时连接多个大语言模型。在开发过程中,需要根据不同厂家的大模型API,编写相应的代码。大模型种类多的话,那查询不同大模型接口的用法,也是个相当耗时的过程。我当时只编写了OpenAI的接口调用,导致我只能使用OpenAI的GPT3.5和GPT 4作为对话多个模型能力的展示。

如果使用LangChain的话,情况就会有所不同。LangChain封装了与大模型的接口,编程的时候不需要直接和大模型打交道,而通过LangChain去做调用。使用再多的模型种类都不再是个问题。

你的程序
LangChain
大语言模型

当然LangChain作为一个开发框架,它的作用不仅仅是封装了大模型。

根据LangChain官网,LangChain 是一个用于开发由语言模型驱动的应用程序的框架。它使得应用程序能够:

  • 具有上下文意识:将大语言模型连接到上下文的来源(提示词指令、少数示例、内容以支撑其响应等)。
  • 进行推理:依赖大语言模型进行推理(基于提供的上下文如何回答问题,采取什么行动等)。

这个框架由以下几个部分组成。

  • LangChain 库:目前支持Python 和 JavaScript。包含用于多种组件的接口和集成,一个基础运行时用于将这些组件组合成chain和agent,以及chain和agent的现成实现。
  • LangChain 模板:一系列易于部署的参考架构,用于多种任务。
  • LangServe:一个用于将 LangChain chain作为 REST API 部署的库。
  • LangSmith:一个开发者平台,让你可以调试、测试、评估和监控基于任何 LLM 框架构建的链,并与 LangChain 无缝集成。

这些产品共同简化了整个应用程序生命周期:

  • 开发:在 LangChain/LangChain.js 中编写你的应用程序。使用模板作为参考快速开始。
  • 产品化:使用 LangSmith 检查、测试和监控你的chain,这样你就可以不断改进并自信地部署。
  • 部署:使用 LangServe 将任何chain转换为 API接口。

简单代码实例

浏览LangChain的QuickStart页面,是了解LangChain用法的一个不错的方式。

我参照官网实例,做了一个简单的程序用于连接GPT。

# 加载 .env 到环境变量,比如OPENAI_API_KEY,OPENAI_BASE_URL
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

# 初始化大模型
from langchain_openai import ChatOpenAI
# 默认模型: gpt-3.5-turbo
llm=ChatOpenAI()

# 调用大模型接口
response=llm.invoke("what makes people happy?")
print(response.content)

是不是很简单。

现在我打算不直接调用invoke方法,试一下LangChain提供的提示词模版,输出解析,和chain的功能。代码如下:

# 模型输入/提示词模板封装
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
   ("system", "You are ready to answer question with good knowledge"),
    ("human", "{input}")
])

# 模型输出/构建输出解析器,将输出从message类型转换为string
from langchain_core.output_parsers import StrOutputParser
output_parser = StrOutputParser()

# 构建chain
chain = prompt | llm | output_parser
userMessage = "what makes people happy?"
response = chain.invoke({"input": userMessage})
print(response)

结束语

LangChain在快速迭代中,它有更多的功能等着我们去探索,如果有兴趣,留下你的评论,将继续更新相关的内容。

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liyane

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值