首页 > 编程问答 >如何使用ngrok url运行LangChain Ollama?

如何使用ngrok url运行LangChain Ollama?

时间:2024-07-21 00:56:12浏览次数:9  
标签:python ngrok large-language-model ollama

我运行了一个脚本来获取 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 可能不正确,或者缺少必要的身份验证信息。

解决方案

以下是解决此问题的步骤:

  1. 验证 ngrok 隧道:

  2. 确保的 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:11434

    Connections ttl opn rt1 rt5 p50 p90 0 0 0 0 0 0
    ```

  3. 复制 Forwarding 行中显示的 https URL。这是需要在 LangChain 代码中使用的 ngrok URL。

  4. 检查防火墙设置:

  5. 确保的防火墙或安全软件允许 ngrok 隧道连接。可能需要将 ngrok 添加到白名单或暂时禁用防火墙进行测试。

  6. 验证 Ollama 配置:

  7. 确保的 Ollama 实例正在运行并监听正确的端口(默认端口为 11434)。可以通过在浏览器中访问 http://localhost:11434 来验证这一点。

  8. 检查的 Ollama 配置文件(默认位置为 ~/.ollama/config.json ),确保没有阻止外部访问的设置。

  9. 更新 LangChain 代码:

  10. 使用从 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

相关文章

  • Python pandas to_csv 导致 OSError: [Errno 22] 参数无效
    我的代码如下:importpandasaspdimportnumpyasnpdf=pd.read_csv("path/to/my/infile.csv")df=df.sort_values(['distance','time'])df.to_csv("path/to/my/outfile.csv")此代码成功从infile.csv(一个3GBcsv文件)读取数据,对其进行排......
  • 从 python 中的字符串列表中提取 def 定义函数的标签
    我想使用Python中的正常def过程创建函数,并将标签分配给从字符串列表中提取的命名空间。如何实现这一点?这个问题的动机:我正在创建一个与sympy兼容的python函数库,供数学家用于符号计算实验。许多函数需要初始化具有相关标签的多个对象的系统,这些标签分别由用户提供的字......
  • 在 Raspberry Pi 4 上使用 Python 从具有 SPI 连接的 MT6816 磁性编码器读取
    我对这个领域完全陌生,并不真正知道自己在做什么并且需要帮助。我正在尝试使用MT681614位磁性编码器通过RaspberryPi的SPI连接读取绝对角度。我有以下问题:在硬件方面,是否只是简单地连接必要的连接(3.3V、MOSI、MISO、SCK、GND、CE01)?对于编码......
  • PythonW 不运行脚本。严重地
    因此,使用Windows10和Python3.6。我创建了一个.py脚本,它可以使用命令pythonmyscript.py在命令提示符下正常运行,但是当我制作该脚本的精确副本并为其赋予扩展名.pyw,并尝试使用pythonw运行它时命令pythonwmyscript.pyw,什么也没有发生......
  • 如何使用Python和Selenium模拟产品购买以获取库存信息
    我正在开发一项网络抓取服务,主要针对时尚行业。我的目标是提供有关产品的全面数据,包括库存水平。为了实现这一目标,我需要模拟购买以确定每种尺寸的产品的最大可用数量。我一直在使用Python和Selenium进行网络抓取部分,但在准确模拟购买方面面临着挑战检索股票信息的过程。......
  • 连接Python套接字的问题
    当我写“关闭”时,我试图让我的电报机器人关闭计算机。我不想将机器人连接到网站上的托管。我选择我的手机(AndroidRedmiNote10)作为托管。我在上面安装了Termux和Pydroid。我写了两个文件:main到我的电脑,client到我的手机。通过在计算机上运行这两个文件,一切正常。但是,当我在......
  • 如何修复导入 Numexpr Python 时的错误
    在Windows10Python3.7.9(IDLE)上,我成功安装了“pipinstallnumexpr”,但在“importnumexprasne”时出现错误:Traceback(最近一次调用):文件“<pyshell#21>”,第267行,位于将numexpr导入为ne文件“C:\Python379\lib\site-packages\numexpr_init_.py”......
  • 让 cpython 优化恒定条件
    我正在用Python编写需要尽可能高效运行的代码,但有时我需要深入挖掘调试语句。不要注释这些输入或输出(或者使用外部预处理器来处理代码,就像这里建议的那样Python相当于#ifdefDEBUG或这里如何在python中实现“#ifdef”?|||)我想在模块的开头定义一个变量......
  • 如何使用 for 循环在 python jupyter 笔记本中创建动态图?
    我正在学习本课关于用Python求解热方程。该课程指出,在求解热方程后,我们可以通过在循环中简单地调用pyplot.plot()来可视化解的动画图,其中下面的代码将动态绘制每次每个点的温度,从而得到一个动画情节(课程帖子中提供了动画情节的示例)。importnumpyfrommatplotlibi......
  • Python:动态爱心代码
    importrandomfrommathimportsin,cos,pi,logfromtkinterimport*CANVAS_WIDTH=640CANVAS_HEIGHT=480CANVAS_CENTER_X=CANVAS_WIDTH/2CANVAS_CENTER_Y=CANVAS_HEIGHT/2IMAGE_ENLARGE=11HEART_COLOR="#FF99CC"defcenter_......