入门FastAPI和uvicorn以及和LangChain、LangGraph的简单结合

🚀 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 程序

安装依赖:

bash 复制代码
pip install fastapi uvicorn

创建 app.py

python 复制代码
from fastapi import FastAPI

app = FastAPI()

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

运行:

bash 复制代码
uvicorn app:app --reload

访问:

复制代码
http://localhost:8000/

自动 API 文档(惊喜):

复制代码
http://localhost:8000/docs

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


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

1. 路径参数(Path Parameter)

python 复制代码
@app.get("/weather/{city}")
def get_weather(city: str):
    return {"city": city, "weather": "sunny"}

访问:

复制代码
/weather/Shanghai

2. 查询参数(Query Parameter)

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

访问:

复制代码
/sum?a=3&b=5

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

python 复制代码
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            # 程序入口

典型入口文件:

python 复制代码
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 智能

安装依赖:

bash 复制代码
pip install langchain-openai

示例:一个简单的 AI Chat API

python 复制代码
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,你可以这样包装一个图:

python 复制代码
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:前端跨域必备

python 复制代码
from fastapi.middleware.cors import CORSMiddleware

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

🚀 部署 FastAPI(生产环境)

最标准生产方案:

复制代码
Gunicorn + Uvicorn workers

启动方式:

bash 复制代码
pip install gunicorn uvicorn
gunicorn -k uvicorn.workers.UvicornWorker app:app -w 4 -b 0.0.0.0:8000

Dockerfile 示例:

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 官方推荐的运行方式就是:

bash 复制代码
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(生产)
相关推荐
猎人everest4 小时前
LangChain 与其他大语言模型框架有什么区别
人工智能·语言模型·langchain
Fuly10246 小时前
langchain基础教程(6)---构建知识库--②向量数据库-milvus
数据库·langchain·milvus
用户377833043499 小时前
( 教学 )Agent 构建 Prompt(提示词)6. 输出修正解析器 OutputFixingParser
人工智能·langchain
工藤学编程13 小时前
AI Ping 赋能:基于 Kimi-K2-Thinking + LangChain 打造网盘在线文档总结助手
人工智能·langchain·ai ping
大模型教程13 小时前
GitHub 12w Star神器!一文详解大模型集成框架LangChain
langchain·llm·agent
wu_dangwangye13 小时前
n8n,make,Zapier自动化工作流速成教学
python·fastapi
果壳~13 小时前
【LangChain】【Python】【NL2SQL】sql解释器简单实现
python·sql·langchain
code_weic14 小时前
Java AI开发框架 - LangChain4J学习笔记
java·人工智能·ai·langchain
Stara051115 小时前
LangChain—大语言模型应用开发框架的体系化架构解析
python·langchain·llm·agent·提示工程·rag