🚀 FastAPI:高性能 Python Web 框架

随着 AI 技术的爆发,越来越多的团队开始在后端引入 Python,用来承载如 LangChain、LangGraph、向量检索、Embedding、LLM 调用 等 AI 能力。但对于前端工程师或非 Python 后端开发来说,如何快速搭建一个高性能、易扩展的 Python API 服务,是进入 AI 开发的第一步。

FastAPI,就是这样一个足以媲美 Java Spring Boot 的现代 Python Web 框架。

本文我会从一个前端工程师的角度出发,用最直观的方式介绍:

  • 为什么 FastAPI 是 AI 后端的最佳选择
  • 如何用 FastAPI 5 分钟搭建一个可用 API
  • 如何处理参数、校验、错误返回
  • 如何构建一个可扩展的项目结构
  • 如何整合 AI(LangChain)能力
  • 如何在生产环境部署

🎯 为什么是 FastAPI?

相比 Flask、Django,FastAPI 有几个特别关键的优势:

🟩 1. 自带自动生成 API 文档(Swagger + ReDoc)

开发体验类似 Spring Boot,通过 /docs 自动生成文档和请求调试界面。

🟦 2. 原生 async/await,性能极高

FastAPI 底层基于 Starlette + Pydantic,是目前 Python 速度最高的框架之一,非常适合高并发 AI 服务。

🟧 3. 内置强类型支持(非常像 TypeScript)

你写类型 → 自动生成文档 → 自动校验参数
这对前端工程师非常友好。

🟨 4. 与 AI 生态适配最佳

LangChain、LangGraph、OpenAI、LlamaIndex 官方示例几乎都用 FastAPI。

🟥 5. 学习曲线非常平滑

仅需 Python 基础即可快速搭建后端服务。


⚡ 5 分钟上手:第一个 FastAPI 程序

安装依赖:

pip install fastapi uvicorn

创建 app.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def hello():
    return {"message": "Hello FastAPI"}

运行:

uvicorn app:app --reload

访问:

http://localhost:8000/

自动 API 文档(惊喜):

http://localhost:8000/docs

你会看到一个可交互的 Swagger UI,并且可以直接调试 API。


🧩 路由与参数:FastAPI 的优雅之处

1. 路径参数(Path Parameter)

@app.get("/weather/{city}")
def get_weather(city: str):
    return {"city": city, "weather": "sunny"}

访问:

/weather/Shanghai

2. 查询参数(Query Parameter)

@app.get("/sum")
def sum_numbers(a: int, b: int):
    return {"result": a + b}

访问:

/sum?a=3&b=5

3. Body 参数(使用 Pydantic 校验)

from pydantic import BaseModel

class User(BaseModel):
    name: str
    age: int

@app.post("/user")
def create_user(user: User):
    return {"msg": "ok", "data": user}

Swagger 会自动显示请求的 JSON 模型,非常强大。


🧱 企业级项目目录结构推荐

如果你来自 Java(Spring Boot),你会喜欢以下结构:

app/
│── api/           # 路由层(Controller)
│── services/      # 业务逻辑层(Service)
│── models/        # ORM(数据库 Model)
│── schemas/       # 请求/响应 DTO(Pydantic)
│── core/          # 配置、中间件、日志
main.py            # 程序入口

典型入口文件:

from fastapi import FastAPI
from app.api import user_router, chat_router

app = FastAPI()

app.include_router(user_router)
app.include_router(chat_router)

🤖 FastAPI + LangChain:让你的 API 拥有 LLM 智能

安装依赖:

pip install langchain-openai

示例:一个简单的 AI Chat API

from fastapi import FastAPI
from langchain_openai import ChatOpenAI

app = FastAPI()
llm = ChatOpenAI(model="gpt-4.1-mini")

@app.get("/chat")
def chat(msg: str):
    res = llm.invoke(msg)
    return {"reply": res.content}

访问:

/chat?msg=你好

1 分钟做一个 AI 服务,就是这么简单。


🤖 FastAPI + LangGraph:工作流级别的 AI Agent 服务

LangGraph 可做多步骤 AI Agent,你可以这样包装一个图:

from fastapi import FastAPI
from langgraph.graph import StateGraph

app = FastAPI()

def say_hello(state):
    return {"text": "Hello from LangGraph"}

graph = StateGraph().add_node("hello", say_hello).compile()

@app.get("/graph")
def run_graph():
    out = graph.invoke({"input": ""})
    return out

这就已经是一个最小可运行的 AI agent workflow 接口了。


📦 CORS:前端跨域必备

from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_methods=["*"],
    allow_headers=["*"],
)

🚀 部署 FastAPI(生产环境)

最标准生产方案:

Gunicorn + Uvicorn workers

启动方式:

pip install gunicorn uvicorn
gunicorn -k uvicorn.workers.UvicornWorker app:app -w 4 -b 0.0.0.0:8000

Dockerfile 示例:

FROM python:3.10

WORKDIR /app
COPY . .
RUN pip install -r requirements.txt

CMD ["gunicorn", "-k", "uvicorn.workers.UvicornWorker", "app:app"]

部署到 K8s、阿里云、腾讯云都很简单。


🚀 什么是 Uvicorn?

uvicorn一个高性能的 Python ASGI 服务器,它负责真正运行 FastAPI 项目
一句话:

FastAPI 是框架,Uvicorn 是用来运行 FastAPI 的“发动机”。

下面我给你一个前端工程师能一秒理解的解释。


  • 它是一个 ASGI server(Asynchronous Server Gateway Interface)
  • 用于运行异步 Web 框架,比如 FastAPI / Starlette
  • 速度非常快(基于 uvloop + httptools

你可以把它理解为:

Java Python
Tomcat / Jetty / Undertow Uvicorn

👉 你写 FastAPI,但真正处理网络请求的是 Uvicorn。


🟦 为什么 FastAPI 必须安装 Uvicorn?

FastAPI 本身是 框架,不是 服务器

你不能直接运行一个 framework,你需要一个 web server 去:

  • 打开端口
  • 接收 HTTP 请求
  • 分发请求
  • 管理异步事件循环
  • 返回 HTTP 响应

FastAPI 官方推荐的运行方式就是:

uvicorn app:app --reload
uvicorn app:app --host 0.0.0.0 --port 8000

其中:

  • app:app = 文件名:实例名
  • uvicorn 负责启动整个服务

没有 Uvicorn,你无法通过 HTTP 访问 FastAPI。


🟩 为什么不用 Flask 那样的 “app.run()”?

Flask 是 WSGI 框架(同步)。

FastAPI 是 ASGI 框架(异步),支持:

  • async/await 并发
  • WebSocket
  • 高性能 IO
  • Streaming
  • 背压
  • LLM 长链接/流式输出

这些必须依赖 ASGI server,所以需要:

✔ Uvicorn
✔ 或 Hypercorn
✔ 或 Daphne

其中 Uvicorn 最轻量 + 速度最快。


🟧 前端视角理解(最直观)

你可以把它类比:

Node.js Python
node server.js uvicorn app:app

FastAPI 类似 Express,但它没有内置一个“启动 API 的命令”。

你需要用 Uvicorn 来启动它。


理念与:

  • Express(Node)
  • Flask(Python)
  • Koa(Node)

一致。

框架不内置 server,server 由专业项目处理。

🟫 总结

FastAPI = 框架,而不是服务器
Uvicorn = 运行 FastAPI 的 ASGI 服务器

安装 FastAPI 时必须要一个 ASGI server,否则它无法提供 HTTP 服务。

最常用的组合:

FastAPI + Uvicorn(开发)
FastAPI + Uvicorn + Gunicorn(生产)
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐