新闻  |   论坛  |   博客  |   在线研讨会
独家 | 开始使用LangChain:帮助你构建LLM驱动应用的新手教程(1)
数据派THU | 2023-07-16 18:12:15    阅读:690   发布文章

自从ChatGPT发布以来,大型语言模型 (LLMs) 已经获得了很大的普及。尽管你可能没有足够的资金和计算资源在你的地下室从头开始训练一个LLM,但你仍然可以使用预先训练的LLMs来构建一些很酷的东西,例如:


  • 可以根据为您的目的而定制的数据聊天机器人
  • 与外界进行交互的个人助理分析
  • 对您的文档或代码进行汇总


凭借其怪异的api和快速的工程设计,LLMs正在改变我们构建人工智能产品的方式。这就是为什么新的开发工具在 “LLMOpS” 一词下随处可见,其中一个新工具是LangChain(https://github.com/hwchase17/langchain)。


什么是LangChain?


LangChain是一个框架,旨在通过为您提供以下内容来帮助您更轻松地构建LLM支持的应用程序:


  • 各种不同基础模型的通用接口 (请参阅模型);

  • 帮助您管理提示的框架 (请参阅提示);

  • 以及用于LLM无法处理 (例如计算或搜索) 的长期内存 (请参阅内存),外部数据 (请参阅索引),其他LLM (请参阅链) 和其他代理的中央接口。代理)。这是哈里森·蔡斯创建的一个开源项目 (GitHub存储库)。


由于LangChain功能众多,这就是为什么我们将在本文中介绍LangChain目前的六个关键模块,以使您更好地了解其功能。


安装环境
在本教程中,您将需要安装langchain Python软件包,并准备好使用所有相关的API密钥。安装LangChain在安装langchain软件包之前,请确保您的Python版本 ≥ 3.8.1且<4.0。
要安装langchain Python包,您可以pip安装它。

pip install langchain

在本教程中,我们使用的是0.0.147版。GitHub库提交非常活跃; 因此,请确保您拥有当前版本。全部设置完毕后,导入langchain Python包。
import langchain

API keys
使用LLMs构建应用程序需要您要使用的某些服务的API密钥,并且某些API是付费的。
LLM供应商 (必填):您首先需要使用LLM提供程序的API密钥。我们目前正在经历 “AI的Linux时刻”,开发人员必须基于主要在性能和成本之间的权衡,在专有或开源基础模型之间进行选择。

图片


LLM提供者:专有和开源基础模型 (作者的图片,灵感来自Fiddler.ai,首次发布在W & B的博客上)
专有模型是拥有大型专家团队和大型AI预算的公司拥有的封闭式基础模型。它们通常比开源模型更大,因此具有更好的性能,但它们也具有昂贵的api。专有模型提供商的示例是OpenAI,co:here,AI21 Labs或Anthropic。大多数可用的LangChain教程使用OpenAI,但请注意,OpenAI API (对于实验来说并不昂贵,但它) 不是免费的。要获取OpenAI API密钥,您需要一个OpenAI帐户,然后在API密钥下 “创建新的密钥”。

import osos.environ["OPENAI_API_KEY"] = ... # insert your API_TOKEN here


开源模型通常是较小的模型,其功能比专有模型低,但比专有模型更具成本效益。开源模型的示例包括:

  • BLOOM by BigScience
  • LLaMA by Meta AI
  • Flan-T5 by Google
  • GPT-J by Eleuther AI


作为社区中心,许多开源模型都是在Hugging Face组织和托管的。要获得Hugging Face API密钥,您需要一个Hugging Face帐户,并在访问令牌下创建一个 “新令牌”。

import osos.environ["HUGGINGFACEHUB_API_TOKEN"] = ... # insert your API_TOKEN here

对于开源LLM,您可以免费使用Hugging Face,但是您将被限制在性能较低的较小LLM中。


个人笔记:您可以在此处尝试开源基础模型。我尝试使本教程仅与托管在常规帐户(google/flan-t5-xl和sentence transformer/all-MiniLM-L6-v2) 上的Hugging Face上的开源模型一起使用。它适用于大多数示例,但是让一些示例起作用也是一种痛苦。最后,我为OpenAI设置了一个付费帐户,因为LangChain的大多数示例似乎都针对OpenAI的API进行了优化。总的来说,为教程运行一些实验花了我大约1美元。


矢量数据库 (可选):如果要使用特定的矢量数据库,例如Pinecome,Weaviate或Milvus,则需要向他们注册以获取API密钥并确认其定价。在本教程中,我们使用的是Faiss,它不需要注册。
工具 (可选):根据您希望LLM与之交互的工具 (例如OpenWeatherMap或SerpAPI),您可能需要向它们注册以获取API密钥并检查其定价。在本教程中,我们仅使用不需要API密钥的工具。
我们可以用LangChain做什么?
该软件包为许多基础模型提供了通用接口,可以进行提示管理,并通过代理充当其他组件 (如提示模板,其他LLM,外部数据和其他工具) 的中央接口。在撰写本文时,LangChain (版本0.0.147) 涵盖了六个模块:

  • 模型: 从不同的LLMs和嵌入模型中进行选择
  • 提示: 管理LLM
  • 输入链: 将LLMs与其他组件相结合
  • 索引: 访问外部数据
  • 存储器: 记住以前的对话
  • 代理: 访问其他工具


以下各节中的代码示例是从LangChain文档中复制和修改的。


模型: 从不同的LLM中选择和嵌入模型
目前,许多不同的LLM正在出现。LangChain为各种模型提供了集成,并为所有模型提供了简化的界面。LangChain区分了三种类型的模型,它们的输入和输出不同:

  • LLMs将字符串作为输入 (提示),并输出字符串 (完成)。

# Proprietary LLM from e.g. OpenAI# pip install openaifrom langchain.llms import OpenAIllm = OpenAI(model_name="text-davinci-003")
# Alternatively, open-source LLM hosted on Hugging Face# pip install huggingface_hubfrom langchain import HuggingFaceHubllm = HuggingFaceHub(repo_id = "google/flan-t5-xl")
# The LLM takes a prompt as an input and outputs a completionprompt = "Alice has a parrot. What animal is Alice's pet?"completion = llm(prompt)


图片

LLM 模型


  • 聊天模型类似于LLM。他们将聊天消息列表作为输入,并返回聊天消息。
  • 文本嵌入模型采用文本输入并返回浮点数 (嵌入) 列表,浮点数是输入文本的数字表示形式。嵌入有助于从文本中提取信息。随后可以使用该信息,例如,用于计算文本之间的相似性 (例如,电影摘要)。


图片

文本嵌入模型


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客