视频加载失败

动手配置:从注册到首次调用 API

5129 字
26 分钟
动手配置:从注册到首次调用 API

动手配置:两条路径,从注册到第一次调用#

本页只有步骤,没有选型。路径一把各家 API 直接接进脚本,路径二用统一网关把多家模型收口到一个地址;配完再解决「怎么知道钱花在哪」。

Mac 上配置 API 的两条路径#

两条路径二选一:普通用户优先用图形化客户端,直观、不易出错;开发者或需要写脚本,再用终端环境变量方式。

方式一:图形化客户端#

Mac 上主流的 AI 客户端:Codex(App Store)、Cherry StudioChatBoxCC-Switch(菜单栏工具)。

  1. 从 App Store 或官网下载安装客户端(比如 Codex、Cherry Studio)。
  2. 打开软件,进入「设置」→「模型管理」。
  3. 选择你要用的 API 服务商(OpenAI / DeepSeek / Kimi 等)。
  4. 把申请到的 API Key 粘贴到对应输入框,保存。
  5. 选择默认模型,回到聊天界面即可直接使用。
💡 优点

不用敲命令,界面直观,支持多模型切换,还能管理历史对话。

方式二:终端环境变量#

如果你要自己写代码、跑 Agent 脚本,才需要配置环境变量。

  1. 打开终端,确认 Shell 类型: 新 Mac 一般是 zsh,旧版是 bash。 echo $SHELL

  2. 编辑配置文件:

    zsh 用户#

    nano ~/.zshrc

    bash 用户#

    nano ~/.bash_profile

  3. 在文件末尾添加环境变量: export DEEPSEEK_API_KEY=“sk-xxxxxx” export KIMI_API_KEY=“sk-xxxxxx”

  4. 保存并生效:

    Ctrl+O 保存,Ctrl+X 退出#

    source ~/.zshrc

实操:以 DeepSeek 为例跑通首次调用#

把上面两条路径落到一次真实操作上。DeepSeek 是门槛最低的入口之一:注册不需绑定信用卡、新用户有免费额度、接口与 OpenAI 格式完全兼容。

先看清价格:分时段计费(2026-09-10 12<00> 起生效)#

来源:见本页文末「数据来源」说明 · 核对日 2026-09-14

计费项空闲时段高峰时段说明
输入(缓存命中)¥0.02 / 百万¥0.04 / 百万系统提示词、工具定义、上下文前缀被复用时按此价,最省的一档
输入(缓存未命中)¥1 / 百万¥2 / 百万首次出现的全新内容按此价
输出¥4 / 百万¥8 / 百万模型生成的回复内容
高峰时段正好压在国内上班时间

高峰定义为周一至周五 09<00>–12<00> 与 14<00>–18<00>(北京时间),价格为空闲时段的两倍。把批量任务排到夜间执行,成本直接减半 —— 这是最容易拿到的一笔折扣。

第 1 步 · 注册并取得 API Key#

  1. 打开开放平台 platform.deepseek.com,手机号注册并完成实名认证。
  2. 左侧菜单进入「API Keys」→「创建 API Key」。
  3. 复制生成的密钥(以 sk- 开头)。它只会完整显示一次,请立即存入密码管理器。
  4. 进入「财务中心」按需充值(支持支付宝 / 微信),并顺手把单日消费上限设好。

第 2 步 · 写入环境变量#

# 打开 zsh 配置(新 Mac 默认 zsh)
nano ~/.zshrc
# 在文件末尾追加(切勿把密钥提交进 Git)
export DEEPSEEK_API_KEY="sk-你的密钥"
# Ctrl+O 保存、Ctrl+X 退出,然后让它生效
source ~/.zshrc

第 3 步 · 跑通第一次调用#

# 依赖:uv pip install openai python-dotenv
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv() # 从 .env 读密钥,避免写死在代码里
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com", # 兼容 OpenAI 格式,只差这一行
)
def ask(prompt: str, system: str = "你是专业的中文内容助手") -> str:
resp = client.chat.completions.create(
model="deepseek-flash", # 旧名 deepseek-v4-flash 仍可路由
messages=[
{"role": "system", "content": system},
{"role": "user", "content": prompt},
],
temperature=0.7,
stream=False,
)
u = resp.usage
print(f"本次用量 - 输入 {u.prompt_tokens} / 输出 {u.completion_tokens}")
return resp.choices[0].message.content
if __name__ == "__main__":
print(ask("用三句话说明什么是 API。"))
就这么简单

换掉 base_urlmodel,同一段代码就能切到 OpenAI、Kimi、通义千问等任何兼容 OpenAI 格式的服务上 —— 这就是「兼容 OpenAI 格式」的实际价值。

用量核对与成本监控#

跑自动化最容易出的事故不是报错,而是账单暴涨:一个写错的循环、一次失败重试风暴,半夜就能烧掉几百元。上线前先把「看得见用量」这件事做掉。

来源:星标与仓库状态:GitHub API 实测 · 核对日 2026-09-14

方式怎么做适合
① 官方控制台「用量统计」登录开放平台 → 用量统计,可按天 / 按模型 / 按 Key 查看消费明细与趋势(数据有数分钟延迟)日常人工巡查
② 响应体 usage 字段每次调用的返回都带 prompt_tokens / completion_tokens,落库即可按任务精确对账自己写脚本记账
③ 平台的额度告警在财务中心设置单日 / 单月消费上限与预警,超限直接停服所有跑自动化的人(必做)
④ 开源自建看板NewAPI Monitor(★8 · Docker 部署)可实时记录调用、费用趋势并推送超限告警,适合多 Key / 多项目中转统一治理用量大、多 Key 场景
安全与成本红线

一、密钥绝不硬编码进代码再提交到公开仓库,被爬虫扫到会立刻盗刷;二、脚本要同时加最大重试次数单日消费上限双保险;三、定期轮换密钥,怀疑泄露立刻吊销重建;四、授权 Agent 时不要给资金、账号密码、批量删除这类高权限操作。

关于第三方「省 Token」工具

网络上流传的 LLMeter、TokenGuard、codeburn 等自动省 Token / 代理优化工具,本次核验未能在公开代码托管平台找到对应项目,故不收录。需特别提醒:来路不明的代理型工具会把你的提示词、乃至密钥一并转发出去,收益远小于风险。

密钥与账号安全#

这一节是整份文档里唯一不能走捷径的部分:模型选错可以换,链路搭错可以重做,密钥泄露无法撤回。

凭证类型正确做法绝对不要
API Key只放在本机环境变量或 .env(且 .env 写进 .gitignore);给每个用途单独建一把 Key 并命名,便于按用途吊销。写进代码、交给前端、贴进聊天记录或截图、提交到 Git(含私有仓库)。
账号密码 / 二次验证用密码管理器生成并保存;二次验证码单独存放。与 API Key 放在同一个纯文本文件里;用同一个密码注册「平台账号」与「支付账号」。
支付 / 提现凭证只保留在人工操作环节,脚本只读订单状态,不持有扣款能力。把银行卡、支付密码、验证码交给任何脚本或 Agent。
店铺 / 平台主账号自动化一律使用子账号或只读 Token,权限最小化。让 Agent 用主账号直接登录或改价、上下架。

落地到 Mac 上,最小可用做法是三步:

# 1. 只在本机保存,不进版本库
echo ".env" >> .gitignore
printf 'DEEPSEEK_API_KEY=sk-你的key\n' > .env
chmod 600 .env # 仅本人可读
# 2. 脚本里只读环境变量,不硬编码
import os
KEY = os.environ.get("DEEPSEEK_API_KEY")
assert KEY, "未设置 DEEPSEEK_API_KEY"
# 3. 提交前自查(有输出就说明泄露了)
git grep -nE 'sk-[A-Za-z0-9]{16,}' || echo "未发现明文密钥"
泄露后的处置顺序

一、立刻在控制台吊销该 Key(不是改密码,改密码不失效已有 Key);二、查用量与账单,确认异常消费区间;三、重建一把新 Key 并同步到本机环境变量;四、检查 .env 是否曾被提交过——只要进过 Git 历史,即使后来删除也要视为已泄露,因为历史提交可被克隆。

口径:以上为通用工程实践,不是任何平台的特有要求。各平台的 Key 管理入口与控制台位置见1.4 用量核对与成本监控;轮换周期建议 90 天一次,或团队人员变动时立即轮换。

预算熔断:把支出上限写进配置#

自动化最典型的翻车方式不是「模型太贵」,而是一个死循环把额度跑满——脚本重试、Agent 反复读同一批文件、定时任务叠加运行,都能在一夜之间把预算烧掉。熔断要在三个层次各做一道。

层次在哪设设什么触发后的行为
平台侧各平台控制台的「用量 / 计费 / 限额」页月度消费上限、单日上限;部分平台支持按 Key 设限额到达上限后拒绝新请求(返回 429 / 403),不会产生超额账单
调用侧你自己的脚本里单次任务 token 上限、最大重试次数、单日调用次数抛异常并退出,写一条日志
任务侧launchd / cron 配置任务并发数 = 1(禁止叠加);超时强杀避免上一轮没跑完下一轮又启动,形成叠加消耗

平台侧是最后一道防线。上线任何自动化之前,先把这一步做完——它比事后看账单有效得多:

各平台的设置入口怎么找
  • 一、先找「用量 / Usage / 计费 / Billing」,再看有没有「限额 / Limit / Budget / Quota」子项;
  • 二、国内平台(DeepSeek、豆包、通义等)多为「账户余额 + 单日限额」模式,注意余额耗尽即停;
  • 三、海外平台(OpenAI、Anthropic、Google)多为「预付额度 + 用量上限」模式,可分别对项目和 Key 设限;
  • 四、找不到限额入口的平台,就用第二、三层兜住。 入口页面与字段名会随改版变化,因此这里不给具体的按钮路径——请在控制台用上述关键词检索,不要照着半年前的截图操作。
# 调用侧:一份可直接粘贴的熔断装饰器
import json, time, pathlib
BUDGET = {"max_calls_per_day": 200, "max_retries": 3, "max_tokens": 8192}
LEDGER = pathlib.Path.home() / ".guide" / "usage.json"
LEDGER.parent.mkdir(exist_ok=True)
def _load():
if LEDGER.exists():
return json.loads(LEDGER.read_text())
return {"date": time.strftime("%Y-%m-%d"), "calls": 0}
def guard(fn):
def wrap(*a, **kw):
led = _load()
today = time.strftime("%Y-%m-%d")
if led.get("date") != today: # 跨天归零
led = {"date": today, "calls": 0}
if led["calls"] >= BUDGET["max_calls_per_day"]:
raise RuntimeError("已达当日调用上限,熔断退出") # 不再重试
led["calls"] += 1
LEDGER.write_text(json.dumps(led))
return fn(*a, **kw)
return wrap

口径:上限数值(200 次/天、8192 token)是示例,不是推荐值——请按1.4 里实测的单次成本 × 可接受月支出倒推。举例:若单次调用平均花费 $0.01、可接受月支出 $30,则单日上限约 100 次。

429、超时与降级:把失败写成流程#

批量跑任务时,失败是常态而不是异常。写死一次调用的脚本,跑 1000 条会因为其中 3 条报错而整体中断;写好重试与降级的脚本,同样的错误只会让这 3 条走备用路径。

现象通常原因处置方式要不要重试
429 Too Many Requests并发过高,或触及平台的速率/额度限制指数退避重试(1s → 2s → 4s,带随机抖动),同时降低并发,但要限制次数
408 / 504 超时服务端排队,或单次请求体过大缩短 prompt、拆分请求,再退避重试
500 / 502 / 503服务端临时故障退避重试;连续失败则切到降级链,但超过阈值就降级
400 参数错误参数、模型名或格式写错修正代码,不要重试不要(重试 100 次也一样失败)
401 / 403Key 失效、余额耗尽、无权限停止任务并告警(这类错误重试只会浪费额度)不要
200 但内容为空 / 被截断触达输出上限,或被安全策略拦截按降级链重试,并记录原始返回以便复盘视情况
# 退避重试 + 降级链:主模型失败就退到便宜模型,再失败就落盘人工处理
import random, time
CHAIN = ["claude-opus-5", "deepseek-v4.1-flash"] # 主 → 备;按你的成本梯度排
RETRYABLE = (429, 408, 500, 502, 503)
def call_with_fallback(prompt, client):
for model in CHAIN:
for attempt in range(4):
try:
return client.chat(model=model, prompt=prompt, max_tokens=4096)
except ApiError as e:
if e.status not in RETRYABLE:
break # 不可重试:直接换下一个模型
time.sleep((2 ** attempt) + random.random()) # 抖动,避免同时重试
raise RuntimeError("降级链全部失败,转人工处理")
两条容易忽略的规则

一、重试必须幂等:若一次调用可能有副作用(下订单、发消息、写文件),重试前先用请求 ID 查一次是否已成功,否则会出现「发了两次」。二、把失败落盘:失败的输入、错误码、原始返回都写到一个 failed.jsonl。批量任务里最贵的不是失败本身,而是失败后不知道失败在哪一条。

口径:错误码语义各家略有差异(例如有的平台用 402 表示余额不足),上表按通用约定整理;接入新平台时请以其官方错误码文档为准。

Mac 生产力环境搭建#

自动化任务通常要求「电脑长期不关、脚本按点自己跑」。本节把系统设置、包管理器、Python 与 Node 环境、效率软件、开机自启一次配好。适用机型:Mac Mini M4(16G + 512G 最合适,功耗低、可 7×24 挂机)与 M 系列的 MacBook Air / Pro。

系统基础设置#

  1. 允许安装第三方应用(部分自动化工具未上架 App Store): 随后在「系统设置 → 隐私与安全性」中确认已允许「任何来源」。

    终端内执行,输入开机密码后回车#

    sudo spctl —master-disable

  2. 关闭自动睡眠,保持挂机:系统设置 → 电池 → 选项,开启「防止自动睡眠」,并开启「唤醒以供网络访问」。
  3. 安装 Rosetta 2(个别旧工具只提供 Intel 版本): softwareupdate —install-rosetta —agree-to-license

安装 Homebrew(Mac 的包管理器)#

后面几乎所有工具都通过 Homebrew 安装,所以它是第一件要装的东西。

# 官方安装脚本
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Apple Silicon 机器:安装后把 brew 加进 PATH
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
# 验证
brew --version
国内网络提示

raw.githubusercontent.com 在国内常被阻断,导致安装脚本拉不下来。两个可行做法:一、 先配置终端代理,再执行上面的脚本;二、 改用国内镜像源,并写入环境变量加速后续下载:

# 中科大镜像(写入 ~/.zshrc 后对新终端生效)
export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"

Python 环境(自动化脚本的主力语言)#

推荐用 uv 管理环境:比 conda 更快更轻,对 Apple Silicon 支持好。

# 安装 uv
brew install uv
# 给一人公司项目单独建工作区与虚拟环境
mkdir -p ~/opc && cd ~/opc
uv venv
source .venv/bin/activate
# 装上常用的基础库
uv pip install requests openai python-dotenv pandas schedule
为什么一定要用虚拟环境

每个项目一个 .venv,依赖互不污染;换机器时用 uv pip freeze > requirements.txt 就能复现环境。不要把包装进系统 Python —— 后期版本冲突时很难收拾。

Node.js 环境(前端工具与自动化插件)#

brew install node
# 验证
node -v
npm -v

常用效率软件#

brew install --cask google-chrome # 浏览器:自动化脚本最主要的操作对象
brew install --cask iterm2 # 终端增强
brew install --cask rectangle # 窗口管理,多窗口看数据必备
brew install --cask keka # 压缩解压
brew install --cask maccy # 剪贴板历史(开源,可替代付费的 Paste)

做视频自动化还需要 FFmpegbrew install ffmpeg);跑本地大模型按第三部分「本地部署」装 Ollama 或 LM Studio。

让脚本按时自己跑#

Mac 上最稳的定时方案是系统自带的 launchd,不需要额外软件。

# 1. 新建 LaunchAgent 配置(一个任务一个文件)
nano ~/Library/LaunchAgents/com.opc.daily.plist
# 关键字段:
# Label 唯一标识,如 com.opc.daily
# ProgramArguments 要执行的命令,路径必须写绝对路径
# StartCalendarInterval 定时规则(Hour / Minute)
# StandardOutPath / StandardErrorPath 日志文件,出问题先看这里
# 2. 加载并立即生效
launchctl load ~/Library/LaunchAgents/com.opc.daily.plist
# 3. 确认已注册
launchctl list | grep opc
# 4. 改了配置后重新加载
launchctl unload ~/Library/LaunchAgents/com.opc.daily.plist
launchctl load ~/Library/LaunchAgents/com.opc.daily.plist
挂机三条底线

一、日志一定要落到文件(StandardErrorPath),否则早上只会看到「昨晚没跑」却不知为何;二、脚本要能防重入 —— 上一次没跑完时这一次不要叠加启动;三、涉及自动发布、自动下单这类外部动作时,先设成只生成不发送的草稿模式,跑一周确认稳定再放开。

常见问题速查#

把配置与使用中最常见的疑问集中在这里:前两条对应配置环节,后四条涉及选型与日常使用。

可用性与合规前提#

动手之前有三件事要先确认,它们决定「这套方案在你这里能不能用」,与技术选型无关。

场景通常可行的做法要注意的地方
国内直接访问优先选国内平台(DeepSeek、豆包、通义、智谱、Kimi、MiniMax 等)的官方 API,网络与支付链路最短。部分海外平台的 API 在境内无法直连,需要自行解决网络问题;能否连通请先用自己的网络实测一次,不要照抄别人的结论。
代理与网络工具企业用途走公司统一的网络出口与合规审批流程。代理的使用方式需符合当地法规与所在单位的网络管理规定;不要为绕过限制而使用来源不明的工具
数据出境涉及个人信息、客户资料、合同文本时,先用国内平台处理,或做脱敏(去标识化)后再调用。把真实客户名单、身份证号、银行信息提交给境外服务,可能触及数据出境的合规要求;做法是脱敏而不是「应该没事」
内容与平台规则搬运、抓取、批量发布前先读目标平台的用户协议与 robots 规则。高频抓取、自动关注、批量私信等行为通常被明令禁止,账号可能被限流或封禁;被封的是你的主账号,代价远大于省下的时间。
商用与版权确认模型输出、训练数据来源与素材授权,尤其是要对外销售的内容。不同平台对「输出物能否商用」的条款不同,请以官方条款为准。
本节不是法律意见

以上是工程侧的检查清单,帮助你在动手前意识到风险点;涉及具体业务的合规判断,请咨询专业人士。这条与总目录的「数据口径与免责说明」是一致的。

口径:本表按「大多数个人开发者与小微企业会遇到的情形」归纳,不覆盖行业特殊监管要求(金融、医疗、教育等regulated行业另有规定)。

配置后不生效怎么办?

客户端内:检查 API Key 是否粘贴正确、模型名称是否选对。终端内:执行 source 命令,或直接重启终端。

API 和网页版会员有什么区别?

网页版是给人手动用的,API 是给程序自动调用的;API 按量付费——用量少时更便宜,用量大时订阅更划算。

Agent 需要自己写代码吗?

不用。现在有很多现成的 Agent 软件(如 OpenManus、Dify),配置好 API 就能直接用,也支持手机远程触发。

省 Token 工具会影响回答质量吗?

正规优化工具只去掉冗余和废话,核心信息保留。主流测试中准确率下降在 5% 以内,日常使用几乎感知不到。

本地部署和 API 哪个好?

99% 的人选 API:效果更好、速度更快、不用折腾硬件。只有极致隐私需求、离线使用或特殊定制,才需要本地部署。

Skill 怎么安装到客户端里?

Claude Code、Codex 等支持 MCP 协议的客户端,直接在设置里添加 Skill 仓库地址或本地路径即可启用。

接下来:能力已经可调用,但「谁去调用它」还没解决。第 5 部分先挑一个桌面智能体当主力,再到第 6 部分的开源库里给它装具体能力。

================= 12 桌面智能体产品对比 =================

版权与免责声明

本文档仅供个人学习与研究使用, 不得用于商业用途 ,亦不构成任何收益承诺。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
动手配置:从注册到首次调用 API
https://firefly.cuteleaf.cn/posts/mac-api-04-setup/
作者
AWF
发布于
2026-09-15
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
AWF
Hello, I'm AWF.
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
最新动态
站点统计
文章
23
分类
3
标签
50
总字数
84,683
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录