llama_index [Bug]:当在Windows中使用llamaIndex访问Ollama本地LLM服务时,会出现错误,

bbmckpt7  于 6个月前  发布在  Windows
关注(0)|答案(6)|浏览(65)

Bug 描述

在 Windows 环境下,当操作系统系统代理设置时,使用 llamaIndex 访问本地 Ollama 环境 LLM 会导致访问错误。
Httpx.HTTPStatusError:客户端错误 '403 Forbidden',URL 为 ' http://localhost:11434/api/chat '

版本

0.10.33

重现步骤

在使用 llamaIndex 访问本地 LLM 时,我遇到了一个小问题,并找到了解决方法。

问题描述:

在 Windows 环境下,当操作系统系统代理设置时,使用 llamaIndex 访问本地环境 LLM(如在 Ollama 上运行的本地 LLM)会导致访问错误。

原因:

llamaIndex 使用 httpx 访问 LLM 的 URL。
Python 中的 httpx 库默认使用系统代理设置来访问 LLM 的 web URL。
因此,Windows 系统默认使用代理访问由 Ollama 提供的本地服务,从而导致错误。

解决方案:

我通过创建一个继承自 CustomLLM 类(llma_index.core.llms.custom.CustomLLM)的子类来解决这个问题,并在调用 httpx.client 时将 [trust_env=false] 作为参数添加进去。
可能还有更好的解决方案。
我希望在封装和继承 CustomLLM 子类时,可以将 [trust_env=false] 作为初始化参数或在调用过程中保留下来,这似乎也能解决这个问题。

相关日志/回溯

  • 无响应*
cwxwcias

cwxwcias1#

嘿,@cnrevol!👋我是Dosu,你的友好邻居机器人,在这里帮助解决bug,回答你的问题,并引导你在等待人类加入对话时进行贡献。只是想说声你好,让你知道我正在深入研究LlamaIndex和Ollama本地LLM服务的问题。请稍等,我会很快给你一些见解!

vxf3dgd4

vxf3dgd42#

I don't think this is a llamaindex issue. More of an ollama/windows issue?
You can try changing the base_url in the class to point to a more windows friendly http://127.0.0.1

yzuktlbb

yzuktlbb3#

将您的llamaIndex配置中的base_url更改为http://127.0.0.1,而不是使用http://localhost,是解决您在Windows上访问本地LLM服务时遇到的问题的实际解决方案。这种方法应该可以帮助绕过导致访问错误的系统代理设置,而无需修改库的源代码或实施涉及trust_env=false的解决方法。

您最初创建子类并在httpx.client参数中设置trust_env=false的方法有效地通过防止httpx使用系统的代理设置来解决代理问题。然而,这需要修改llamaIndex库或您的实现,这可能不适合所有用户。

总之,将base_url调整为http://127.0.0.1是一种简单有效的方法,无需额外的配置或代码更改来处理代理设置即可解决访问问题。

详细信息

来源

此响应旨在帮助您节省时间并提高效率。它不是精确的解决方案,而是您自己研究的起点。
请帮助我变得更有用!如果您觉得有帮助,请留下一个👍,如果不相关,请留下一个👎。

  • 要继续对话,请提及@dosu。*
kxe2p93d

kxe2p93d4#

感谢@dosu和@logan-markewich。我尝试将base_url修改为http://127.0.0.1,但似乎仍然遇到相同的错误。
Httpx.HTTPStatusError:客户端错误 '403 Forbidden' 对于url 'http://127.0.0.1:11434/api/chat'。
还有什么是我不明白的吗?有任何错误吗?
或者这确实是一个Windows问题?
我需要进一步调查Windows代理设置控制对于外部IP、本地IP和localhost的区别......
谢谢。

ca1c2owp

ca1c2owp5#

如果你在将 base_url 更改为 http://127.0.0.1 后仍然遇到 403 Forbidden 错误,这表明问题可能不仅仅与代理设置或特定地址有关。此错误通常表示服务器理解请求但拒绝授权,这可能是由于网络配置之外的几个原因。
以下是一些重点步骤,用于故障排除并可能解决该问题:

  1. 检查CORS配置:确保你的应用程序允许来自相同源的请求,特别是如果通过浏览器访问。这对于本地开发环境至关重要。
  2. 中间件和安全设置:审查应用程序中可能拒绝请求的任何中间件或安全设置,包括API密钥、身份验证要求或IP白名单。
  3. 防火墙和网络配置:验证Windows防火墙或任何网络安全软件是否未阻止在你的应用程序运行的端口上的连接。
  4. 应用程序路由:确保你的应用程序路由正确设置以响应 /api/chat 。如果路由没有正确定义,可能会导致 403 Forbidden 错误。
  5. 调试和日志:使用日志记录来捕获关于传入请求及其可能被拒绝的原因的更多详细信息。这可以提供有关错误的特定见解。
    还重要的是确保任何应用程序特定的配置,例如与本地LLM服务的交互配置,都已正确设置。如果在检查这些区域后问题仍然存在,提供有关你的设置的更多信息,包括来自应用程序日志的特定错误消息以及对默认设置所做的任何更改,将有助于进一步诊断。
细节

来源

此响应旨在帮助你节省时间并提高效率。它不是精确解决方案,而是你自己研究的起点。
请帮助我变得更有用!如果你觉得这个回答有帮助,请留下一个👍;如果不相关,请留下一个👎。

6ljaweal

6ljaweal6#

感谢,@dosu,@logan-markewich
我尝试修改base_url为http://127.0.0.1,但似乎仍然遇到相同的错误,Httpx.HTTPStatusError:客户端错误 '403 Forbidden' 对于url 'http://127.0.0.1:11434/api/chat'。
还有什么是我不明白的吗?有任何错误吗?
或者这确实是一个Windows问题?
我需要进一步调查Windows代理设置控制对于外部IP、本地IP和本地主机的区别......
谢谢。
你好,我也遇到了类似的问题。在使用全局代理后,我无法连接到本地的Ollama服务。你找到了解决方案吗?

相关问题