ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

在 GPT Researcher 中接入 Ollama:本地与云端部署自定义 LLM 的完整指南

在 GPT Researcher 中接入 Ollama:本地与云端部署自定义 LLM 的完整指南 在 GPT Researcher 中接入 Ollama本地与云端部署自定义 LLM 的完整指南【免费下载链接】gpt-researcherAn autonomous agent that conducts deep research on any data using any LLM providers项目地址: https://gitcode.com/GitHub_Trending/gp/gpt-researcherOllama 是一个用于部署和管理自定义大语言模型的平台GPT Researcher 通过ollama前缀同时支持其 LLM 与 Embedding 模型让你可以在完全本地、无外部 API 依赖的环境下完成深度研究报告的全流程推理。本指南将从模型拉取、.env环境变量配置、云端Elestio部署、连通性测试到认证关闭的完整链路带你一步步把 GPT Researcher 的「写作/规划 LLM」与「向量化 Embedding」全部切换到 Ollama 自托管模型并基于仓库源码说明每个配置项背后的实际生效逻辑。一、Ollama 与 GPT Researcher 的集成原理源码级在动手配置之前先理解 GPT Researcher 是如何与 Ollama 打交道的。项目通过统一的GenericLLMProvider.from_provider()工厂方法分发各 LLM 提供商在 gpt_researcher/llm_provider/generic/base.py 中可以看到ollama分支elif provider ollama: _check_pkg(langchain_community) _check_pkg(langchain_ollama) from langchain_ollama import ChatOllama # Use OLLAMA_BASE_URL from env if not already supplied in kwargs; # fall back to the Ollama default so OLLAMA_BASE_URL is optional. if base_url not in kwargs: kwargs[base_url] os.environ.get(OLLAMA_BASE_URL, http://localhost:11434) llm ChatOllama(**kwargs)两个关键事实由此得到确认OLLAMA_BASE_URL是可选的当你不设置它时源码会回退到 Ollama 的默认地址http://localhost:11434一旦在.env中指定则以你的配置为准这也是本地部署与云端部署切换的开关。依赖是必需的运行ollama前缀的 LLM 需要安装langchain-ollama与langchain-community这两者已写入仓库根目录的 requirements.txtlangchain-ollama1.0.0、langchain-community0.4.0另外还包含官方客户端ollama0.4.8因此正常pip install -r requirements.txt后即可直接使用。Embedding 侧同理在 gpt_researcher/memory/embeddings.py 中case ollama: from langchain_ollama import OllamaEmbeddings _embeddings OllamaEmbeddings( modelmodel, base_urlos.environ[OLLAMA_BASE_URL], **embedding_kwargs, )注意这里的差异Embedding 分支必须显式提供OLLAMA_BASE_URL直接读取环境变量无默认回退所以只要你想用 Ollama 做向量化OLLAMA_BASE_URL就是必填项。而「LLM 用 ollama、Embedding 用 ollama」的组合可以在 docs/docs/gpt-researcher/llms/llms.md 的通用 Ollama 章节看到最简配置OLLAMA_BASE_URLhttp://localhost:11434 FAST_LLMollama:llama3 SMART_LLMollama:llama3 STRATEGIC_LLMollama:llama3 EMBEDDINGollama:nomic-embed-text二、第一步获取并拉取所需的 LLM 模型在配置 GPT Researcher 之前先要让 Ollama 服务器上就位你需要的模型。你可以在 Open WebUI 管理界面中下载自定义 LLM也可以直接用 Ollama 命令行拉取准备 Ollama 服务本地环境请先安装并启动 Ollama默认监听11434端口云端环境可部署 Open WebUI 后通过其 Admin App 管理模型。选择模型从 Ollama 官方模型库按流行度挑选一个聊天模型和一个 Embedding 模型。以本指南为例聊天模型qwen2:1.5b一个轻量级的 Chat Completion 模型适合快速验证链路Embedding 模型nomic-embed-text用于语义向量化。执行拉取命令行方式为ollama pull qwen2:1.5b与ollama pull nomic-embed-text使用 Open WebUI 时在界面上粘贴模型名称与尺寸即可完成下载。模型拉取完成后它会自动通过你服务器自带的 API 暴露出来GPT Researcher 无需任何额外「注册」步骤只需在下一步的.env文件中引用即可。三、第二步在本地用.env将 GPT Researcher 指向 Ollama如果你在本地部署 Ollama一个形如下面的.env配置即可让 GPT Researcher 完全由 Ollama 驱动OPENAI_API_KEY123 OPENAI_API_BASEhttp://127.0.0.1:11434/v1 OLLAMA_BASE_URLhttp://127.0.0.1:11434/ FAST_LLMollama:qwen2:1.5b SMART_LLMollama:qwen2:1.5b STRATEGIC_LLMollama:qwen2:1.5b EMBEDDING_PROVIDERollama OLLAMA_EMBEDDING_MODELnomic-embed-text把FAST_LLM与SMART_LLM替换为你上一步实际下载的模型名即可STRATEGIC_LLM同理它是负责研究规划与子问题拆解的模型也建议一并指向同一模型。逐项拆解这些环境变量结合 gpt_researcher/config/config.py 的实现可以更精确地理解每一项的作用FAST_LLM/SMART_LLM/STRATEGIC_LLM格式统一为provider:model。Config._set_llm_attributes()调用parse_llm()见 config.py将字符串按第一个冒号拆分为(provider, model)并校验 provider 必须存在于_SUPPORTED_PROVIDERS集合其中包含ollama。若格式错误会抛出Set SMART_LLM or FAST_LLM llm_provider:llm_model的提示。OLLAMA_BASE_URLOllama 服务的根地址。如前所述LLM 侧缺省时回退http://localhost:11434Embedding 侧为必填。OPENAI_API_BASEOllama 同时提供了 OpenAI 兼容的/v1端点此变量用于「通过 OpenAI 协议访问 Ollama」的场景见第五节云端示例。需要说明的是当前仓库源码中 OpenAI 兼容地址的环境变量名统一为OPENAI_BASE_URL见 gpt_researcher/utils/llm.py 与 base.py 中对openai_api_base的处理当FAST_LLM前缀为ollama:时走的是ChatOllama通道、与OPENAI_API_BASE无关只有当前缀为openai:时才走 OpenAI 兼容通道。EMBEDDING_PROVIDER与OLLAMA_EMBEDDING_MODEL这是文档沿用的旧式写法。当前仓库已在Config._handle_deprecated_attributes()config.py中将EMBEDDING_PROVIDER标记为 deprecated 并给出FutureWarning建议改用统一的新式变量EMBEDDINGollama:nomic-embed-text新式写法EMBEDDINGollama:nomic-embed-text由parse_embedding()解析为(embedding_provider, embedding_model)两个字段与 gpt_researcher/config/variables/default.py 中默认值EMBEDDING: openai:text-embedding-3-small的格式完全一致。旧式写法目前仍可用EMBEDDING_PROVIDERollama时会自动把OLLAMA_EMBEDDING_MODEL作为 embedding model但新项目建议直接使用EMBEDDING。四、在 Elestio 上云端部署 Ollama如果你希望把 Ollama 部署在云端例如通过 Elestio 一键部署 Open WebUI Ollama 的托管服务部署完成后会得到一个专属域名。此时.env中所有地址都要换成该域名例如OPENAI_API_KEY123 OPENAI_API_BASEhttps://ollama-2d52b-u21899.vm.elestio.app:57987/v1 OLLAMA_BASE_URLhttps://ollama-2d52b-u21899.vm.elestio.app:57987/ FAST_LLMopenai:qwen2.5 SMART_LLMopenai:qwen2.5 STRATEGIC_LLMopenai:qwen2.5 EMBEDDING_PROVIDERollama OLLAMA_EMBEDDING_MODELnomic-embed-text与本地配置的两个关键差异Base URL 换成云端域名把127.0.0.1替换为你的 Elestio 服务域名与端口。LLM 前缀从ollama:换成openai:云端场景下模型名qwen2.5通过 Ollama 的 OpenAI 兼容端点暴露因此 GPT Researcher 以 OpenAI 协议访问此时生效的是OPENAI_API_BASE注意当前源码中该协议变量的实际名称是OPENAI_BASE_URL。Embedding 则仍走OLLAMA_BASE_URL原生端点。验证你指向的 API 地址是否正确在终端中运行域名解析命令确认域名可解析且端口可达nslookup ollama-2d52b-u21899.vm.elestio.app如果域名解析结果与你预期一致返回了对应的 IP 记录说明地址配置无误可以进入下一步连通性测试。五、运行 LLM 测试脚本验证连通性仓库提供了现成的连通性测试脚本 tests/test-your-llm.py其核心逻辑是调用create_chat_completion()向Config中解析出的smart_llm发起一次带流式输出的聊天请求from gpt_researcher.config.config import Config from gpt_researcher.utils.llm import create_chat_completion import asyncio from dotenv import load_dotenv load_dotenv() async def main(): cfg Config() try: report await create_chat_completion( modelcfg.smart_llm_model, messages [{role: user, content: sup?}], temperature0.35, llm_providercfg.smart_llm_provider, streamTrue, max_tokenscfg.smart_token_limit, llm_kwargscfg.llm_kwargs ) except Exception as e: print(fError in calling LLM: {e}) # Run the async function asyncio.run(main())脚本的调用链印证了配置到执行的全过程Config()读取环境变量并解析出smart_llm_provider与smart_llm_model即SMART_LLMollama:qwen2:1.5b拆分后的结果随后 gpt_researcher/utils/llm.py 中的create_chat_completion()通过GenericLLMProvider.from_provider()实例化对应的ChatOllama最终调用get_chat_response()拿到流式响应。执行步骤Step 1在.env中设置好上一节的值注意若使用云端域名务必用你自己的自定义域名替换示例中的 base URL例如 Web 应用在浏览器中可通过https://ollama-2d52b-u21899.vm.elestio.app/访问则.env中就用这个值。Step 2在项目根目录执行cd tests python -m test-your-llmStep 3看到类似下面的 LLM 回复即表示接入成功Sup! How can I assist you today? Feel free to ask me any questions or let me know if you need help with anything.如果抛出异常脚本会打印Error in calling LLM: ...常见排查方向包括OLLAMA_BASE_URL端口不通、模型名拼写与 Ollama 中实际拉取的 tag 不一致、依赖langchain-ollama未安装等。完整的同款脚本说明也可参考 docs/docs/gpt-researcher/llms/testing-your-llm.md。六、关闭云端基础认证或保留并注入认证头Elestio 托管的服务默认带有 HTTP Basic Auth这会导致 GPT Researcher 的请求被拒绝。要移除基础认证进入 Elestio 管理面板中该服务的Security页面按以下步骤操作Step 1禁用 Firewall。Step 2编辑你的 Nginx 配置将下面两行注释掉或删除auth_basic Authentication; auth_basic_user_file /etc/nginx/conf.d/.htpasswd;Step 3点击Update Restart按钮应用 Nginx 变更。完成这三步后服务不再要求 Basic AuthGPT Researcher 即可直接访问。如果你不希望关闭认证则需要在请求中额外携带认证头Auth Headers——即保留 Nginx 的auth_basic配置同时在客户端请求中正确传递 Basic 认证信息以通过网关校验。七、进阶配置与注意事项1. Granite 系列模型的专用 Prompt 格式若你选择 Ollama 生态中的 Granite 系列模型GPT Researcher 为其定制了专属提示词格式需要额外设置PROMPT_FAMILYgranite见 llms.mdOLLAMA_BASE_URLhttp://localhost:11434 FAST_LLMollama:granite3.3:2b SMART_LLMollama:granite3.3:8b STRATEGIC_LLMollama:granite3.3:8b PROMPT_FAMILYgranite2. 模型规模与 Token 限制项目默认在 default.py 中设置了FAST_TOKEN_LIMIT6000、SMART_TOKEN_LIMIT12000、STRATEGIC_TOKEN_LIMIT8000。本地小模型如qwen2:1.5b上下文窗口有限若研究过程触发上下文截断可通过环境变量如SMART_TOKEN_LIMIT按模型能力调整同时小模型在复杂规划任务上的表现可能与云端大模型有差距建议先跑通链路再评估是否升级模型。另外create_chat_completion()内置了最多 10 次的重试与退避逻辑见 utils/llm.py本地模型偶发超时不会直接导致任务失败。3. 一条命令即可切换回云端模型由于所有配置都集中在.env从本地 Ollama 切回 OpenAI 只需把三行 LLM 变量与 Embedding 变量改回云端值并还原 API KeyConfig在启动时会重新解析无需改动任何代码——这正是「provider:model」设计带来的可移植性。八、总结完整接入 Ollama 的核心链路可归纳为四步拉模型 → 改.envFAST_LLM/SMART_LLM/STRATEGIC_LLM用ollaya前缀、OLLAMA_BASE_URL指向服务、Embedding 用ollama:nomic-embed-text→ 云端部署时替换域名并按需关闭 Basic Auth → 运行 tests/test-your-llm.py 验证。在此基础上本文还补充了源码级的生效机制parse_llm/parse_embedding解析、ChatOllama/OllamaEmbeddings的 base_url 处理、EMBEDDING_PROVIDER的废弃说明以及 Granite 提示词、Token 限制等进阶要点帮助你从「跑通」走向「按需调优」。【免费下载链接】gpt-researcherAn autonomous agent that conducts deep research on any data using any LLM providers项目地址: https://gitcode.com/GitHub_Trending/gp/gpt-researcher创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表