【AI大模型应用开发】【LangChain系列】0. LangChain框架介绍,实现LangChain的Hello World

大家好,我是【同学小张】。持续学习,关注我,跟我一起学AI大模型技能。

AI时代,相信大家或多或少都听过 LangChain 的大名。通俗的说,LangChain是一个面向大模型的开发框架(SDK)。

目前 LangChain 仍在快速迭代中,所以在使用中要时刻关注你所使用的版本和接口变更。

0. 认识LangChain框架

从上图可以看到,LangChain 目前有四层框架:

  • 最下层深色部分:LangChain的Python和JavaScript库。包含无数组件的接口和集成,以及将这些组件组合到一起的链(chain)和代理(agent)封装,还有链和代理的具体实现。
  • Templates:一组易于部署的参考体系结构,用于各种各样的任务。
  • LangServe:用于将LangChain链部署为REST API的库。
  • LangSmith:一个开发人员平台,允许您调试、测试、评估和监控基于任何LLM框架构建的链,并与LangChain无缝集成。

在最下层深色部分- LangChain的Python和JavaScript库中,可以看到它封装了一系列模块。

  • 模型 I/O 封装,包括:

    • LLMs:大语言模型
    • ChatModels:一般基于 LLMs,但按对话结构重新封装
    • Prompt:提示词模板
    • OutputParser:解析输出
  • Retrieval 数据连接与向量检索封装,包括:

    • Retriever: 向量的检索
    • Document Loader:各种格式文件的加载器
    • Embedding Model:文本向量化表示,用于检索等操作
    • Verctor Store: 向量的存储
    • Text Splitting:对文档的常用操作
  • Agents 根据用户输入,自动规划执行步骤,自动选择每步需要的工具,最终完成用户指定的功能,包括:

    • Tools:调用外部功能的函数,例如:调 google 搜索、文件 I/O、Linux Shell 等等
    • Toolkits:操作某软件的一组工具集,例如:操作 DB、操作 Gmail 等等
  • Chain 实现一个功能或者一系列顺序功能组合

  • Memory 记忆封装,也就是上下文的管理能力封装

  • Callbacks 一些过程回调函数

1. 动手实现你的第一个LangChain程序

1.1 LangChain 环境

(1)安装 LangChain

  • pip 安装
python 复制代码
pip install langchain
  • conda 安装
python 复制代码
conda install langchain -c conda-forge

(2)安装 LangChain X OpenAI

LangChain封装了对于大模型的调用接口,也就是说,我们可以选择使用的模型,无论是在线模型还是本地部署的模型。本文我们还是使用OpenAI的API来调用大模型。

python 复制代码
pip install -U langchain-openai

1.2 通过LangChain的接口来调用OpenAI对话

python 复制代码
import os
# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

from langchain_openai import ChatOpenAI ## langchain封装的openai对话接口
 
llm = ChatOpenAI() # 默认是gpt-3.5-turbo
response = llm.invoke("你是谁") ## 通过 invoke 传入对话
print(response.content)

## 运行结果输出:我是一个AI助手,没有具体的身份。我是由OpenAI开发的,可以帮助回答问题和提供信息。

1.3 多轮对话的封装

python 复制代码
import os
# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

from langchain_openai import ChatOpenAI
 
llm = ChatOpenAI() # 默认是gpt-3.5-turbo

from langchain.schema import (
    AIMessage, #等价于OpenAI接口中的assistant role
    HumanMessage, #等价于OpenAI接口中的user role
    SystemMessage #等价于OpenAI接口中的system role
)

messages = [
    SystemMessage(content="你是[同学小张]的个人助理。你叫[小明]"), 
    HumanMessage(content="我叫[同学小张]"), 
    AIMessage(content="好的老板,你有什么吩咐?"),
    HumanMessage(content="我是谁") 
]
response = llm.invoke(messages)
print(response.content)

## 运行输出:您是同学小张。

通过以上代码可以看到:

  • LangChain内封装了AIMessage、HumanMessage、SystemMessage等消息类型,区分消息来源。
  • invoke对话接口接收一系列消息,可以实现多轮对话(上述代码中的多轮对话在哪:第一轮是"我叫[同学小张]",第二轮我问它"我是谁"时,第一轮我的名字的信息带进去了,所以它才能回复:"您是同学小张")。

这样模型封装的意义在哪?

  • 可以实现不同模型间的无缝切换,llm = ChatOpenAI()是GPT模型,它可以换成 llm = ErnieBotChat(),其它代码都不用改,就可以切换到文心大模型。

好了,本文先写到这,算是对 LangChain 系列开了个头。后面咱们深入各个模块去学习和实战。

如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~


  • 大家好,我是同学小张
  • 欢迎 点赞 + 关注 👏,促使我持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏
  • 踩坑不易,感谢关注和围观

本站文章一览:

相关推荐
MavenTalk7 小时前
阿里Qwen系列开源模型介绍
开源·大模型·llm·qwen2
草梅友仁9 小时前
2024 年第 48 周草梅周报:AI 编程工具 Cursor 试用和 AI 对程序员的影响
chatgpt·aigc·openai
剑盾云安全专家11 小时前
探索智能时代:从AI生成PPT到自动化未来
人工智能·aigc
魔珐科技14 小时前
当产业经济插上“数字羽翼”,魔珐有言AIGC“3D视频创作大赛”成功举办
3d·aigc·音视频
用户605723748730817 小时前
卡内基梅隆大学总结的15种RAG框架
aigc
AI小白龙*20 小时前
Windows环境下搭建Qwen开发环境
人工智能·windows·自然语言处理·llm·llama·ai大模型·ollama
我爱学Python!1 天前
大语言模型与图结构的融合: 推荐系统中的新兴范式
人工智能·语言模型·自然语言处理·langchain·llm·大语言模型·推荐系统
LZXCyrus1 天前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
夏沫的梦1 天前
生成式AI对产业的影响与冲击
人工智能·aigc
敲上瘾2 天前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc