NsfwLocal开发者文档
API 文档
几分钟内即可开始使用无审查 LLM API。使用标准的 OpenAI 兼容工具发送文本请求并接收直接、无过滤的响应。
快速入门您的第一个请求
通过将客户端指向我们的基础 URL 并使用生成的 API 密钥进行认证,立即开始生成文本。界面遵循标准约定,因此您可以使用现有 SDK,无需学习新协议。您将提示发送到 uncensored 模型并接收文本响应,不对合法成人用途应用典型的内容过滤器。
配置 base URL 和密钥
设置环境变量以将请求路由到我们的特定端点。用注册期间生成的密钥替换占位符密钥。这确保所有后续调用使用正确的 uncensored 模型实例。
- 基础 URL:
https://api.nsfwlocalllm.com/v1 - Auth 标头:
Authorization: Bearer YOUR_API_KEY
您可以通过检查 models 端点来验证您的密钥是否有效。有效的密钥会立即返回可用的模型 ID。
发送聊天完成请求
发送标准聊天补全负载以生成文本。系统处理您的输入并返回模型的回复。使用 uncensored 模型 ID 以确保您访问的是无过滤实例。
响应包含生成的文本和令牌使用统计信息。你可以将其直接解析到你的应用程序逻辑中。
curl https://api.nsfwlocalllm.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Send me the server uptime stats"}]
}'检查标准 HTTP 状态码以处理成功或失败情况。
启用流式传输以实现实时输出
流式响应以降低用户的感知延迟。通过设置启用流式传输 stream: true 在您的请求正文中。API 返回一系列包含部分 Token 的服务器发送事件 (SSE)。
在客户端聚合这些 token 以重构完整消息。这种方法非常适合需要即时反馈的聊天界面。最后一个 SSE 事件包含请求的总 token 使用量。
from openai import OpenAI
client = OpenAI(base_url="https://api.nsfwlocalllm.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)优雅地处理连接错误,以确保流畅的用户体验。
使用 JSON 模式进行结构化数据
强制模型输出有效的 JSON 以供程序化消费。设置 response_format 到 {"type": "json_object"} 在你的请求中。这减少了解析错误并确保一致的数据结构。
用于生成结构化提示、提取实体或构建动态内容。模型遵循系统指令中提供的格式约束。这对于与其他服务的可靠集成至关重要。
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.nsfwlocalllm.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);在您的端验证输出 JSON 以捕获任何边缘情况。
实现函数调用
定义工具以扩展模型的能力。传递 tools 包含函数定义的数组到请求中。模型可以根据上下文选择调用这些函数。
这启发了复杂的工作流程,其中 LLM 决定何时获取数据或执行操作。您在回复中接收函数参数并在您的端执行它们。将结果传回模型以进行进一步推理。
设置 tool_choice 到 auto 用于灵活的决策。此功能支持需要外部数据访问的高级角色扮演场景。
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)常见问题
上下文窗口大小是多少?
上下文窗口为 100,000 个 token,涵盖 prompt 和 completion。这允许进行长对话和处理大型文档,而不会丢失上下文。
如果信用额度耗尽怎么办?
当您的预付费余额不足时,请求将返回 402 状态码。您可以通过加密货币充值以立即恢复服务。速率限制等错误不消耗余额。
如何处理速率限制?
API 限制每个密钥每分钟 300 次请求。如果超出此限制,你将收到 429 状态码。在客户端实现指数退避,以有效处理这些延迟。
即时检索您的 API 密钥
注册,复制令牌,更新基础 URL。配置完成。
获取 API 密钥