1. 区分调用模型 API 与本地运行模型#
调用 API 时,VPS 主要运行你的应用并通过网络请求模型服务;本地推理则需要下载权重并使用本机 CPU/GPU 与内存。一个应用“部署在自己的 VPS”并不代表模型或全部数据也留在本机。
小型 VPS 适合学习 API、轻量自动化和中转自己的应用请求;大型模型本地推理需要按权重、精度、上下文和并发估算内存/显存。不要只看模型参数量或压缩包大小就承诺某套餐能流畅运行。
2. 从官方控制台准备受限密钥#
以 DeepSeek 为例,从官方平台创建自己的 API Key,核对可用模型、余额、计费和速率限制。聊天网站订阅与 API 额度可能是不同产品。密钥只放服务器受限配置或秘密管理系统,不放网页 JavaScript。
模型名称会变化,应从官方当前文档或账户模型列表复制。本文更新时官方快速入门使用 deepseek-flash;实际接入仍要核对账户可用范围,不能沿用旧文章中的退役模型名。
3. 用一次小请求验证连接#
在Python 虚拟环境中保存以下脚本。它只发一条简单问题,不携带私人文件,密钥通过隐藏输入读取。
import getpass
import json
import urllib.request
key = getpass.getpass('API Key:')
model = input('模型名称(从官方文档复制):').strip()
payload = {
'model': model,
'messages': [{'role': 'user', 'content': '用一句话解释 DNS。'}],
'stream': False,
'thinking': {'type': 'disabled'},
'max_tokens': 128,
}
request = urllib.request.Request(
'https://api.deepseek.com/chat/completions',
data=json.dumps(payload).encode(),
headers={'Content-Type': 'application/json',
'Authorization': 'Bearer ' + key},
method='POST',
)
with urllib.request.urlopen(request, timeout=90) as response:
result = json.load(response)
print(result['choices'][0]['message']['content'])这会产生真实 API 用量。示例关闭思考模式,用较小的输出上限验证基本连接,避免思考过程占满输出额度。收到回答后同时查看控制台用量,确认调用的是预期模型;模型支持的参数应以当前官方接口说明为准。
4. 按状态码处理失败#
401/403 先查密钥和权限,模型不存在查名称与账户范围,429 查额度/频率,超时查网络与请求复杂度。设置有限重试和退避,不能无限循环重发相同请求造成费用增长。
流式响应需要客户端持续读取并处理断线,反向代理也要支持相应超时与缓冲设置。日志记录状态、耗时和请求编号即可,默认不记录完整密钥与私人提示词。
5. 接入应用时限制输入、费用和工具权限#
为单次请求设置输出上限与超时,为用户或任务设置频率和预算。上传知识库前确认有权处理这些资料,了解外部模型服务的数据规则。模型回答用于辅助判断,重要操作仍要由确定的业务校验约束。
如果 Agent 能执行命令或发送消息,使用独立用户和工作目录,限制工具与网络权限,避免让一条网页内容触发高权限操作。应用示例继续看n8n、Dify、OpenClaw与Hermes Agent。
完成后检查
模型选择应依据自己的测试样例;不要把宣传中的最大上下文当作当前套餐与请求必然可用。