网易首页 > 网易号 > 正文 申请入驻

FastAPI+大模型项目:我如何用5层架构扛过3个月需求变更

0
分享至

三年前我会直接写路由代码。现在先问:这个项目3个月后怎么崩?

特别是接了大模型(LLM)之后,崩的方式更花哨。这篇分享一个真实房产咨询系统的后端架构——不是Demo,是扛过需求变更的代码结构。


从Express惯性到FastAPI的陷阱

Node.js老玩家熟悉这套:routes/、controllers/、services/、models/。灵活,简单,烂起来也快。

FastAPI给的是另一套问题:工具很强,结构零意见。结果就是代码长成这样——

api/、core/、llm/、models/、repositories/、schemas/、utils/

一旦LLM介入,混乱指数翻倍。用户输入→模型解析→结构化输出,每一步都可能出戏。

这个项目的需求很典型:收集用户偏好,用大模型理解意图,指导房产搜索。不是纯CRUD,有状态、有推理、有外部依赖。

第一层:API层,故意写得很无聊

路径:api/v1/endpoints/

代码长这样:

@router.post("/intake")

def create_intake(...):

return intake_repo.create(...)

没有业务逻辑,没有模型调用,纯路由。作者的原话:「Keep It Boring」。

这层只干一件事——接收请求、校验参数、转发给下层。好处是后期换LLM提供商、改解析策略,路由文件不用动。

很多项目崩在这:路由里塞prompt工程,结果一个接口改五遍,上下游全乱。

第二层:Core,整个系统的地基

core/目录下放全局配置、数据库连接、异常处理。所有跨模块的依赖都在这里初始化,不让具体业务代码操心。

关键设计:LLM不是工具函数,是独立领域。

core/llm/的结构:

intake/

prompts.py

schema.py

service.py

providers/

prompts.py管提示词模板,schema.py管输出结构,service.py管调用逻辑。providers/封装不同厂商的API差异。

调用方式:llm_intake_service.parse_user_input(text)

为什么拆这么细?prompt版本迭代比业务代码快十倍。把提示词硬编码在路由里,两周后就成屎山。

第三层:数据层,模型与仓库分离

models/ → 数据库表结构定义

repositories/ → 查询逻辑封装

作者从Express带来的教训:ORM模型直接塞查询,测试时想mock数据库,发现耦合死在代码里。

现在repository层是纯粹的数据访问接口,单元测试可以整体替换掉。LLM输出要入库?走repository,不走模型裸调。

第四层:Schemas,LLM的救命稻草

schemas/目录原本是给Pydantic校验用的。但LLM场景下,它成了关键基础设施。

流程变成:

User Input → LLM Prompt → LLM Response → Schema Validation → Structured Data

大模型输出是概率性的,今天能解析的JSON明天可能缺个字段。Schema校验是最后一道防线,崩了能catch住、能重试、能打日志。

作者没明说但藏在这的设计:schema同时服务两个主人——API接口契约和LLM输出约束。一份代码,两处收益。

第五层:Utils,别急着往里塞

utils/目录存在,但作者警告:好地方,也是垃圾堆。

适合放的:通用文本处理、日期格式化、重试装饰器。不适合:业务逻辑、临时补丁、「以后整理」的代码。

一个判断标准:如果某个函数只在LLM模块用,就留在llm/里。utils/的东西必须跨模块通用,否则就是假复用。

架构的隐藏收益

这套结构跑3个月后,作者发现个意外好处:换LLM供应商只改providers/目录,业务代码零感知。从OpenAI切到Claude,半天搞定。

prompt迭代更夸张:A/B测试直接改prompts.py,回滚秒级。如果提示词焊死在路由里,这种灵活性想都别想。

最后一句实话:没有架构能阻止项目崩,但好的结构能让崩的时候知道该修哪。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
实在没法搞了!美菲军演提前结束,两艘中国815A围着演习转

实在没法搞了!美菲军演提前结束,两艘中国815A围着演习转

轩逸阿II
2026-04-30 10:04:28
万万没想到,当着特朗普的面,77岁的老国王给了美国人一个下马威

万万没想到,当着特朗普的面,77岁的老国王给了美国人一个下马威

娱说瑜悦
2026-04-30 15:24:30
以色列海军拦截“全球坚韧船队”,扣押约175名活动人士

以色列海军拦截“全球坚韧船队”,扣押约175名活动人士

界面新闻
2026-04-30 16:02:32
96年女生在远洋货轮当大副月入6.8万元:最长出海18个月,即便生理期也要做好自己的工作,需要面对生理和心理的双重挑战

96年女生在远洋货轮当大副月入6.8万元:最长出海18个月,即便生理期也要做好自己的工作,需要面对生理和心理的双重挑战

大风新闻
2026-04-30 09:40:04
尤伯杯最新战报!国羽赢首盘,王祉怡2-0横扫,圣坛组合半程11-4

尤伯杯最新战报!国羽赢首盘,王祉怡2-0横扫,圣坛组合半程11-4

刘姚尧的文字城堡
2026-04-30 17:29:01
海关查获7个女王凤凰螺,内藏宝珠曾卖2400万!至今人工无法养殖

海关查获7个女王凤凰螺,内藏宝珠曾卖2400万!至今人工无法养殖

狸猫之一的动物圈
2026-04-30 11:45:54
曝穆里尼奥即将重返皇马!上任第一件事大清洗,8 名球星或将走人

曝穆里尼奥即将重返皇马!上任第一件事大清洗,8 名球星或将走人

澜归序
2026-04-30 05:03:58
骑士3-2猛龙!米切尔直言不讳,哈登赛后一番表态也成重中之重

骑士3-2猛龙!米切尔直言不讳,哈登赛后一番表态也成重中之重

鱼崖大话篮球
2026-04-30 16:00:22
美国现任防长曾谈中美开战:11艘航母打击中国,20分钟后1艘不剩

美国现任防长曾谈中美开战:11艘航母打击中国,20分钟后1艘不剩

蜉蝣说
2026-04-28 11:14:47
霍启山捧场杨受成长子夜店,俩阔少把酒言欢,58岁杨其龙样子沧桑

霍启山捧场杨受成长子夜店,俩阔少把酒言欢,58岁杨其龙样子沧桑

树娃
2026-04-30 14:14:16
斯诺克世锦赛赛程!希金斯vs墨菲20点开打,吴宜泽vs艾伦2点进行

斯诺克世锦赛赛程!希金斯vs墨菲20点开打,吴宜泽vs艾伦2点进行

林子说事
2026-04-30 16:54:52
直降1400元!iPhone 17 Pro Max 降价,上市以来新低

直降1400元!iPhone 17 Pro Max 降价,上市以来新低

科技堡垒
2026-04-30 09:34:03
39岁郑欣宜体重暴跌、长相变化巨大,几乎没人能认出来

39岁郑欣宜体重暴跌、长相变化巨大,几乎没人能认出来

草莓解说体育
2026-04-30 18:22:14
王毅刚走,泰国拍板一万亿超级工程!中国将多一条高效便捷的通道

王毅刚走,泰国拍板一万亿超级工程!中国将多一条高效便捷的通道

你是我心中最美星空
2026-04-30 09:06:39
美国一学生打断以色列士兵演讲,当众怒斥以军:6岁女孩被打335枪,超70000巴勒斯坦人被杀,你们犯下的暴行终将被清算

美国一学生打断以色列士兵演讲,当众怒斥以军:6岁女孩被打335枪,超70000巴勒斯坦人被杀,你们犯下的暴行终将被清算

大象新闻
2026-04-28 23:48:20
中国"绝不谈判"!光刻机封锁,全球谁急?一台光刻机能有多贵?

中国"绝不谈判"!光刻机封锁,全球谁急?一台光刻机能有多贵?

潮鹿逐梦
2026-04-28 14:47:26
为何我国会放弃遍地翡翠,富产金丝楠木,价值抵百个香港的江心坡

为何我国会放弃遍地翡翠,富产金丝楠木,价值抵百个香港的江心坡

抽象派大师
2026-04-30 00:17:23
蔡一杰脑癌扩散!59岁频繁回内地农村老家,重温童年时光

蔡一杰脑癌扩散!59岁频繁回内地农村老家,重温童年时光

原梦叁生
2026-04-30 08:10:48
张雪峰的团队快散了

张雪峰的团队快散了

犀利强哥
2026-04-29 21:07:20
广东德比G2赛前:杜锋立下军令状,龙狮官宣好消息,球迷感慨真强

广东德比G2赛前:杜锋立下军令状,龙狮官宣好消息,球迷感慨真强

宏远小师哥
2026-04-30 08:40:20
2026-04-30 19:56:49
摸鱼算法
摸鱼算法
致力于用最前沿的AI技术,换取更多发呆时间的三十岁青年。
2000文章数 20关注度
往期回顾 全部

科技要闻

9000亿美元估值,Anthropic即将反超OpenAI

头条要闻

大连男子2859.2克黄金被扣押30年 最新进展来了

头条要闻

大连男子2859.2克黄金被扣押30年 最新进展来了

体育要闻

季后赛场均5.4分,他凭啥在骑士打首发?

娱乐要闻

孙杨博士学历有问题?官方含糊其辞

财经要闻

易会满被“双开”!

汽车要闻

专访捷途汪如生:捷途双线作战 全球化全面落地

态度原创

数码
家居
教育
艺术
军事航空

数码要闻

2026首选!HyperX 暗影精灵 PRO 16 锐龙版240Hz电竞实测

家居要闻

灵动实用 生活艺术场

教育要闻

孩子到底能不能打?如何更科学地打孩子?从4维空间深入解读

艺术要闻

安东·爱德华·基尔德鲁普:19世纪丹麦风景画家

军事要闻

意大利议会批准:捐赠航母给印度尼西亚

无障碍浏览 进入关怀版