快速结论:该报错通常发生在调用 Ollama 的 /api/generate 接口时使用了 GET 请求而非 POST 请求。优先排查你的应用或脚本中实际发出的 HTTP 方法是否为 POST,并确认请求体(JSON 数据)是否正确携带。
适用环境:Windows 11、Python 3.13.0、Ollama(llama3.2:latest 模型)、Flask Web 应用、Intel CPU/GPU。
最快修复方案:暂无确认的一步修复方案。但根据 Issue 验证结果,curl 使用 -d 参数时会自动切换为 POST 请求,能够正常返回 200 响应;因此请检查你的 Python 代码中 requests.post() 是否确实发出的是 POST 请求,并确认没有其他中间层或代理将请求转换为 GET。
注意事项:Ollama 维护者指出 GET /api/generate 不是合法端点,返回 404 是预期行为(可能未来会改为返回 405)。Issue 作者尚未确认其 Flask 应用中的具体问题来源,因此若你的代码已使用 POST 仍报错,需要进一步检查应用层的请求转发或代理配置。
问题场景
用户在 Windows 11 系统上使用 Python 3.13.0 运行一个基于 Flask 的 Web 应用,该应用通过 requests.post() 调用本地 Ollama 服务的 http://localhost:11434/api/generate 接口来生成 text-to-SQL 结果。虽然 Ollama 服务本身可以正常运行(curl http://localhost:11434 返回 “Ollama is running”),但应用调用时却抛出了 404 错误。
报错原文
Error: 404 Client Error: Not Found for url: http://localhost:11434/api/generate
原因分析
根据 Issue 中的验证过程,Ollama 的 /api/generate 端点只接受 POST 请求。当使用 curl 直接访问该 URL 而不带 -d 参数时,curl 默认发送 GET 请求,Ollama 返回 404 “404 page not found”。这一行为与你在 Flask 应用中遇到的错误一致。
可能原因包括:
- 应用或某个中间件/代理将
requests.post()实际发出的请求转换成了 GET 请求。 - 应用的请求 URL 拼写错误或路径不正确。
- 请求在到达 Ollama 前被某个反向代理或网关拦截并重写,导致请求方法或路径被修改。
值得注意的是,Issue 作者复制了用户提供的 Python 代码片段在本地独立运行(非 Flask 环境)时一切正常,说明 Ollama 服务本身没有问题,问题很可能出在 Flask 应用的上下文或环境配置中。
环境排查
- 确认 Ollama 服务的运行状态和版本(Issue 中未提供具体版本号)。
- 检查 Python 版本是否为 3.13.0,以及 requests 库版本。
- 确认 Ollama 服务是否监听在 localhost:11434,且未被防火墙或安全软件拦截。
- 检查 Flask 应用是否通过代理服务器(如 Nginx、Apache)对外提供服务,如果是,需验证代理配置是否正确转发 POST 请求到 Ollama。
解决步骤
- 使用 curl 直接验证 Ollama 接口:
curl -D - http://localhost:11434/api/generate -d "{\"model\":\"llama3.2:latest\",\"prompt\":\"hi\",\"stream\":false}"
如果返回 HTTP/1.1 200 OK 以及 JSON 响应,说明 Ollama 本身工作正常。 - 在 Flask 应用中添加调试日志,在发起请求前打印请求方法(
response.request.method)和完整 URL,确认实际发送的是 POST。 - 检查 Flask 应用的路由配置,确保没有将包含
/api/generate的请求路由到其他处理函数。 - 如果 Flask 应用部署在代理后面,检查代理配置(如 Nginx 的
proxy_pass)是否保持了原始请求方法。 - 尝试在代码中显式指定请求头和参数,避免使用默认值:
requests.post(url, json={...}, headers={'Content-Type': 'application/json'})
验证方法
在 Flask 应用中添加打印语句,输出 response.status_code 和 response.text。如果返回 200 且包含模型生成的响应内容,即表示问题已解决。另外,可以通过 Ollama 的服务端日志观察每次请求是否被正确接收并返回 200。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[bug]: InvokeAI v6.14.0-RC1 Crashed while generating Krea-2 Image](https://www.chat-gpts.plus/wp-content/uploads/2026/09/9444-d6bdc60c-768x403.jpg)
![[Question]: Shared embedded chat URL fails to access documents after logout or when accessed by other users](https://www.chat-gpts.plus/wp-content/uploads/2026/09/15895-cf3f7033-768x403.jpg)
