SuperAPI AI 工具集

groq-local-dev-loop

编程与开发

查看项目

更新于 10-16 10:09

技能介绍

用途

该技能用于为 Groq 搭建快速、可复现的本地开发工作流。由于 Groq 的响应时间在亚秒级,适合紧凑的开发循环——LLM 响应足够快,可以在不切换上下文的情况下迭代。该技能会脚手架化一个项目,包含带记忆化的客户端、模型常量以及两级测试策略(模拟单元测试 + 可选加入的实时集成测试)。精简骨架在此处给出,完整代码位于 references/implementation.md 和 references/examples.md。

前置条件

  • 已安装 groq-sdk(npm install groq-sdk)
  • 已设置 GROQ_API_KEY(开发阶段使用免费套餐即可)
  • Node.js 18+,并安装 tsx 用于执行 TypeScript
  • 使用 vitest 进行测试

认证

groq-sdk 客户端会自动从环境变量读取 GROQ_API_KEY——new Groq() 和 getGroqClient() 都能获取到它。在 console.groq.com/keys 获取密钥,存放在被 git 忽略的 .env.local 中,仅提交 .env.example 作为模板。切勿硬编码密钥或提交 .env.local。

使用方式

按顺序执行以下七个步骤。步骤 1-2 搭建项目;步骤 3-4 集中管理客户端与模型 ID;步骤 5-6 建立测试层级;步骤 7 生成环境模板。每一步的完整代码在参考文件中。

  1. 项目结构 — 创建 src/groq/{client,models,completions}.ts、tests/ 以及 .env.local / .env.example。
  2. 包配置 — 接通 dev(tsx watch)、test / test:watch(vitest)以及 test:integration 脚本。
  3. 单例客户端 — 一个惰性记忆化的 getGroqClient(),在缺少 GROQ_API_KEY 时快速失败;以及用于测试的 resetClient()。
  4. 模型常量 — 一个 MODELS 映射,其中 DEV_MODEL 默认使用 llama-3.1-8b-instant 以节省开发配额。
  5. 带模拟的单元测试 — 使用 vi.mock("groq-sdk"),使单元测试在亚秒级内运行且零 API 调用。
  6. 集成测试 — 将实时 API 测试置于 GROQ_INTEGRATION=1 之后,配合 describe.skipIf,使默认运行保持离线。
  7. 环境模板 — 提交 .env.example,将 .env.local 加入 git 忽略。

客户端示例代码(src/groq/client.ts,惰性记忆化单例):

import Groq from "groq-sdk";

let _client: Groq | null = null;

export function getGroqClient(): Groq {
  if (!_client) {
    if (!process.env.GROQ_API_KEY) {
      throw new Error("GROQ_API_KEY not set. Copy .env.example to .env.local");
    }
    _client = new Groq({ apiKey: process.env.GROQ_API_KEY, maxRetries: 2, timeout: 30_000 });
  }
  return _client;
}
export function resetClient(): void { _client = null; }

完整项目脚手架、package.json、模型常量与 .env.example 见 references/implementation.md;完整的单元与集成测试文件见 references/examples.md。

输出结果

应用该工作流后会产生:

  • 一个脚手架化项目,包含 src/groq/{client,models,completions}.ts 与 tests/ 目录。
  • 一个记忆化的 getGroqClient(),共享同一个已配置客户端,并在未设置 GROQ_API_KEY 时抛出可操作的错误。
  • 一个 MODELS 映射 + DEV_MODEL 常量,使开发运行在便宜的 8B 模型上。
  • 两级测试套件:模拟单元测试(npm run test:watch,无 API 调用)与可选加入的实时测试(npm run test:integration,由 GROQ_INTEGRATION=1 控制)。
  • 为团队提交的 .env.example 模板,真实密钥存放在被 git 忽略的 .env.local 中。

错误处理

错误 原因 解决方案
GROQ_API_KEY not set 缺少 .env.local 从 .env.example 复制
测试超时 单元测试中发起实时 API 调用 在单元测试中模拟 groq-sdk
429 rate_limit_exceeded 触及免费套餐 RPM 等待 60 秒,或使用 test:watch 并延长间隔
端口已被占用 另一个 tsx watch 正在运行 结束进程或更改端口

开发提示

  • 开发期间使用 llama-3.1-8b-instant(配额消耗最低、速度最快)。
  • 调试时设置 temperature: 0 以获得确定性输出。
  • 保守设置 max_tokens,避免耗尽免费套餐。
  • Groq 免费套餐:70B 与 8B 模型为 30 RPM——据此规划开发循环。

示例命令

npm run dev                # tsx watch src/index.ts (hot reload)
npm run test:watch         # vitest --watch (mocked, no API calls)
npm run test:integration   # GROQ_INTEGRATION=1 vitest (live API)

完整的模拟单元测试(vi.mock("groq-sdk"))与由 GROQ_INTEGRATION 控制的实时集成测试,见 references/examples.md。

资源

  • references/implementation.md — 完整项目脚手架、客户端、模型常量与环境模板。
  • references/examples.md — 完整的单元与集成测试文件。
  • groq-sdk npm
  • Vitest Documentation
  • tsx Documentation

生产级代码模式请参考 groq-sdk-patterns 技能。