GPT4All API Server 如何启用 LocalDocs 并从 API 响应中读取 references
【免费下载链接】gpt4allGPT4All: Run Local LLMs on Any Device. Open-source and available for commercial use.项目地址: https://gitcode.com/GitHub_Trending/gp/gpt4all
GPT4All 自带的本地 API server 可以把本地 LLM 以 OpenAI 兼容的 HTTP API 暴露出来。如果你的目标是让本地模型基于你自己的文档作答,并且在 API 响应中拿到它实际引用的文档片段,就需要给 API server 绑定一个 LocalDocs 集合。整个过程都要求在已安装并运行 GPT4All 桌面应用、且至少下载好一个模型的机器上完成;需要注意,LocalDocs 目前只能通过 GPT4All UI 激活,不能通过 API 本身开启。
1. 启用本地 API server
在 GPT4All 应用中操作:
- 打开
Settings>Application,向下滚动到Advanced。 - 勾选
"Enable Local API Server"(Settings 文档 的设置表中,同一开关列为Enable Local Server,默认Off)。 - 服务默认监听 4891 端口;如需换端口,在
"API Server Port"设置中修改(默认4891)。
启用后,server 的 base URL 是http://localhost:4891/v1(换过端口则替换为http://localhost:<PORT_NUM>/v1)。server 只接受 HTTP 连接(不是 HTTPS),且只监听 localhost(127.0.0.1),不响应 IPv6 的::1地址。
可以先用/v1/models端点确认服务可用并查看模型列表:
curl http://localhost:4891/v1/models2. 创建 LocalDocs 集合
LocalDocs 集合是你给 LLM 提供上下文的文件来源,先按 LocalDocs 文档 建好一个集合:
- 点击
+ Add Collection。 - 给集合命名,并把它关联到一个文件夹。
- 点击
Create Collection,LocalDocs 页面会显示该集合的索引进度。 - 整个集合就绪后会出现绿色的
Ready指示;在完全就绪之前,已经就绪的文件部分也可以继续使用。
默认情况下只有.txt、.pdf、.md、.rst这些文件类型会被索引进 LocalDocs 集合(见 Settings 文档 的 LocalDocs Settings 中Allowed File Extensions)。
3. 在 server chat 中激活 LocalDocs 集合
LocalDocs 不是对普通聊天生效,而是要挂到 API server 对应的那个会话上。按 API Server 文档 的步骤:
- 在 GPT4All 应用中打开 Chats 视图。
- 滚动到聊天历史侧栏的最底部。
- 选中 server chat——它和其他会话的背景颜色不同。
- 在右侧侧栏中激活你的 LocalDocs 集合。
完成这一步后,你的 API 调用就会从 LocalDocs 集合中检索相关文本片段,并把这些 references 放进交给 LLM 的输入消息中。
4. 调用 API 并读取 references
对POST /v1/chat/completions发起请求。下面是文档中的 cURL 示例:
curl -X POST http://localhost:4891/v1/chat/completions -d '{ "model": "Phi-3 Mini Instruct", "messages": [{"role":"user","content":"Who is Lionel Messi?"}], "max_tokens": 50, "temperature": 0.28 }'其中model要替换成你在 GPT4All 中已下载的模型名,可用GET /v1/models查看当前可用模型。
检索到的 references 在 API 响应对象中的位置是:
response["choices"][0]["references"]每条 reference 包含以下字段(文档原文说明):
| 字段 | 含义 |
|---|---|
text | 从引用文档中提取的片段实际文本内容 |
author | 引用文档的作者(如有) |
date | 引用文档的创建日期(如有) |
page | 片段所在页码(目前仅 PDF 文档可用) |
title | 引用文档的标题(如有) |
验证方式:发送一个与集合内容相关的问题,检查响应对象的choices[0].references路径,其中的text应来自你加入集合的文档;如果返回的引用来自你预期的文档,说明 LocalDocs 与 API server 的绑定已生效。
5. 排查与限制
- 拿不到 references 时,先确认激活动作做在了 server chat 上:LocalDocs 只能通过选中该 server chat 并在右侧栏激活来开启,无法通过 API 请求参数控制。
- 集合尚未索引完成时,检索不会包含尚未索引的部分,但已就绪的部分可以先用。
- Troubleshooting 文档 指出:较小的或整体较弱的 LLM 有时不会使用 LocalDocs 提供的文本片段,此时可以在提示词中使用 "in the docs" 或 "from the provided files" 这类短语来帮助模型利用上下文。
- 注意区分两种引用展示:桌面聊天中点
Sources查看引用文件是 UI 行为;本文的references字段只存在于 API server 的 JSON 响应中。
相关端点与后续配置
API server 的完整端点列表(来自 API Server 文档):
| Method | Path | 说明 |
|---|---|---|
| GET | /v1/models | 列出可用模型 |
| GET | /v1/models/<name> | 查看某个模型的详情 |
| POST | /v1/completions | 生成文本补全 |
| POST | /v1/chat/completions | 生成对话补全 |
如果后续想调整引用行为,可以在 Settings 的 LocalDocs 高级设置中修改Document Snippet Size(默认 512 字符)和Maximum Document Snippets Per Prompt(默认 3 条);文档同时说明,调高这些设置可能提高事实性回答的概率,但会拖慢生成速度。
【免费下载链接】gpt4allGPT4All: Run Local LLMs on Any Device. Open-source and available for commercial use.项目地址: https://gitcode.com/GitHub_Trending/gp/gpt4all
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考