模型工厂、三层容错装饰器与JWT认证:从基础设施到可用服务

📅 2026/7/5 2:59:11 👁️ 阅读次数 📝 编程学习
模型工厂、三层容错装饰器与JWT认证:从基础设施到可用服务

2026-07-03 · 第三章收官 · LlamaFactory统一模型管理 + 容错装饰器 + JWT无状态认证


0. 上下文衔接

Day 3 完成了基础设施层:config配置中心、SQLAlchemy异步连接、get_db会话注入、结构化日志、统一异常体系。今天在这些地基上砌墙,解决三个核心问题:

  1. 模型怎么管:5个Agent每个都要初始化LLM客户端,参数重复、无法统一切换模型 → LlamaFactory工厂模式
  2. 出错怎么办:大模型API超时/限流/网络抖动是常态,不能直接500 → 三层兜底装饰器
  3. 用户怎么认证:接口不能裸奔,需要登录鉴权 → JWT + bcrypt

Day 5+ 业务Agent

Day 4 核心能力

Day 3 基础设施

数据库连接

config配置

logger日志

exceptions异常

LlamaFactory
模型工厂

retry装饰器
三层容错

JWT认证
登录鉴权

简历审查Agent

问答Agent

面试Agent

试卷批改Agent

前三章的知识脉络先快速过一遍,避免后面代码看不懂:

模块核心要点
LangGraph四要素State(TypedDict+Reducer) / Node(函数) / Edge(固定+条件) / Checkpointer(thread_id记忆)
Python异步async def/await / asyncio.gather并发 / create_task强引用防GC / run_in_executor包装同步代码
PydanticBaseModel + Field校验 / with_structured_output绑定大模型结构化输出
FastAPIDepends依赖注入 / UploadFile文件上传 / EventSourceResponse流式SSE
SQLAlchemy异步Engine/SessionFactory/Session三层 / text()+字典传参 / async with自动关连接
基础设施BaseSettings配置单例 / get_db自动commit-rollback / logging封装 / 异常基类携带agent_type

1. LlamaFactory:大模型实例统一管理

项目里有QA问答、简历审查、代码批改、主观题批改、模拟面试5个Agent,如果每个Agent都自己写ChatOpenAI(model="xxx", api_key="xxx", base_url="xxx"),问题很明显:

  • 模型配置散落在5个文件,切换模型要改5处
  • 同一个模型被重复初始化,浪费连接资源
  • 无法统一做参数调整(temperature、streaming等)

工厂模式解决这个问题:一个类统一创建和缓存模型实例,业务代码只需要调用get_lm("qa")

1.1 设计思路

命中

未命中

Agent调用 get_lm agent_type=QA

缓存中存在?