当前位置: 首页 > news >正文

【大模型系列】使用fastapi为langchain应用快速对外提供restful api

我们可以通过fastapi为我们的langchain应用向外暴露endpoint,操作如下:

安装依赖
# 安装 LangServe
pip install langserve[all]# 也可以只安装一端
pip install "langserve[client]"
pip install "langserve[server]"pip install uvicorn
pip install fastapi

fastapi 入门可以参考: https://www.runoob.com/fastapi/fastapi-tutorial.html

官网: https://fastapi.tiangolo.com/

接口开发和调试

以下是一个简单的例子

from fastapi import FastAPI
from langchain_openai import ChatOpenAI
from langserve import add_routes
from pydantic import BaseModel
import uvicorn
from langchain.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParserapp = FastAPI()@app.get("/")
def read_root():return {"message": "Hello, World!"}class Data(BaseModel):output: strdef llm_chain():prompt = PromptTemplate.from_template("写一关于{subject}首诗,30字以内")llm = ChatOpenAI(model="gpt-4o-mini")chain = prompt | llm | StrOutputParser()return chain# Add routes immediately when the module is imported
add_routes(app,llm_chain(),path="/llm_chain",# 注意:如果要允许其他程序通过接口调用,则这个参数需要加;启用enabled_endpoints等n个端点(可以自定义名称,playground,stream_log是调试必须要的)enabled_endpoints=("invoke", "batch", "config_hashes", "playground", "stream_log"),
)if __name__ == "__main__":uvicorn.run(app, host="0.0.0.0", port=8000)

执行main方法启动
在这里插入图片描述
浏览器访问:http://localhost:8000/llm_chain/playground/ 可进入api调试界面

在这里插入图片描述


点击start,调用接口调试

在这里插入图片描述

接口调用

参考如下代码

import requestsresponse = requests.post(
# 这里的请求路径需要在上面的enabled_endpoints白名单里"http://localhost:8000/llm_chain/invoke", json={"input": {"subject": "夏天"}}
)
print(response.json())

返回值如下:
在这里插入图片描述

over~~

相关文章:

  • 学习Linux的第四天
  • nginx 上传文件,413 request entity too large
  • 使用Milvus向量数据库构建具有长期记忆的对话机器人
  • 从人脸扫描到实时驱动,超写实数字分身技术解析
  • Java学习手册:数据库事务相关知识
  • Web 架构之动静分离:原理、实践与优化
  • SSL/TLS 证书与数字签名:构建互联网信任的详解
  • spark转换算子
  • 【Java项目脚手架系列】第三篇:Spring MVC基础项目脚手架
  • Excel处理控件Aspose.Cells教程:压缩Excel文件完整指南
  • arXiv论文 MALOnt: An Ontology for Malware Threat Intelligence
  • Laravel 12 实现验证码功能
  • 解决 Chrome 与 Chromedriver 版本不一致问题的方法
  • 如何在金仓数据库KingbaseES中新建一个数据库?新建一个表?给表添加一个字段?
  • android 折叠屏开发适配全解析:多窗口、铰链处理与响应式布局
  • 【北京迅为】iTOP-4412精英版使用手册-第八章 Android 4.4系统编译
  • 物业设备管理的“多系统协同”模式:ERP、IoT与工单系统如何联动?
  • C26-冒泡排序法
  • BT回测框架Cerebro,DataFeeds和Strategies的介绍
  • 2021-11-11 C++泰勒sin(x)以2步进乘方除以阶乘加减第N项
  • 多地再发网约车从业及投资风险提示:避免盲目花费大笔资金“购车”入行
  • 工行回应两售出金条发现疑似杂质:情况不属实,疑似杂质应为金条售出后的外部附着物
  • 上海发布首份直播电商行业自律公约,禁止虚假宣传、商业诋毁
  • 欧盟公布关税反制清单,瞄准美国飞机、汽车等产品
  • 金融监管局:已设立74支私募股权投资基金,支持投资科技创新企业
  • 媒体起底“速成洋文凭”灰产链,专家:我们要给学历“祛魅”