| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 |
llm-client-cli
Command-line interface for LLM providers
A CLI tool for querying LLM providers and listing available models, built on the llm-client crate's LlmProvider interface.
Build
cargo build --release -p llm-client-cli
# target/release/llm-client-cli
Usage
Query
# Basic query
llm-client-cli query --provider openai --model gpt-4o-mini "hello"
# Streaming output
llm-client-cli query --provider openrouter --model openai/gpt-4o --stream "tell me a story"
# Custom endpoint with protocol override
llm-client-cli query \
--protocol anthropic \
--base-url https://api.lkeap.cloud.tencent.com/coding/anthropic \
--api-key-env TECENT_CODING_API_KEY \
--model glm-5 \
"hello"
# Direct API key (takes precedence over env var)
llm-client-cli query \
--provider openrouter \
--api-key "sk-or-xxx" \
--model anthropic/claude-sonnet-4 \
"hello"
# With JSON schema for structured output
llm-client-cli query \
--provider openai \
--model gpt-4o \
--schema '{"type":"object","properties":{"name":{"type":"string"},"age":{"type":"integer"}}}' \
"extract: John is 25 years old"
# With JSON schema file
llm-client-cli query \
--provider openai \
--model gpt-4o \
--schema-file schema.json \
"extract data from this text"
# With tools for function calling
llm-client-cli query \
--provider openai \
--model gpt-4o \
--tools '[{"name":"get_weather","description":"Get weather for a location","parameters":{"type":"object","properties":{"location":{"type":"string"}}}}]' \
--tool-choice auto \
"What's the weather in Tokyo?"
# With tools file
llm-client-cli query \
--provider openai \
--model gpt-4o \
--tools-file tools.json \
--tool-choice required \
"Check the weather"
Models
# List OpenRouter models
llm-client-cli models --provider openrouter
# List Ollama local models
llm-client-cli models --provider ollama
# List OpenAI models
llm-client-cli models --provider openai
# JSON output
llm-client-cli models --provider openai --json
# Custom endpoint
llm-client-cli models \
--protocol openai \
--base-url https://api.custom.com/v1 \
--api-key-env CUSTOM_API_KEY
Test
Test API key availability for providers:
# Test all providers
llm-client-cli test
# Test a specific provider
llm-client-cli test --provider openai
# JSON output
llm-client-cli test --json
Arguments
Query Arguments
| Argument | Description | Required |
|---|---|---|
<PROMPT> |
The prompt text | Yes |
--provider |
Provider name (openai, anthropic, gemini, ollama, openrouter, etc.) | No* |
--protocol |
Protocol override (openai, anthropic, gemini, ollama) | No* |
--base-url |
API base URL override | No* |
--api-key-env |
Environment variable name for API key | No* |
--api-key |
API key value directly (takes precedence over api-key-env) | No* |
--model |
Model name | Yes |
--stream |
Enable streaming output | No |
--schema |
JSON schema string for structured output | No |
--schema-file |
Path to JSON schema file | No |
--tools |
JSON array of tool definitions | No |
--tools-file |
Path to JSON file with tool definitions | No |
--tool-choice |
Tool choice: auto, none, required, or function name | No |
--temperature |
Temperature for response randomness | No |
--max-tokens |
Maximum tokens in the response | No |
--reasoning-effort |
Provider-side reasoning level: off, high, or max | No |
* Either --provider OR --protocol + --base-url must be provided.
Models Arguments
| Argument | Description | Required |
|---|---|---|
--provider |
Provider name | No* |
--protocol |
Protocol override | No* |
--base-url |
API base URL override | No* |
--api-key-env |
Environment variable name for API key | No* |
--api-key |
API key value | No* |
--json |
Output as JSON | No |
* Either --provider OR --protocol + --base-url must be provided.
Supported Providers
| Provider | Protocol | API Key Env |
|---|---|---|
| OpenAI | OpenAI Compatible | OPENAI_API_KEY |
| Anthropic | Anthropic | ANTHROPIC_API_KEY |
| Gemini | Gemini | GEMINI_API_KEY |
| Ollama | Ollama | (none) |
| Zhipu | Zhipu | ZHIPU_API_KEY |
| OpenRouter | OpenAI Compatible | OPENROUTER_API_KEY |
| DeepSeek | OpenAI Compatible | DEEPSEEK_API_KEY |
| Groq | OpenAI Compatible | GROQ_API_KEY |
| Mistral | OpenAI Compatible | MISTRAL_API_KEY |
| Together | OpenAI Compatible | TOGETHER_API_KEY |
| xAI | OpenAI Compatible | XAI_API_KEY |
| MiniMax | OpenAI Compatible | MINIMAX_API_KEY |
Parameter Precedence
- protocol:
--protocol> provider default > error - base-url:
--base-url> provider default > error - api-key:
--api-key>--api-key-env> provider default env > error (if required)
Examples
Quick Test
export OPENAI_API_KEY=sk-xxx
llm-client-cli query --provider openai --model gpt-4o-mini "say hello"
llm-client-cli models --provider openai
Streaming Response
llm-client-cli query \
--provider openai \
--model gpt-4o-mini \
--stream \
"write a short poem about code"
Structured Output
llm-client-cli query \
--provider openai \
--model gpt-4o-mini \
--schema '{"type":"object","properties":{"sentiment":{"type":"string"},"score":{"type":"number"}}}' \
"analyze: I love this product!"
Function Calling (Tools)
llm-client-cli query \
--provider openai \
--model gpt-4o \
--tools '[{"name":"get_weather","description":"Get current weather","parameters":{"type":"object","properties":{"location":{"type":"string"}},"required":["location"]}}]' \
--tool-choice auto \
"What's the weather like in Tokyo?"
Local Ollama
llm-client-cli models --provider ollama
llm-client-cli query \
--provider ollama \
--model llama3 \
"hello"
Error Handling
The CLI exits with code 1 on error and prints to stderr:
$ llm-client-cli query --provider openai --model gpt-4o-mini "hello"
error: config error: missing API key: specify --api_key, --api_key_env, or --provider with default