别再手动试 API 了:一个 100 行 Bash 脚本实现的 AI API 测试大师

在 LLM 时代,开发者最烦人的事情之一就是管理那堆乱七八糟的 API Base URL 和 Key。 今天看到的这个脚本(AI API 测试大师)虽然只有一百来行,但它把“配置 \(\rightarrow\) 发现 \(\rightarrow\) 验证 \(\rightarrow\) 测试”这个链路跑通了。这种极致的实用主义风格,正是我们写脚本时该追求的。

为什么我们需要这种工具?

大多数人的工作流是这样的:在 .env 里改个 Key \(\rightarrow\) 跑一遍代码 \(\rightarrow\) 发现 404 或 401 \(\rightarrow\) 回到文档检查 Base URL 是否多了个 /v1 \(\rightarrow\) 循环。 这个脚本把这个过程变成了:选择配置 \(\rightarrow\) 自动扫描可用模型 \(\rightarrow\) 标记可用性 \(\rightarrow\) 直接对话。

深度技术拆解

这个脚本的精妙之处在于它对 Linux 基础工具链的熟练运用:

1. 极简的配置存储

它没有引入任何数据库,直接用 ~/.apitest_config 这个文本文件存储 Name,URL,Key。 使用 awk -F',' 进行列切分,sed -i "${del_id}d" 实现行删除。这种“文件即数据库”的方案在小型工具中效率最高,无需依赖。

2. 动态模型感知

很多脚本要求用户手动输入 gpt-4-turboclaude-3-opus,但 API 供应商的模型更新速度极快。 脚本通过 curl -s ... /models | jq -r '.data[] | "\(.id)|\(.name // .id)"' 实现了动态发现。这意味着只要 API Key 有权限,无论供应商新增了什么模型,脚本都能立刻感知。

3. 鲁棒的有效性检测

脚本在展示模型列表前,先进行了一次“地毯式”扫描。 通过 curl -o /dev/null -w "%{http_code}" 快速检测 HTTP 状态码。这种预检机制极大地降低了交互时的挫败感——你看到的 ✅ 就是能用的,❌ 就是没权限或挂了的。

4. 标准化的对话链路

chat_test 函数实现了标准 OpenAI API 协议。 - 超时控制: --max-time 10 防止请求死锁。 - 重试逻辑: 简单的 while 循环配合 attempt 计数,处理不稳定的网络波动。 - 结果提取: jq -r '.choices[0].message.content // empty' 确保在 API 返回错误 JSON 时不会导致脚本崩溃。

改进空间(如果是我来写)

虽然脚本已经很完整,但从生产环境角度看,还有几个优化点: - 安全性: 目前 API Key 以明文存储在 ~/.apitest_config。建议引入 gpg 加密或调用系统 Keyring。 - 协议适配: 脚本默认适配 OpenAI 格式。如果面对非标准格式的 API,需要增加一个 adapter 层。 - 并发检测: 目前模型有效性检测是串行的。如果一个 Key 下有 50 个模型,检测时间会很长。可以使用 xargs -P& 后台运行实现并发检测。

总结

这个脚本是典型的“小而美”。它不追求复杂的架构,而是通过精准的工具组合(curl + jq + awk + sed)解决了实际问题。 对于经常需要评测不同模型、调试 API 接口的开发者来说,这比安装一个庞大的 GUI 测试软件要快得多。

如果你还在手动修改 .env 文件,建议把这个脚本扔进你的 ~/bin

本文由 BOSH 的博客助手 HerMes 整理 🚀
原文链接:用户提供脚本素材