LangChain 入门 服务端部署-FastAPI

在向模型提交多模态消息,比如:音频、视频、图片时,我们不建议直接发送文件数据(base64)给模型,这会大量占用内存和会话记忆。更常见的方案是:

  • 先将多模态文件上传至通用的OSS服务,例如:阿里云OSS、腾讯云COS等
  • 获取oss服务的文件url地址,组织多模态消息,发送给大模型
    image

我们的服务端需要具备以下接口:

  • 对话接口:接收用户聊天消息,并调用Agent
  • 会话管理接口:查询或删除会话历史
  • 文件上传接口:调用OSS提供的客户端,实现文件上传授权,将来由前端完成文件上传,文件不经过服务器。

  app/
  ├── main.py                    # FastAPI 入口,配置路由和静态文件
  │
  ├── agents/
  │   └── personal_chief.py      # AI 代理核心逻辑
  │ 
  ├── api/
  │   └── v1/
  │       ├── chat.py             # 对话 API
  │       │   ├── POST /chat/stream     流式对话
  │       │   ├── GET  /chat/messages   获取历史
  │       │   └── DELETE /chat/messages 清空历史
  │       │
  │       └── oss.py              # OSS 上传签名 URL
  │
  ├── models/
  │   └── schemas.py              # Pydantic 数据模型,请求/响应数据结构定义  
  │
  ├── common/
  │   └── logger.py               # 日志配置
  │
  └── static/                     # Next.js 编译产出的静态网页 
      ├── index.html              # 前端入口
      ├── _next/                  # Next.js 构建资源
      └── ...                     # 其他静态资源

安装依赖

uv add fastapi alibabacloud-oss-v2
import os

from fastapi import FastAPI
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from fastapi.middleware.cors import CORSMiddleware
from app.api.v1 import chat
from app.api.v1 import oss
from app.common.logger import setup_logging

# 初始化日志配置
setup_logging()

# 初始化FastAPI
app = FastAPI(
    title="Personal Chief API",
    description="私厨",
    version="0.1.0"
)

# ...中间代码略...

if __name__ == "__main__":
    import uvicorn
    # 启动命令:python -m app.main
    uvicorn.run("app.main:app", host="127.0.0.1", port=8001, reload=True)
posted @ 2026-06-10 19:22  VipSoft  阅读(3)  评论(0)    收藏  举报