前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文带你探索Python中的LangChain三方库

一文带你探索Python中的LangChain三方库

原创
作者头像
Aion
发布2024-01-25 22:51:12
3270
发布2024-01-25 22:51:12
举报

众所周知,在过去的2023一年期间,语言模型发展趋势在大模型、跨模态、语义理解、隐私保护和可解释性得到了很好的体现,而这些优良的发展趋势将进一步推动语言模型在人工智能领域的发展和应用。所以,在学习LangChain也是应运而生。本文将根据个人亲身经历,详细介绍LangChain的概念以及使用案例,主要是使用了他的智能问答。

何为LangChain

LangChain是一个强大的框架,旨在帮助开发人员使用语言模型构建端到端的应用程序。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。总结起来就是LangChain是一个创新框架、具有智能代理的特性、在使用时提供了接口和功能的一个集成框架(终究还是逃离不了框架的命运~)。截止写稿为止,LangChain的最新版本为v0.1.3

LangChain英文官方地址https://www.langchain.com/

LangChain中文官网https://www.langchain.com.cn/

Python官方地址https://python.langchain.com/en/latest/

LangChain源代码地址:https://github.com/langchain-ai/langchain

六大核心理念

LangChain库划分为三个大层:基础层、能力层、应用层。

  • 基础层:models、LLMs、index。
  • 能力层:Chains、Memory、Tools。
  • 应用层:Agents。

在以前LangChain提供了6个主要的大模块,每个模块在官网也提供一些入门示例、指南、参考文档和概念指南,这些模块按照逐渐增加的复杂性排列如下:

在升级后,LangChain进行了架构调整,合并了一些模块,目前是四大核心模块(模型、检索、调用序列、决策和调度)和内存模块、回调模块、实验扩展模块。

常见用例

LangChain 目前支持很多用例,有很多场景已经实现了交付,下面是支持的一些常见用例。

  • 自治代理(autonomous agents) : 长时间运行的代理会采取多步操作以尝试完成目标。 AutoGPT 和 BabyAGI就是典型代表。
  • 代理模拟(agent simulations) : 将代理置于封闭环境中观察它们如何相互作用,如何对事件作出反应,是观察它们长期记忆能力的有趣方法。
  • 个人助理(personal assistants) : 主要的 LangChain 使用用例。个人助理需要采取行动、记住交互并具有您的有关数据的知识。
  • 问答(question answering) : 第二个重大的 LangChain 使用用例。仅利用这些文档中的信息来构建答案,回答特定文档中的问题。
  • 聊天机器人(chatbots) : 由于语言模型擅长生成文本,因此它们非常适合创建聊天机器人。
  • 查询表格数据(tabular) : 如果您想了解如何使用 LLM 查询存储在表格格式中的数据(csv、SQL、数据框等),请阅读此页面。
  • 代码理解(code) : 如果您想了解如何使用 LLM 查询来自 GitHub 的源代码,请阅读此页面。
  • 与 API 交互(apis) : 使LLM 能够与 API 交互非常强大,以便为它们提供更实时的信息并允许它们采取行动。
  • 提取(extraction) : 从文本中提取结构化信息。
  • 摘要(summarization) : 将较长的文档汇总为更短、更简洁的信息块。一种数据增强生成的类型。
  • 评估(evaluation) : 生成模型是极难用传统度量方法评估的。 一种新的评估方式是使用语言模型本身进行评估。 LangChain 提供一些用于辅助评估的提示/链。

实践操作

工作原理

LangChain工作核心点就是把大数据量的数据组合起来,让LLM能够尽可能少地消耗计算力就能轻松地引用。它的工作原理是把一个大的数据源,比如一个50页的PDF文件,分成一块一块的,然后把它们嵌入到一个向量存储(Vector Store)里。此时,我们有了大文档的向量化表示,就可以用它和LLM一起工作,只检索我们需要引用的信息,来创建一个提示-完成(prompt-completion)对。

步骤1

加载所需的文档

代码语言:javascript
复制
from langchain.document_loaders import TextLoader
loader = TextLoader('../question_ask.txt')

步骤2

创建检索所需要的索引

代码语言:javascript
复制
from langchain.indexes import VectorstoreIndexCreator
index = VectorstoreIndexCreator().from_loaders([loader])

步骤3

从数据源进行检索,获取数据源中的数据

代码语言:javascript
复制
query = "What did the president say about Ketanji Brown Jackson"
index.query(query)

步骤4

执行调用操作,获取提出问题的响应,得到解答

代码语言:javascript
复制
from langchain.chains.question_answering import load_qa_chain
chain = load_qa_chain(llm, chain_type="stuff")
chain.run(input_documents=docs, question=query)

总结

针对不同的需求场景,可能需要对应的合适的检索器。用户可以用自然语言的方式,来构建自己的GPT应用,简单的比如一个根据提示词生成的各种系统角色;或者通过自定义Action实现一些复杂的功能:比如调用第三方API、读取本地或网络文档等。在一定程度上可以不用通过LangChain等编码来实现增强检索等,但是LangChain的一些思路和实现还是值得学习和借鉴的,比如LangChain中可以使用本地化部署的LLM和向量存储等,来解决隐私数据泄漏问题。本文主要介绍了LangChain的核心理念以及一个问答的简单实现,希望能给你带来帮助。


我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 何为LangChain
  • 六大核心理念
  • 常见用例
  • 实践操作
    • 工作原理
      • 步骤1
        • 步骤2
          • 步骤3
            • 步骤4
            • 总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档