ENTITY
FastAPI
核心定义
FastAPI是Python生态下专为API开发设计的现代高性能Web框架,主打低开发成本、高运行性能,是当前大模型应用开发领域封装业务逻辑为HTTP接口的首选工具之一。
核心特性
- 自动生成接口文档:基于Python原生类型提示语法,无需额外配置即可自动生成Swagger UI格式的接口文档,支持在线调试接口参数与返回值。
- 高性能异步支持:原生支持异步编程模型,接口运行性能接近Node.js、Go语言实现的同类服务,远高于传统Python Web框架如Flask、Django的同步接口性能。
- 低学习成本:语法简洁易懂,仅需少量代码即可将普通Python函数、业务组件封装为可调用的API接口,开发效率提升显著。
基础使用流程
1. 导入与初始化实例
首先从fastapi库导入FastAPI类,初始化应用实例,同时可配置接口文档的基础信息:
from fastapi import FastAPI
# 初始化FastAPI应用
app = FastAPI(
title="接口文档标题",
version="1.0.0",
description="接口功能描述信息"
)
其中title、version、description参数会自动同步到生成的接口文档首页。
2. 注册业务路由
业务接口需要以路由的形式注册到FastAPI实例上,支持自定义请求方式、路径、请求参数规则。
3. 启动服务
FastAPI属于ASGI应用,必须通过ASGI服务器启动,最常用的实现为uvicorn,默认监听本地8000端口:
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
服务启动后可通过http://127.0.0.1:8000/docs访问自动生成的Swagger接口调试页面。
典型应用场景:封装LangChain链为API
在大模型应用开发中,FastAPI常搭配LangServe库的add_routes方法,仅需数行代码即可将LangChain链封装为可通过HTTP调用的接口:
from langserve import add_routes
# 将LangChain实例chain注册到路径/first_app
add_routes(app, chain, path="/first_app")
该配置会自动生成对应的接口规则:
- 支持POST请求传入参数调用链,等价于执行
chain.invoke(参数) - 支持GET请求预览接口信息
- 自动在Swagger文档中新增该接口的调试入口
- 服务启动后可通过
http://127.0.0.1:8000/first_app访问该接口
边界与注意事项
- FastAPI仅支持ASGI服务器运行,无法直接通过传统WSGI服务器(如仅配置WSGI worker的Gunicorn)启动,如需生产部署可搭配uvicorn的ASGI worker使用。
- 默认启动配置的host为
127.0.0.1,仅支持本地访问,如需对外提供服务需修改host为0.0.0.0。 - 结合LangServe使用时需提前安装
langserve依赖包,否则无法导入add_routes方法。