我运行了一个脚本来获取 ngrok url:
import asyncio
# Set LD_LIBRARY_PATH so the system NVIDIA library
os.environ.update({'LD_LIBRARY_PATH': '/usr/lib64-nvidia'})
async def run_process(cmd):
print('>>> starting', *cmd)
p = await asyncio.subprocess.create_subprocess_exec(
*cmd,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE,
)
async def pipe(lines):
async for line in lines:
print(line.strip().decode('utf-8'))
await asyncio.gather(
pipe(p.stdout),
pipe(p.stderr),
)
await asyncio.gather(
run_process(['ngrok', 'config', 'add-authtoken','mytoken'])
)
await asyncio.gather(
run_process(['ollama', 'serve']),
run_process(['ngrok', 'http', '--log', 'stderr', '11434']),
)
之后,我在我的 MAC 终端上运行了命令
export OLLAMA_HOST = url
和
ollama pull llama2
最后,我使用 Python 运行了下面的代码:
但是它给出错误 404。
ollama = Ollama(base_url=url, model="llama2")
print(ollama("why is the sky blue"))
我尝试在 Python 上安装 ngrok 并设置身份验证令牌,我希望它可以连接到该 url。但它仍然给我404错误。
I tried to install ngrok on Python and set the auth token and I expected it can connect to the url. But it still gave me 404 error.
好的,我来解释一下如何使用 ngrok URL 运行 LangChain Ollama 并解决遇到的 404 错误。
问题分析
遇到的 404 错误表明 LangChain 无法连接到提供的 ngrok URL 上的 Ollama 实例。这可能是由以下几种原因导致的:
- ngrok 隧道未正确设置: 确保 ngrok 正确运行并将其隧道连接到本地机器上运行 Ollama 的端口(默认端口为 11434)。
- 防火墙设置: 的防火墙或安全软件可能会阻止 ngrok 隧道连接。
- Ollama 配置错误: 的 Ollama 配置可能不正确,导致无法通过 ngrok 访问。
- LangChain 代码错误: 在 LangChain 代码中提供的 URL 可能不正确,或者缺少必要的身份验证信息。
解决方案
以下是解决此问题的步骤:
-
验证 ngrok 隧道:
-
确保的 ngrok 隧道正常运行。在终端中运行
ngrok http 11434
后,应该会看到一个类似于以下内容的输出:`` Session Status online Account [的 ngrok 帐户名] (Plan: Free) Update update available (version 3.x.x, Ctrl-U to update) Version 3.x.x Region [的 ngrok 区域] (change with
ngrok config add-region ...`) Web Interface http://127.0.0.1:4040 Forwarding http://[随机字符串].ngrok.io -> http://localhost:11434 Forwarding https://[随机字符串].ngrok.io -> http://localhost:11434Connections ttl opn rt1 rt5 p50 p90 0 0 0 0 0 0
``` -
复制
Forwarding
行中显示的https
URL。这是需要在 LangChain 代码中使用的 ngrok URL。 -
检查防火墙设置:
-
确保的防火墙或安全软件允许 ngrok 隧道连接。可能需要将 ngrok 添加到白名单或暂时禁用防火墙进行测试。
-
验证 Ollama 配置:
-
确保的 Ollama 实例正在运行并监听正确的端口(默认端口为 11434)。可以通过在浏览器中访问
http://localhost:11434
来验证这一点。 -
检查的 Ollama 配置文件(默认位置为
~/.ollama/config.json
),确保没有阻止外部访问的设置。 -
更新 LangChain 代码:
-
使用从 ngrok 隧道获取的正确
https
URL 更新的 LangChain 代码:```python from langchain.llms import Ollama
ollama = Ollama(base_url="https://[随机字符串].ngrok.io", model="llama2")
print(ollama("why is the sky blue")) ```
其他建议
- 使用详细日志记录: 在的 LangChain 代码和 Ollama 配置中启用详细日志记录,以便更好地了解发生了什么。
-
逐步调试:
尝试使用
curl
或Postman
等工具直接向 ngrok URL 发送请求,以隔离问题是出在 ngrok 隧道、Ollama 实例还是 LangChain 代码中。
通过按照上述步骤,应该能够成功使用 ngrok URL 运行 LangChain Ollama 并解决 404 错误。
标签:python,ngrok,large-language-model,ollama From: 77815754