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

📅 2026/7/5 2:39:12
模型工厂、三层容错装饰器与JWT认证:从基础设施到可用服务
2026-07-03 · 第三章收官 · LlamaFactory统一模型管理 + 容错装饰器 + JWT无状态认证0. 上下文衔接Day 3 完成了基础设施层:config配置中心、SQLAlchemy异步连接、get_db会话注入、结构化日志、统一异常体系。今天在这些地基上砌墙,解决三个核心问题:模型怎么管:5个Agent每个都要初始化LLM客户端,参数重复、无法统一切换模型 → LlamaFactory工厂模式出错怎么办:大模型API超时/限流/网络抖动是常态,不能直接500 → 三层兜底装饰器用户怎么认证:接口不能裸奔,需要登录鉴权 → JWT + bcryptDay 5+ 业务AgentDay 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流式SSESQLAlchemy异步Engine/SessionFactory/Session三层 / text()+字典传参 / async with自动关连接基础设施BaseSettings配置单例 / get_db自动commit-rollback / logging封装 / 异常基类携带agent_type1. 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缓存中存在?