中文 ▾
获取 API 密钥

首页指南

AnythingLLM API 密钥:连接自定义 OpenAI 接口 接口

要将 AnythingLLM API 密钥与自定义端点配合使用,请选择 Generic OpenAI 提供商并输入基础 URL、密钥和模型 ID。以下步骤和测试见下文。

你指的是哪个 API 密钥

搜索 anything llm api key 的人通常指两件事,这两者很容易混淆。第一种是 AnythingLLM 发送给模型提供商以生成答案的密钥。第二种是 AnythingLLM 本身创建的开发者 API 密钥,以便其他程序调用 AnythingLLM 自己的 API。它们是不同的密钥,有不同的用途。

本文涵盖第一种方法:为 AnythingLLM 提供用于 OpenAI 兼容聊天 API 的密钥和端点。你将从 API 密钥页面 获取密钥,将其与基础 URL https://api.llmapisource.com/v1 一起粘贴到 AnythingLLM 中,并使用模型 ID uncensored。如果你需要从自己的代码调用 AnythingLLM,请在 AnythingLLM 设置中生成该密钥;它与该提供商密钥无关。

开始之前:在 AnythingLLM 之外测试密钥

关于自定义接口的一半支持问题最终被证明是密钥错误或 URL 中的拼写错误。使用 curl 进行三十秒测试可以区分“接口错误”和“应用配置错误”。首先列出模型:

curl https://api.llmapisource.com/v1/models \
  -H "Authorization: Bearer YOUR_KEY" | grep uncensored

你应该看到包含 uncensored 的行。然后发送一个聊天请求:

curl https://api.llmapisource.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Reply with the word ready."}],
    "max_tokens": 20
  }'

如果两个调用都成功,则密钥和 URL 有效,后续任何失败都是应用内的设置问题。如果你还没有密钥,请使用 Google 或电子邮件和密码注册。新用户可以在密钥页面一键领取 $0.50 的试用额度,无需信用卡,有效期为 7 天。这足以完成整个设置并进行测试。

在 AnythingLLM 中设置

AnythingLLM 支持多种 LLM 提供商,其中一个是通用的 OpenAI 兼容选项。菜单措辞在不同版本之间会有所变化,因此将下面的名称视为指南而不是精确脚本。

  1. 打开 AnythingLLM 设置并找到 LLM 偏好设置(有时标记为 LLM 提供商)。
  2. 从提供商列表中选择 Generic OpenAI。
  3. 将 Base URL 设置为 https://api.llmapisource.com/v1。包含 /v1 并去掉末尾的 /chat/completions;应用会自行添加路径。
  4. 将你的密钥粘贴到 API Key 字段中。应用将其作为 Authorization: Bearer 发送,这是此 API 所期望的。
  5. 将 聊天模型名称设为 uncensored。
  6. 将 上下文窗口 设置为 100000。模型的窗口为 100,000 个 token(提示词加补全),此处的低值会使 AnythingLLM 比实际需要更早地修剪你的历史记录。
  7. 将 max tokens 留空,或设置一个你舒适的限制。在 API 端它是可选的。
  8. 保存,打开工作区并发送消息。

如果工作区有自己的聊天设置,请检查它是否使用系统默认提供商而不是旧的覆盖设置。工作区固定到以前的提供商是更改看似无效的一个常见原因。

嵌入和文档需要单独的部分

AnythingLLM 做两件事。它与模型聊天,并对你的文档进行索引,以便模型可以从中回答问题。第二件事使用嵌入模型,而此 API 不提供嵌入。它暴露 POST /v1/chat/completions 和 GET /v1/models,输入文本,输出文本。

这不会阻碍你。AnythingLLM 允许你单独选择嵌入器和聊天模型,它可以使用内置的本地嵌入器或你配置的其他提供商。将嵌入器设置为不是此接口的内容,并仅将此接口用于聊天模型。图像或音频功能也适用:该模型仅支持文本,没有图像、音频或视频生成功能,也没有微调功能。

当你使用文档聊天时,检索到的段落会被粘贴到提示词中,因此输入 token 会增加。每 1M 输入 token 价格为 $0.15,6,000-token 的提示词加上 500-token 的输出成本为 6,000 x $0.15 / 1,000,000 = $0.0009 用于输入,加上 500 x $0.50 / 1,000,000 = $0.00025 用于输出,或每个问题 $0.00115。文档密集型工作区的成本高于纯聊天,但每个问题的成本仍不到一分钱。

检查流式输出、工具和 JSON 模式

AnythingLLM 会流式输出回复,API 支持带有 stream: true 的 Server-Sent Events,并以 usage chunk 结尾。如果你的回复是整段出现而不是逐 token 输出,问题通常在于应用前面的代理(proxy)缓冲了响应,而不是端点。你可以使用 OpenAI Python SDK 通过脚本测试流式输出:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.llmapisource.com/v1",
    api_key="YOUR_KEY",
)

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "List three uses of a local knowledge base."}],
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
    if chunk.usage:
        print("\ntokens:", chunk.usage.prompt_tokens, chunk.usage.completion_tokens)

工具调用和 JSON 模式通过相同的聊天接口工作,如果你围绕应用构建代理或流程,这很重要。JSON 模式是一个单独的字段:

curl https://api.llmapisource.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "response_format": {"type": "json_object"},
    "messages": [
      {"role": "system", "content": "Return a JSON object with keys title and summary."},
      {"role": "user", "content": "Summarize: a notes app that works offline."}
    ]
  }'

工具使用通常的 tools 和 tool_choice 字段,结果以 role: "tool" 消息返回。AnythingLLM 是否暴露给定的代理功能取决于应用版本,因此先在脚本中测试调用,然后在应用中尝试该功能。文档 显示了完整的工具调用示例。

修复常见错误

症状可能原因修复方法
401 或认证错误密钥粘贴时带有空格,或使用了旧密钥从密钥页面再次复制密钥并粘贴,不带空格
404 或“未找到”基础 URL 缺少 /v1,或末尾带有 /chat/completions使用精确的 https://api.llmapisource.com/v1
未找到模型模型名称拼写不同使用 uncensored,小写,不加其他内容
429 因 rate_limited 导致每分钟超过 300 个请求(试用密钥为 60)降低速度或减少批量请求的频率
429 错误对应 concurrency 限制同时超过 8 个请求(试用密钥为 2 个)减少并行工作区或智能体;流式输出会占用其槽位直到结束
429 错误,带有 Retry-After: 5 响应头临时过载等待 5 秒并重试
回复过早截断应用中的 max tokens 较低提高它或清除它

每条响应上的 X-Request-Id 标头有助于你在就特定请求联系 支持 时提供信息。X-Balance-USD 中的余额也能让你快速判断失败是否仅仅是因为账户为空。

从工作区获得更好的答案

一旦连接工作,一些工作区习惯会带来显著改善。为工作区编写一个系统提示词,说明角色、语气以及当文档中不包含答案时该做什么。如果没有最后那条指令,模型通常会猜测,而听起来自信的猜测比单纯的“我在文档中找不到该内容”更糟糕。

Temperature 是另一个杠杆。对于针对你自己文件的问题回答,使用 0.2 到 0.4 的低值使答案接近检索到的文本。对于头脑风暴或起草,将其提高到 0.8。API 传递 temperature、top_p、stop、seed 和惩罚,因此应用发送的任何内容都会原封不动地到达模型。

密切关注工作区附加到每个问题的片段数量。每个额外的片段都是更多的输入 token,虽然你有 100,000-token 窗口的空间,但你在每一轮中都要为每个片段付费。从少量片段开始,只有在答案遗漏相关材料时才增加。

隐私和成本说明

通过 API 发送的提示词不会用于训练。当 AnythingLLM 检索片段时,你的文档仍会随提示词一起发送到接口,因此请决定哪些工作区的内容你可以接受发送出去。对于必须保留在你本地机器上的材料,请改用本地模型。

计费按预付额度消耗:输入 token 每 1M $0.15,输出 token 每 1M $0.50,充值金额为 $20 至 $500,充值 $50 及以上享 5% 奖励,$100 及以上享 10% 奖励,$200 及以上享 15% 奖励。额度永不失效,失败或被拒绝的请求不会扣费。定价页面 列出了支持的支付方式。

问答

在 AnythingLLM 中应选择哪种提供商选项?

选择 Generic OpenAI。将 https://api.llmapisource.com/v1 输入为 Base URL,将你的密钥输入为 API 密钥,并将 uncensored 输入为聊天模型名称。

我应该输入多大的 token 上下文窗口?

输入 100000,这与模型 100,000-token 的上下文窗口(包含提示词和补全)相匹配。

我可以在 AnythingLLM 中使用此接口进行嵌入吗?

不可以。该 API 仅提供聊天补全和模型列表。请在 AnythingLLM 中选择其他嵌入器,并将此接口用于聊天模型。

AnythingLLM 的开发者 API 密钥是同一个东西吗?

不是。该密钥是在 AnythingLLM 内部创建的,以便其他程序调用该应用。来自本服务的密钥是 AnythingLLM 发送到聊天接口的密钥。

等距视角场景:应用模块通过发光线缆和密钥与服务器连接,展示 API 密钥连接