LangChain 22 LangServe用于一键部署LangChain应用程序

LangChain系列文章

  1. LangChain 实现给动物取名字,
  2. LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  3. LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄
  4. LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
  5. LangChain 5易速鲜花内部问答系统
  6. LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型
  7. LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain
  8. LangChain 8 模型Model I/O:输入提示、调用模型、解析输出
  9. LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
  10. LangChain 10思维链Chain of Thought一步一步的思考 think step by step
  11. LangChain 11实现思维树Implementing the Tree of Thoughts in LangChain’s Chain
  12. LangChain 12调用模型HuggingFace中的Llama2和Google Flan t5
  13. LangChain 13输出解析Output Parsers 自动修复解析器
  14. LangChain 14 SequencialChain链接不同的组件
  15. LangChain 15根据问题自动路由Router Chain确定用户的意图
  16. LangChain 16 通过Memory记住历史对话的内容
  17. LangChain 17 LangSmith调试、测试、评估和监视基于任何LLM框架构建的链和智能代理
  18. LangChain 18 LangSmith监控评估Agent并创建对应的数据库
  19. LangChain 19 Agents Reason+Action自定义agent处理OpenAI的计算缺陷
  20. LangChain 20 Agents调用google搜索API搜索市场价格 Reason Action:在语言模型中协同推理和行动
  21. LangChain 21 Agents自问自答与搜索 Self-ask with search
    在这里插入图片描述

1. 概述

LangServe帮助开发人员将LangChain可运行程序和Chains部署为REST API。

该库集成了FastAPI,并使用pydantic进行数据验证。

此外,它提供了一个客户端,可用于调用部署在服务器上的可运行程序。 LangChainJS中提供了一个JavaScript客户端。

2. Features特点

  • 从您的LangChain对象自动推断输入和输出模式,并在每次API调用中执行,并提供丰富的错误消息
  • API文档页面包含JSONSchema和Swagger(插入示例链接)
  • 高效的/invoke//batch//stream/端点,支持单个服务器上的许多并发请求
  • /stream_log/端点,用于流式传输链/代理的所有(或部分)中间步骤
  • /playground/上的游乐场页面,具有流式输出和中间步骤
  • 内置(可选)跟踪到LangSmith,只需添加您的API密钥(请参见说明)
  • 所有都是使用经过实战考验的开源Python库构建,如FastAPI,Pydantic,uvloop和asyncio。
  • 使用客户端SDK调用LangServe服务器,就像它是在本地运行的Runnable一样(或直接调用HTTP API)
  • LangServe Hub

3. 限制

  • 目前还不支持在服务器上发生的事件的客户端回调
  • 当使用Pydantic V2时,将不会生成OpenAPI文档。Fast API不支持混合使用pydantic v1和v2命名空间。有关更多详细信息,请参见下文。

4. 托管版的LangServ

我们将发布托管版的LangServe,用于一键部署LangChain应用程序。在这里注册以加入等待名单。

5. 安全漏洞

版本0.0.13 - 0.0.15存在安全漏洞——游乐场端点允许访问服务器上的任意文件。在版本0.0.16中已解决。

6. 安装

对于客户端和服务器:

pip install "langserve[all]"

或者使用pip install "langserve[client]"安装客户端代码,使用pip install "langserve[server]"安装服务器端代码。

7. LangChain CLI 🛠️

使用LangChain CLI快速引导LangServe项目。

要使用langchain CLI,请确保已安装最新版本的langchain-cli。您可以使用pip install -U langchain-cli进行安装。

langchain app new ../path/to/directory

8. LangChain模板

LangChain模板是构建生产就绪的LLM应用程序的最简单和最快速的方法。这些模板作为各种流行的LLM用例的参考架构集。它们都采用标准格式,使得使用LangServe部署它们变得很容易。

🚩 我们将发布LangServe的托管版本,以一键式部署LangChain应用程序。在此处注册以加入等待列表。

9. 快速开始

要使用,首先安装LangChain命令行界面。

pip install -U langchain-cli

接下来,创建一个新的LangChain项目:

langchain app new my-app

这将创建一个名为my-app的新目录,其中包含两个文件夹:
在这里插入图片描述

  • app:这是LangServe代码的存放位置
  • packages:这是您的链或代理的存放位置

要将现有模板作为包引入,首先需要进入您的新项目:

cd my-app

你可以把一个模板添加为一个项目。在这个入门指南中,我们将添加一个简单的海盗语言项目。这个项目的作用是将用户输入转换成海盗语言。

langchain app add pirate-speak

这将在packages/pirate-speak中引入指定的模板

然后会提示您是否要安装它。这相当于运行pip install -e packages/pirate-speak。通常应该接受这一点(或者之后运行相同的命令)。我们使用-e安装它,这样如果您修改模板(您很可能会这样做),更改将会更新。

之后,它会问您是否要为此项目生成路由代码。这是您需要添加到您的应用程序中以开始使用此链的代码。如果我们接受,我们将看到生成以下代码:

from pirate_speak.chain import chain as pirate_speak_chainadd_routes(app, pirate_speak_chain, path="/pirate-speak")

你现在可以编辑你拉下来的模板。你可以更改package/pirate-speak的代码文件,以使用不同的模型、不同的提示、不同的逻辑。请注意,上面的代码片段始终期望最终链可导入为from pirate_speak.chain import chain,因此您应该保持包的结构足够相似,以尊重该要求,或准备更新该代码片段。

一旦你想做的都做完了,为了让LangServe使用这个项目,你需要修改app/server.py。具体来说,你应该将上面的代码片段添加到app/server.py中,以便该文件看起来像:

from fastapi import FastAPI
from langserve import add_routes
from pirate_speak.chain import chain as pirate_speak_chainapp = FastAPI()add_routes(app, pirate_speak_chain, path="/pirate-speak")

(可选)现在让我们配置 LangSmith。LangSmith 将帮助我们跟踪、监视和调试 LangChain 应用程序。LangSmith 目前处于私人测试阶段,您可以在这里注册。如果您无法访问,可以跳过此部分。

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>  # if not specified, defaults to "default"

对于这个特定的应用程序,我们将使用OpenAI作为LLM,所以我们需要导出我们的OpenAI API密钥:

export OPENAI_API_KEY=sk-...

您可以通过运行以下命令,启动生产就绪的端点以及一个playground:

langchain serve

这现在提供了一个完全部署的LangServe应用程序。例如,您可以访问
http://127.0.0.1:8000/pirate-speak/playground/

在这里插入图片描述
Access API documentation at http://127.0.0.1:8000/docs
在这里插入图片描述
使用LangServe的Python或js SDK与API进行交互,就好像它是一个常规的Runnable。

from langserve import RemoteRunnableapi = RemoteRunnable("http://127.0.0.1:8000/pirate-speak")
api.invoke({"text": "hi"})

快速入门就到这里!您已成功下载了第一个模板,并使用LangServe部署了它。

代码

https://github.com/zgpeace/pets-name-langchain/tree/develop

参考

  • https://python.langchain.com/docs/langserve
  • https://github.com/langchain-ai/langchain/blob/master/templates/README.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3DCAT+上汽奥迪:打造新零售汽车配置器实时云渲染解决方案

在 5G、云计算等技术飞速发展的加持下&#xff0c;云渲染技术迎来了突飞猛进的发展。在这样的背景下&#xff0c;3DCAT应运而生&#xff0c;成为了业内知名的实时云渲染服务商之一。 交互式3D实时云看车作为云渲染技术的一种使用场景&#xff0c;也逐步成为一种新的看车方式&a…

设备温度和振动综合监测:温振一体式传感器的优点和应用

随着工业设备的复杂性和自动化程度的提高&#xff0c;对设备状态监测的需求也日益增加。温振一体式传感器作为一种集振动和温度监测于一体的传感器&#xff0c;具备多项优势&#xff0c;因此在工业设备状态监测领域得到广泛应用。 温振一体式传感器基于振动传感器和温度传感器的…

网络运维与网络安全 学习笔记2023.12.1

网络运维与网络安全 学习笔记 第三十二天 今日目标 ACL原理与类型、基本ACL配置、高级ACL配置 高级ACL之ICMP、高级ACL之telnet ACL原理与类型 项目背景 为了企业的业务安全&#xff0c;要求不同部门对服务器有不同的权限 PC1不能访问Server PC2允许访问Server 允许其他所…

043:vue项目一直出现 sockjs-node/info?t=XX的解决办法

第043个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

Linux文件系统与基础IO

文章目录 1 C文件接口1.1 fopen1.2 fwrite、fread、rewind、fclose 2 文件系统调用2.1 open2.1.1 参数2&#xff1a;flags2.1.2 参数3&#xff1a;mode2.1.3 返回值——file descriptor 2.2 write2.3 read2.4 close 3 文件的本质3.1 struct file3.2 一个进程如何与多个文件相关…

Python 日志指南

目录 日志指南 日志基础教程 什么时候使用日志 一个简单的例子 记录日志到文件 从多个模块记录日志 记录变量数据 更改显示消息的格式 在消息中显示日期/时间 后续步骤 进阶日志教程 记录流程 记录器 处理器 格式器 配置日志记录 如果没有提供配置会发生什么 …

QLoRA论文概述

QLORA: Efficient Finetuning of Quantized LLMs QLoRA论文概述前言&#xff08;省流版本&#xff09;摘要论文十问实验实验1数据集和模型实验结论 实验2数据集和模型实验结论 局限性模型尺度数据集其他微调方法 QLoRA论文概述 前言&#xff08;省流版本&#xff09; 微调需要…

期末速成数据库极简版【查询】(2)

目录 select数据查询----表 【1】筛选列 【2】where简单查询 【3】top-n/distinct/排序的查询 【4】常用内置函数 常用日期函数 常用的字符串函数 【5】模糊查询 【6】表数据操作——增/删/改 插入 更新 删除 【7】数据汇总 聚合 分类 ​ &#x1f642;&#…

分享十几个适合新手练习的软件测试项目

说实话&#xff0c;在找项目的过程中&#xff0c;我下载过&#xff08;甚至付费下载过&#xff09;N多个项目、联系过很多项目的作者&#xff0c;但是绝大部分项目&#xff0c;在我看来&#xff0c;并不适合你拿来练习&#xff0c;它们或多或少都存在着“问题”&#xff0c;比如…

12v转48v升压电源芯片:参数、特点及应用领域

12v转48v升压电源芯片&#xff1a;参数、特点及应用领域 随着电子设备的日益普及&#xff0c;电源芯片的需求也在不断增长。今天我们将介绍一款具有广泛应用前景的升压电源芯片——12v转48v升压电源芯片。该芯片具有宽输入电压范围、高效率、固定工作频率等特点&#xff0c;适…

mp3的播放

1.这段vue代码会播放声音&#xff0c;但是会有audio标签 <template><div><audio id"myAudio" controls><source src"./test.mp3" type"audio/mp3" />Your browser does not support the audio tag.</audio></…

库卡LBR_iisy_3_R760协作机器人导入到coppeliasim

1.从库卡官网xpert下载模型 一般载都是这个step文件格式&#xff0c;其他的好像不太好用。coppeliasim导入格式用的是stl,需要用freeCAD打开重新转换一下。下载下来后&#xff0c;很多都是一个整体&#xff0c;在freeCAD导入中&#xff0c;导入选择要不勾选合并。 下载完用CAD …

正则表达式详细讲解

目录 一、正则表达式概念 二、八元素 1、普通字符&#xff1a; 2、元字符&#xff1a; 3、通配符 .&#xff1a; 4、字符类 []&#xff1a; 5、量词&#xff1a; 6、锚点 ^ 和 $&#xff1a; 7、捕获组 ()&#xff1a; 8、转义字符 \&#xff1a; 三、日常使用的正则…

markdown记录

文章目录 基础操作使用一级列表、二级列表 博文链接 基础操作 使用一级列表、二级列表 博文链接 CSDN-Markdown语法集锦 CSDN-markdown语法之如何使用LaTeX语法编写数学公式 CSDN Markdown简明教程1-关于Markdown CSDN Markdown简明教程2-基本使用 CSDN Markdown简明教程3-表…

Bash脚本调用百度翻译API进行中文到英文的翻译

写一个bash脚本调用百度翻译API进行中文到英文的翻译&#xff0c;首先需要进行相关的申请。看百度给出的文档链接: 百度翻译API文档 需要先注册一个百度账号&#xff0c;然后申请APPID。脚本中会用到appid和key这两个值。按照文档给出的提示可以获得。如下是脚本&#xff1a; #…

使用VBA创建Excel条件格式

实例需求&#xff1a;数据总行数不确定&#xff0c;现需要将Category区域&#xff08;即C列到J列&#xff09;中第3行开始的区域设置条件格式&#xff0c;规则如下&#xff1a; 只对部分指定单元格应用色阶条件格式&#xff08;3色&#xff09;指定单元格应满足条件&#xff1…

移动距离

//偶数行需要反转&#xff0c;判断行数时,最后一个需要特判,可以用向上取整 //也可以把传入的值减一,下标从0开始 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main{static int w,m,n;static BufferedReader i…

大数据技术1:大数据发展简史

前言&#xff1a;学习大数据技术&#xff0c;知道会用已经够了&#xff0c;但是要想走得更远&#xff0c;应该了解它发展的来龙去脉&#xff0c;为何会有新的技术/工具的出现&#xff0c;相比老的技术有什么样的进步。 1、传统数据处理系统存在的问题 随着信息时代互联网技术爆…

JDBC简介及快速入门-黑马(P1)

黑马视频b站链接&#xff1a; 01-JDBC简介&快速入门_哔哩哔哩_bilibili &#x1f436;一、JDBC 简介 JDBC 概念&#xff1a; JDBC 就是使用 Java 语言操作关系型数据库的一套 API。 全称&#xff08;Java DataBase Connectivity&#xff09; Java 数据库连接 JDBC 本质…

React 笔记 jsx

严格约定&#xff1a;React 组件必须以大写字母开头&#xff0c;而 HTML 标签则必须是小写字母。 React JSX JSX 是由 React 推广的 JavaScript 语法扩展。 用于表达组件的 特殊语法的 js 函数 要求标签必须闭合&#xff1b;返回的组件必须包裹在一个父标签内&#xff1b; …