将llm嵌入到您的应用程序中,无需代码.
LangChain是一个Python库,它可以更容易地将大语言模型的功能与应用程序的逻辑结合起来。LangChain允许用户创建和组合模块化组件,如prompt序列化器、代理和链,以实现各种自然语言任务。然而,如果没有用户友好的界面,设计和测试LangChain流可能是具有挑战性的。
这就是LangFlow的用武之地。LangFlow是一个针对LangChain的GUI,它采用了反应流设计,提供了一种轻松的方式,通过拖放组件和聊天框来实验和原型化流程。LangFlow允许您探索不同的大语言模型、prompt参数、链配置和代理行为,并跟踪代理的思维过程。您还可以将流导出为JSON文件,以便与LangChain一起使用。
在本文中,我们将向您展示如何使用LangFlow用LangChain创建您自己的会话代理。
LangFlow安装
正如GitHub库中所描述的,你可以通过pip install langflow
安装它,前提条件如下:
- 首先,从这个链接 https://visualstudio.microsoft.com/visual-cpp-build-tools/ 安装visual c++ build工具
- 然后使用命令
py -m pip install cython
安装cython
然后,运行命令langflow
:它将打开LangChain GUI的本地部署界面。
在GUI中,在左边的栏中,你可以看到所有你可以使用的工具:
- Agent→他们将大语言模型的决策与工具结合起来,使他们能够实施和执行行动;
- Chains→允许组合人工智能应用程序的不同组件,如prompts,大语言模型和存储器;
- Loaders→允许与外部源集成以上传信息(如pdf);
- Embeddings→将文本嵌入到向量潜在空间的模型;
- LLMs→用于理解和生成文本的模型,包括今天的OpenAI模型和hug Face Hub;
- Memories→LangChain组件,能够维护会话的记忆;
- Prompts→用于定义prompts框架的模板;
- Text Splitters→将文本分割成更小的块并避免tokens限制问题的实用程序;
- Toolkits→为特定用例与外部系统集成,例如,CSV文件或Python Agent;
- Tools→代理可以用来与外部工具交互的功能,如必应搜索或本地文件系统;
- Utilities→对SQLDB或Bing API等系统有用的包装器;
- Vector Stores→数据库,文本Embeddings可以保存,然后与用户的输入进行匹配;
- Wrappers→请求库的轻量级包装器
然后,每个框都带有入站和出站链接,并用颜色标记,以便更容易理解可以链接到哪些其他块。您还可以从每个块的右上角看到链接是成功还是失败(包括失败的原因)。
最后,无论何时完成流程,都可以直接使用基于聊天的GUI进行测试:
很好,现在我们已经熟悉了这个工具,让我们从头开始构建第一个代理。
构建一个简单的代理
在本教程中,我将构建一个由OpenAI GPT3驱动的简单代理,它也能够浏览互联网。这是整个流程:
让我们一块一块地检查它:
- Prompt:ZeroShotPrompt带有默认指令;
- LLM:OpenAI text-davinci-003 model.。您可以在https://platform.openai.com/account/api-keys上找到OpenAI密钥。对于OpenAI的接口对接,可以使用https://api.openai.com/v1或https://api.openai.com/v1/chat,这取决于您是否使用完整的模型(如我们正在使用的)或仅仅聊天模型(如gpt-3.5 turbo)。
- LLMChain:我们prompt和LLM的协调者;
- Bing Search API:我们的代理浏览网页所需的工具。它由两个块组成:
BingSearchAPIWrapper
,你需要在其中插入你的Bing API和URL(你可以在Azure中免费创建一个Bing资源),BingSearchRun
包装前面的信息。
- Bing Search API:我们的代理浏览网页所需的工具。它由两个块组成:
- ZeroShotAgent:代理执行器,封装LLM和我们提供的Bing工具。
现在让我们测试一下,询问2021年之后发生的事情:
这样做的好处是,如果您单击消息图标,您还可以展示LLM背后的思维过程,以及使用外部工具(在我们的示例中是Bing)和观察的一组操作。
正如您所看到的,代理执行了一个web搜索来回答这个问题,因为它没有这个参数内存。
结论
最近,Langflow已经展示了强大的功能,它也有与llm进一步集成的路线图(包括Azure OpenAI!)。另外,你可以通过SDK使用整个流程,并将其嵌入到进一步的应用程序中,如下所示:
1 2 3 4 5 |
from langflow import load_flow_from_json flow = load_flow_from_json("your_flow_name.json") # Now you can use it like any chain flow("What is the plot of Avatar 2?") |
OK,结束,有兴趣的朋友可以试起来。