SuperAPI AI 工具集

backend-dev

编程与开发

查看项目

更新于 10-16 02:01

技能介绍

用途

Backend Dev 是 Resume Matcher 项目中的后端开发技能,适用于创建或修改 FastAPI 端点、Pydantic 数据模型(schemas)、数据库操作、LLM 集成以及 Python 服务逻辑的场景。

编写代码前的准备

技能要求在动手写代码之前先完成以下阅读与检查:

  • 阅读 docs/agent/architecture/backend-guide.md 了解架构
  • 阅读 docs/agent/apis/front-end-apis.md 了解 API 契约
  • 阅读 docs/agent/llm-integration.md 了解 LLM 使用模式
  • 先查看相关目录中已有的代码

强制规则

技能列出了一组不可协商的规则:

  • 所有函数必须带类型提示,没有例外
  • 可变默认值必须使用 copy.deepcopy()
  • 服务端记录详细错误,向客户端返回通用信息
  • 共享资源初始化使用 asyncio.Lock()
  • API 密钥通过 api_key= 直接传给 litellm,绝不使用 os.environ

项目结构

后端代码位于 apps/backend/app/ 目录下,包含:

  • main.py:FastAPI 应用、CORS、lifespan、路由
  • config.py:基于环境变量的 Pydantic BaseSettings
  • database.py:TinyDB 封装(JSON 文件存储)
  • llm.py:LiteLLM 封装(多提供商)
  • routers/:API 端点处理器
  • services/:业务逻辑层
  • schemas/:Pydantic 请求/响应模型
  • prompts/:LLM 提示词模板(Jinja2)

代码模式

技能给出了若干可直接参考的模式示例。

新增端点:使用 APIRouter 并设置 prefix 与 tags,通过 response_model 声明返回类型,在 try/except 中调用业务逻辑,出错时用 logger.error 记录详细信息并抛出 HTTPException 返回通用提示。

新增 Schema:使用 Pydantic BaseModel 与 Field 定义字段约束,例如 name 字段设置 min_length=1、max_length=200,可选字段用 str | None。

数据库操作:通过 get_db() 获取数据库,先查询已有文档,不存在时使用 copy.deepcopy() 复制可变默认值再插入,示例中 DEFAULT_DATA 为 {"sections": [], "metadata": {}}。

LLM 调用:从 app.llm 导入 get_completion,从 app.config 导入 settings,调用时传入 prompt、model、api_key(直接传参而非环境变量)以及 json_mode 参数。

错误处理模式:在 except 块中先用 logger.error 记录详细错误供服务端日志使用,再抛出 HTTPException,status_code 为 500,detail 为通用提示信息。

检查清单

技能附带一份开发检查清单:

  • 所有函数都有类型提示
  • 可变默认值使用 copy.deepcopy()
  • 错误处理记录详细信息、返回通用信息
  • 新端点已在 main.py 的路由中包含注册
  • 所有请求/响应体都定义了 Schema
  • API 密钥通过 api_key= 参数传递

适用场景与限制

该技能面向 Resume Matcher 项目的后端开发工作,与该项目既有的目录结构、技术栈(FastAPI、Pydantic、TinyDB、LiteLLM)和文档体系紧密绑定。关于该技能的安装方式、版本信息、收费情况等,资料中暂未提供。