在当前的 AI 开发环境中,开发者经常需要与多个不同的大语言模型服务进行交互。每个服务都有自己独特的 API 格式、认证方式和调用规范,这给开发和测试工作带来了不少复杂性。LLM Caller 正是为了解决这一痛点而设计的命令行工具。

🎯 核心价值

LLM Caller 是一个基于 Go 语言开发的 CLI 工具,通过 JSON 模板的方式统一了不同 LLM 服务的调用接口。它的核心优势包括:

  • 🔗 统一接口:通过模板系统抽象不同 LLM 服务的 API 差异
  • ⚙️ 灵活配置:支持多种变量类型和配置方式
  • 🌐 跨平台支持:提供 Linux、macOS 和 Windows 的预编译二进制文件
  • 📋 模板管理:内置模板下载、验证和管理功能

🚀 安装配置

下载安装

方法一:从源码编译

git clone https://github.com/nodewee/llm-caller.git
cd llm-caller
go build -o llm-caller

方法二:使用 go install

如果已经安装了 Go 环境,可以使用 go install 命令安装:

go install github.com/nodewee/llm-caller@latest

方法二:下载预编译二进制文件

打开 https://github.com/nodewee/llm-caller/releases/ ,选择适合你操作系统的版本,下载二进制文件。

下载后,将文件改名为 llm-caller ,然后添加执行权限和移动到 PATH 目录下。

# macOS 安装示例
chmod +x llm-caller
xattr -d com.apple.quarantine ./llm-caller
mv ./llm-caller ~/.local/bin/

# Linux 安装示例
chmod +x llm-caller
mv ./llm-caller ~/.local/bin/

初始配置

安装完成后,首先运行环境检查:

llm-caller doctor

这个命令会检查配置文件、模板目录、API 密钥等环境状态,并提供相应的配置建议。

API 密钥配置

LLM Caller 支持三种 API 密钥配置方式,按优先级排序:

1. 命令行参数(最高优先级)

llm-caller call deepseek-chat --var content="Hello" --api-key sk-xxx

2. 配置文件

# 设置密钥文件路径
llm-caller config set secret_file ~/.llm-caller/keys.json

# 创建密钥文件
cat > ~/.llm-caller/keys.json << EOF
{
  "deepseek_api_key": "sk-xxx",
  "openai_api_key": "sk-xxx",
  "aliyun_api_key": "sk-xxx"
}
EOF

3. 环境变量

export DEEPSEEK_API_KEY="sk-xxx"
export OPENAI_API_KEY="sk-xxx"
export ALIYUN_API_KEY="sk-xxx"

🔧 核心功能

模板系统

LLM Caller 的核心是基于 JSON 的模板系统。每个模板定义了如何调用特定的 LLM 服务。以下是一个标准的 DeepSeek 模板示例:

{
  "provider": "deepseek",
  "title": "DeepSeek Chat API",
  "description": "DeepSeek 聊天对话模板",
  "request": {
    "url": "https://api.deepseek.com/v1/chat/completions",
    "method": "POST",
    "headers": {
      "Content-Type": "application/json",
      "Authorization": "Bearer {{api_key}}"
    },
    "body": {
      "model": "deepseek-chat",
      "messages": [
        {
          "role": "user",
          "content": "{{content}}"
        }
      ],
      "temperature": 0.7,
      "max_tokens": 2048
    }
  },
  "response": {
    "path": "choices[0].message.content"
  }
}

模板的关键组成部分:

  • provider:服务提供商标识
  • titledescription:模板的标题和描述信息(可选)
  • request:HTTP 请求配置,包括 URL、方法、头部和请求体
  • response:响应解析配置,指定如何从返回的 JSON 中提取内容
  • 变量占位符:使用 {{variable_name}} 格式进行变量替换

变量系统

LLM Caller 支持三种变量类型:

1. 文本变量

llm-caller call deepseek-chat --var content:text:"Hello world"

2. 文件变量

llm-caller call translate --var content:file:document.txt

3. Base64 变量

llm-caller call analyze --var content:base64:SGVsbG8gd29ybGQ=

模板管理

下载开源模板

# 从 GitHub 下载模板(默认下载到 ~/.llm-caller/templates/ 目录)
llm-caller template download https://github.com/nodewee/llm-calling-templates/blob/main/deepseek-emoji-suggest.json

查看模板

# 列出所有可用模板
llm-caller template list

# 查看模板内容
llm-caller template show deepseek-emoji-suggest

# 验证模板格式
llm-caller template validate deepseek-emoji-suggest

模板实例

具体用法

示例 1:Emoji 建议

# 为文本内容推荐合适的 emoji
llm-caller call deepseek-emoji-suggest --var text:text:"你好"

示例 2:OCR 文字提取

# 从图片文件提取文字
llm-caller call qwen-vl-ocr-image --var image_url:file:图片.jpg -o 提取结果.txt

示例 3:合同审查

# 审查合同文本(从文件读取)
llm-caller call deepseek-contract-review --var text:file:合同.txt -o 审查结果.txt

⚙️ 配置管理

查看当前配置

llm-caller config list

自定义模板目录

# 设置自定义模板目录
llm-caller config set template_dir ~/my-llm-templates

# 重置为默认值
llm-caller config unset template_dir

配置文件位置

配置文件默认存储在 ~/.llm-caller/config.yaml,包含以下设置:

  • template_dir:模板文件存储目录
  • secret_file:API 密钥文件路径

🔧 故障排除 / 常见问题

1. API 密钥未找到

# 检查环境配置
llm-caller doctor

# 设置密钥文件
llm-caller config set secret_file ~/.llm-caller/keys.json

2. 模板文件未找到

# 列出可用模板
llm-caller template list

# 下载官方模板
llm-caller template download <github-raw-url>

3. 网络连接问题

# 检查网络连接和 API 端点
curl -I https://api.deepseek.com/v1/chat/completions

4. API 端点错误

确保使用正确的 API 端点:

  • DeepSeek: https://api.deepseek.com/v1/chat/completions
  • OpenAI: https://api.openai.com/v1/chat/completions

模板设计建议

1. 使用描述性的变量名

{
  "body": {
    "messages": [
      {
        "role": "user",
        "content": "请将以下{{source_language}}文本翻译成{{target_language}}:{{text_content}}"
      }
    ]
  }
}

2. 合理设置模型参数

{
  "body": {
    "model": "deepseek-chat",
    "temperature": 0.1,  // 翻译任务使用较低温度,可参考大模型的官方建议
    "max_tokens": 4096,  // 设置合适的最大 token 数,根据不同模型和任务需求调整
    "messages": [
      // ... 消息配置
    ]
  }
}

🔗 相关资源

项目地址: https://github.com/nodewee/llm-caller

我开源的模板仓库: https://github.com/nodewee/llm-calling-templates

📋 总结

LLM Caller 作为 LLM 服务调用工具,通过统一的模板系统与灵活的配置管理,帮助工作流开发者简化多服务集成,提升开发效率,适用于各种 LLM 应用场景。

作为命令行工具,LLM Caller 易于集成进现有工作流,广泛支持以下任务:

  • 批量翻译、摘要与格式转换
  • 批量代码审查与质量优化
  • 内容分析、分类标注、信息提取
  • 文档和数据自动化处理
  • 多模型对比测试与效果评估

主要优势:

  • 简化集成:统一不同 LLM 服务的调用方式
  • 提高效率:减少重复编写 API 调用逻辑
  • 灵活扩展:模板系统支持快速适配新服务
  • 集中管理:统一管理 API 配置与密钥,便于维护

无论是简单的文本处理,还是复杂的批量任务,LLM Caller 均能助力开发者高效构建和维护基于 LLM 的自动化工作流。


—— 缓坡漫步 / 工具和工作流


推广:
阿里云百炼大模型 9折优惠 + 所有模型各百万免费Token →
即梦 免费AI画图、生成视频。每日领免费额度,可累加 →