由于jinja2的starlette版本过高引发的问题:500 Server Error TypeError: unhashable type: 'dict'

一、先看问题:

HTML网页和路由都写好后,本以为通过浏览器能正常访问,结果报了个Internal Server Error错误,网页一片空白:

二、解决问题

为了能看到更多的报错信息,直接在FastAPI实例里加入debug=True这句。

ini 复制代码
app = FastAPI(
    title = "智能语音AI代理",
    description= "提供预约管理、智能咨询、用户行为分析等功能的API服务",
    version="1.0.0",
    docs_url="/docs",
    redoc_url="/redoc",
    debug=True
)

加了debug后浏览器能看到更具体的报错信息,如下图:

找AI问了半天发现是因为我的Starlette是 1.3.1 版本,Jinja2Templates的TemplateResponse返回值的写法变了。问题就出在web路由这里

python 复制代码
@router.get("/test_knowledge_management", response_class=HTMLResponse, summary="知识库测试界面")
async def knowledge_test_page1(request: Request):
    """知识库测试界面"""
    return templates.TemplateResponse("test_knowledge_management.html",{"request": request})

老版本的写法可以用templates.TemplateResponse("test_knowledge_management.html", {"request": request}),但是新版本里TemplateResponse的第一个参数必须是request,改成下面这种写法就能正常访问了:

python 复制代码
@router.get("/test_knowledge_management", response_class=HTMLResponse, summary="知识库测试界面")
async def knowledge_test_page1(request: Request):
    """知识库测试界面"""
    return templates.TemplateResponse(request,"test_knowledge_management.html",{"request": request})

三、关于AI工具使用的感想

此次解决的这个问题全程使用AI助手帮忙分析原因,说实话确实好用能帮我们省下很多时间和精力,但使用过程中也发现了一些问题:

1、AI分析的准确性跟你提供给他的问题数据和你的问题描述有很大的关系,如何陈述自己的问题决定了能否快速地找到问题的根本原因,prompt还是得好好写。

2、AI分析问题其实有很大的局限性,它只能对你当前提交的内容进行分析,它不了解整个项目的架构,没法按照项目的实际情况去分析,有时候给出的分析结果可能并不理想。

相关推荐
xiami_world9 小时前
Xmind、Miro、博思白板AI怎么选?思维导图/流程图自动生成
人工智能·ai·信息可视化·流程图·xmind
wp123_19 小时前
圆盘拨动电位器机电转换原理,国内外产品性能与成本比拼
人工智能·科技·硬件工程
蜡台10 小时前
AI Agent 架构终极教程:从原理分层、四大范式到生产级落地实战
网络·人工智能·架构
乐维_lwops10 小时前
2026选择运维监控系统时应该重点考察哪些功能?
大数据·运维·人工智能
小新科研测评10 小时前
文献管理工具同步太麻烦?2026年4款多端同步工具实测,换设备不丢笔记
论文阅读·人工智能·笔记·ai·电脑
EchoMind-Henry10 小时前
DeepSeek换个位置,检索准确率差40.2个百分点?
人工智能·机器学习
ifenxi爱分析10 小时前
爱分析发布《2026 爱分析·Data+AI应用实践报告》
大数据·人工智能
Thuni_soft10 小时前
华宇亮相2026药品数智发展大会:AI助推医疗器械审评审批提质增效
大数据·人工智能
通信大模型10 小时前
Aerial Agentic AI:面向低空无线网络的 LLM 与 SLM 协同框架
人工智能