Skip to content

ask 命令

单次 AI 问答 — 向 LLM 提供商发送一个问题并获取回答

核心特性

  • 🔹 单次问答: 无需进入交互式对话,一条命令即可获得 AI 回答
  • 🔹 8 个提供商: 支持 Ollama、OpenAI、Anthropic、DeepSeek、DashScope、Gemini、Mistral、Volcengine(豆包)
  • 🔹 中转站支持: 通过 --base-url 接入任意 OpenAI 兼容中转站/代理
  • 🔹 模型可选: 通过 --model 参数指定任意已安装模型
  • 🔹 JSON 输出: 支持 --json 格式化输出,便于脚本集成
  • 🔹 API 密钥管理: 支持命令行参数或环境变量传入 API 密钥

系统架构

用户输入问题


┌─────────────┐
│  ask 命令   │
│  参数解析    │
└──────┬──────┘


┌─────────────┐    ┌──────────────┐
│  queryLLM() │───▶│ Ollama API   │  POST /api/generate
│  路由分发    │    │ (本地 11434) │
│             │    └──────────────┘
│             │    ┌──────────────────────────────────┐
│             │───▶│ OpenAI 兼容 API (8 providers)    │
│             │    │ openai/volcengine/deepseek/...   │
│             │    │ POST /chat/completions            │
│             │    │ --base-url 可覆盖为中转站地址     │
└──────┬──────┘    └──────────────────────────────────┘


┌─────────────┐
│ 格式化输出   │  文本 / JSON
└─────────────┘

用法

bash
chainlesschain ask <question> [options]

参数

参数说明
<question>要提问的问题(必填)

选项

选项说明默认值
--model <model>模型名称qwen2:7b
--provider <provider>LLM 提供商 (ollama/openai/volcengine/deepseek/dashscope/gemini/mistral/anthropic)ollama
--base-url <url>API 基础地址(可覆盖为中转站/代理地址)根据 provider 自动选择
--api-key <key>API 密钥从对应环境变量读取
--json以 JSON 格式输出结果

关键文件

  • packages/cli/src/commands/ask.js — 命令实现,包含 queryLLM() 函数和命令注册
  • packages/cli/src/lib/llm-providers.js — 8 个 LLM 提供商适配层
  • packages/cli/src/lib/logger.js — 日志输出工具

安全考虑

  • API 密钥优先从环境变量读取,避免在命令行中暴露
  • 使用 --api-key 参数传入密钥时,密钥可能出现在进程列表和 shell 历史中
  • Ollama 默认使用本地服务,数据不会发送到外部

使用示例

场景 1:使用本地 Ollama 提问

bash
chainlesschain ask "什么是区块链?"
chainlesschain ask "解释量子计算" --model llama3:8b

场景 2:使用火山引擎(豆包)

bash
# 设置环境变量(推荐)
export VOLCENGINE_API_KEY=ark-xxxxxxxxxxxx

# 单次提问(使用旗舰模型)
chainlesschain ask "什么是大语言模型?" --provider volcengine

# 指定模型
chainlesschain ask "写一个快速排序" --provider volcengine --model doubao-seed-code

# 使用快速模型(更低成本)
chainlesschain ask "今天星期几?" --provider volcengine --model doubao-seed-1-6-lite-251015

场景 3:使用 OpenAI

bash
export OPENAI_API_KEY=sk-xxxxxxxxxxxx
chainlesschain ask "写一首诗" --provider openai --model gpt-4o

场景 4:使用 DeepSeek

bash
export DEEPSEEK_API_KEY=sk-xxxxxxxxxxxx
chainlesschain ask "用 Rust 写一个 HTTP 服务器" --provider deepseek --model deepseek-coder

场景 5:通过中转站使用 GPT-4o(无需科学上网)

bash
# API2D 中转站
chainlesschain ask "解释量子计算" \
  --provider openai \
  --base-url https://oa.api2d.net/v1 \
  --api-key fk-xxxxxx \
  --model gpt-4o

# OpenAI-SB 中转站
chainlesschain ask "你好" \
  --provider openai \
  --base-url https://api.openai-sb.com/v1 \
  --api-key sb-xxxxxx \
  --model gpt-4o

# One-API 网关(本地部署的多模型聚合)
chainlesschain ask "test" \
  --provider openai \
  --base-url http://localhost:3000/v1 \
  --api-key sk-oneapi-xxxxxx \
  --model gpt-4o

场景 6:通过中转站使用 DeepSeek / Claude

bash
# 中转站使用 DeepSeek
chainlesschain ask "你好" \
  --provider deepseek \
  --base-url https://your-proxy.com/v1 \
  --api-key sk-xxxxxx \
  --model deepseek-chat

# 通过 OpenAI 兼容中转站使用 Claude
chainlesschain ask "写一首诗" \
  --provider openai \
  --base-url https://your-claude-proxy.com/v1 \
  --api-key sk-xxxxxx \
  --model claude-sonnet-4-20250514

场景 7:企业自建代理

bash
# Nginx 反向代理
chainlesschain ask "分析一下" \
  --provider openai \
  --base-url https://ai-gateway.company.com/v1 \
  --model gpt-4o

# vLLM 部署的本地模型
chainlesschain ask "你好" \
  --provider openai \
  --base-url http://localhost:8000/v1 \
  --api-key dummy \
  --model my-finetuned-llama

场景 8:JSON 格式输出(用于脚本集成)

bash
chainlesschain ask "今天天气如何?" --json

输出示例:

json
{
  "question": "今天天气如何?",
  "answer": "...",
  "model": "qwen2:7b",
  "provider": "ollama"
}

环境变量

变量名提供商
OPENAI_API_KEYOpenAI
ANTHROPIC_API_KEYAnthropic
DEEPSEEK_API_KEYDeepSeek
DASHSCOPE_API_KEYDashScope (阿里)
GEMINI_API_KEYGoogle Gemini
MISTRAL_API_KEYMistral AI
VOLCENGINE_API_KEYVolcengine (豆包)

故障排查

问题解决方案
Ollama error: 404模型未安装,运行 ollama pull qwen2:7b
Ollama error: connection refusedOllama 服务未启动,运行 ollama serve
API key required for volcengine设置 VOLCENGINE_API_KEY 或使用 --api-key
Unsupported provider支持 8 个提供商,使用 chainlesschain llm providers 查看列表
中转站返回 401检查 --api-key 格式,中转站密钥格式可能与官方不同
--base-url 不生效确保 URL 包含 /v1 后缀
响应较慢本地模型受硬件限制,可尝试使用云端 API 或更小的模型

相关文档

基于 MIT 许可发布