一个最小可运行的 FastAPI 项目,包含健康检查与示例路由。
1) 创建虚拟环境并激活
python3 -m venv .venv
source .venv/bin/activate  # Windows: .venv\\Scripts\\activate
python -m pip install -U pip
2) 安装依赖
pip install -r requirements.txt
3) 启动开发服务(热重载)
uvicorn app.main:app --reload --port 8000
4) 打开接口文档
5) 内网IP
192.168.244.164
.
├── app
│   ├── __init__.py
│   ├── core
│   │   ├── __init__.py
│   │   └── config.py       # 环境配置(LLM_PROVIDER 等)
│   ├── api
│   │   ├── __init__.py
│   │   ├── deps.py         # 依赖注入(LLMService)
│   │   └── routes.py       # 路由(/api/ping, /api/llm/chat)
│   ├── providers
│   │   ├── __init__.py
│   │   ├── base.py         # Provider 协议定义
│   │   └── mock_provider.py# 本地回显 Provider
│   ├── schemas
│   │   ├── __init__.py
│   │   └── llm.py          # LLM 请求/响应模型
│   ├── services
│   │   ├── __init__.py
│   │   └── llm_service.py  # LLM 业务服务
│   └── main.py            # FastAPI 应用入口(/health)
├── requirements.txt        # 依赖
├── .gitignore
└── README.md
环境变量:
LLM_PROVIDER:默认 mockLLM_MODEL:默认 mock-echo-001LLM_TEMPERATURE:默认 1.0OPENAI_API_KEY:如接入 OpenAI 时使用(目前示例未调用外部服务)示例接口:POST /api/llm/chat
请求体示例:
{
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "你好,今天上海天气如何?"}
  ],
  "model": "mock-echo-001",
  "temperature": 0.7
}
响应示例(mock 提供器):
{
  "content": "[mock] You said: 你好,今天上海天气如何?",
  "model": "mock-echo-001",
  "usage": {"prompt_tokens": 8, "completion_tokens": 7, "total_tokens": 15}
}
后续要接入真实大模型时,只需新增对应 Provider(如 openai_provider.py),在 app/api/deps.py 中根据 LLM_PROVIDER 切换实例即可。
pydantic-settings 并添加 Settings 类读取环境变量logging 或 structlogpytest,并添加 tests/ 目录ruff/black/mypy,及 pre-commitDockerfile 与 docker-compose.yml