GitHub - jackluo2012/ai-fastapi: my fastapi web service framework · GitHub
Skip to content

jackluo2012/ai-fastapi

 
 

Folders and files

Repository files navigation

Enterprise AI App

企业级生成式 AI 应用 Web 服务框架:基于 FastAPI、CrewAI、OceanBase 与云原生可观测性。

技术栈

  • Web: FastAPI + Uvicorn
  • AI 编排: CrewAI(智能体/任务/流程 YAML + Python)
  • 持久化: SQLAlchemy 2.0 异步(OceanBase/MySQL 兼容)、Alembic 迁移、本地文件客户端
  • 安全: X-API-Key 鉴权、SlowAPI 限流
  • 可观测: structlog 结构化日志、Prometheus 指标、Request ID 贯穿

环境要求

  • Python 3.11+
  • 可选:Redis、MySQL/OceanBase(生产)

快速开始

# 克隆
git clone https://github.com/kid0317/fastapi_base.git && cd fastapi_base

# 虚拟环境与依赖
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -e ".[dev]"

# 配置(复制后填入阿里云/百度 API Key 等,见下方「配置说明」)
cp .env.example .env
# 编辑 .env,至少填写 APP_LLM_API_KEY、APP_BAIDU_API_KEY;
# 也可直接使用环境变量 QWEN_API_KEY、BAIDU_API_KEY(未填 APP_ 时会自动 fallback)

# 启动(任选其一,在项目根目录)
# 方式 A:虚拟环境激活后
uvicorn app.main:app --reload --app-dir src
# 方式 B:直接用 venv 的 Python(推荐,避免子进程用错解释器)
.venv/bin/python -m uvicorn app.main:app --reload --app-dir src
# 方式 C:以模块运行(需设置 PYTHONPATH)
PYTHONPATH=src python -m app

本地调试

  • 命令行(项目根目录,先激活 .venv 或使用 .venv/bin/python):

    PYTHONPATH=src python -m app

    断点调试时可在 src/app/__main__.py 里把 reload=True 改为 False,避免 reload 子进程导致断点不命中。

  • Cursor / VS Code:已配置 .vscode/launch.json,在「运行和调试」里选择:

    • FastAPI (调试,无 reload):适合打断点调试,单进程。
    • FastAPI (开发,reload):改代码自动重载。
    • Python: 以模块运行 app:以 python -m app 方式启动,便于在 __main__.py 里设断点。

常用端点

  • 健康检查: GET /health/liveGET /health/ready
  • API 文档: GET /docs(开发环境)
  • 指标: GET /metrics
  • 示例接口: GET /api/v1/demo/ping(需请求头 X-API-Key,开发环境可不配置 APP_API_KEYS)
  • Demo 深度调研: POST /api/v1/demo/deep-research,请求体须为 JSON:必填 topic(非空字符串,1–500 字),可选 extra_instructions(字符串或 null)。需请求头 Content-Type: application/jsonX-API-Key。返回 422 时查看响应 detail 定位校验错误。需配置阿里云 LLM + 百度搜索 API Key。

项目结构

src/app/
├── main.py           # 入口、中间件、异常处理
├── api/v1/           # 版本化 API、dependencies
├── core/             # config、security
├── crews/            # agents、tasks、flows、tools、llm(CrewAI)
├── db/               # clients、models、migrations、repositories
├── schemas/          # Pydantic Request/Response/Domain
├── services/         # 领域服务
└── observability/    # 日志、指标
tests/                # unit、integration
deploy/               # docker、k8s、grafana

配置说明

复制 .env.example.env 后,至少需填入以下与阿里云、百度相关的环境变量(其余可选):

阿里云通义千问(LLM,必填以使用 AI 编排)

变量 说明 必填 获取方式
APP_LLM_API_KEY(或 QWEN_API_KEY 阿里云 DashScope API Key 阿里云百炼 / 灵积控制台 创建 API-KEY
APP_LLM_PROVIDER 固定填 aliyun 默认 aliyun
APP_LLM_MODEL 模型名,如 qwen-plusqwen-turbo 默认 qwen-plus
APP_LLM_REGION 地域:cn / intl / finance 默认 cn
APP_LLM_TIMEOUT 请求超时秒数 默认 600

百度千帆搜索(百度搜索工具,使用搜索时必填)

变量 说明 必填 获取方式
APP_BAIDU_API_KEY(或 BAIDU_API_KEY 百度千帆 AppBuilder API Key 使用百度搜索工具时必填 百度智能云千帆控制台 创建应用获取 API Key
APP_BAIDU_SEARCH_TIMEOUT 搜索请求超时秒数 默认 30

其他常用配置

变量 说明 必填
APP_ENV development / staging / production
APP_LOG_LEVEL DEBUG / INFO / WARNING / ERROR
APP_DATABASE_URL 数据库连接串 生产必填
APP_SECRET_KEY 签名/会话密钥 生产必填
APP_API_KEYS 合法 API Key,逗号分隔 生产建议配置

完整项见 .env.example

测试

# 从项目根目录执行,PYTHONPATH 已由 pyproject.toml 配置
pytest tests/ -v

深度调研集成测试(需配置 LLM + 百度 API Key,否则会跳过):

# 方式一:使用 .env 中的 APP_LLM_API_KEY、APP_BAIDU_API_KEY
pytest tests/integration/test_deep_research.py -v

# 方式二:临时使用 QWEN_API_KEY、BAIDU_API_KEY 跑一次
export QWEN_API_KEY=sk-xxx
export BAIDU_API_KEY=bce-v3/xxx
pytest tests/integration/test_deep_research.py -v

部署

  • Docker: deploy/docker/Dockerfile,多阶段构建、非 root 用户
  • K8s: deploy/k8s/deployment.yaml,liveness/readiness 使用 /health/live/health/ready
  • 敏感配置使用 Secret,非敏感使用 ConfigMap,参见 deploy/k8s/configmap.example.yaml

设计文档

doc/Python AI 应用框架设计文档.md

License

MIT

About

my fastapi web service framework

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • Python 98.1%
  • Other 1.9%