W
AI-Wiki
ENTITY

FastAPI

核心定义

FastAPI是Python生态下专为API开发设计的现代高性能Web框架,主打低开发成本、高运行性能,是当前大模型应用开发领域封装业务逻辑为HTTP接口的首选工具之一。

核心特性

  1. 自动生成接口文档:基于Python原生类型提示语法,无需额外配置即可自动生成Swagger UI格式的接口文档,支持在线调试接口参数与返回值。
  2. 高性能异步支持:原生支持异步编程模型,接口运行性能接近Node.js、Go语言实现的同类服务,远高于传统Python Web框架如Flask、Django的同步接口性能。
  3. 低学习成本:语法简洁易懂,仅需少量代码即可将普通Python函数、业务组件封装为可调用的API接口,开发效率提升显著。

基础使用流程

1. 导入与初始化实例

首先从fastapi库导入FastAPI类,初始化应用实例,同时可配置接口文档的基础信息:

from fastapi import FastAPI

# 初始化FastAPI应用
app = FastAPI(
    title="接口文档标题",
    version="1.0.0",
    description="接口功能描述信息"
)

其中titleversiondescription参数会自动同步到生成的接口文档首页。

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访问该接口

边界与注意事项

  1. FastAPI仅支持ASGI服务器运行,无法直接通过传统WSGI服务器(如仅配置WSGI worker的Gunicorn)启动,如需生产部署可搭配uvicorn的ASGI worker使用。
  2. 默认启动配置的host为127.0.0.1,仅支持本地访问,如需对外提供服务需修改host为0.0.0.0
  3. 结合LangServe使用时需提前安装langserve依赖包,否则无法导入add_routes方法。

相关条目