feat: add Agnes AI as default provider, support multi-provider switching
- Default provider changed from Zhipu to Agnes AI (agnes-2.0-flash) - Add --provider flag: agnes (default), zhipu, custom - Add AGNES_API_KEY env var support (still compatible with ZHIPU_API_KEY) - Add provider presets system for easy switching between AI backends - Add .gitignore to prevent config.json with API keys from being committed - Update usage examples Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
12
main.go
12
main.go
@@ -18,12 +18,13 @@ func main() {
|
||||
saveConfig bool
|
||||
)
|
||||
|
||||
flag.StringVar(&apiKey, "apikey", "", "Zhipu AI API key (or set ZHIPU_API_KEY env var)")
|
||||
flag.StringVar(&apiKey, "apikey", "", "API key (or set AGNES_API_KEY env var)")
|
||||
flag.StringVar(&configPath, "config", "", "Path to config.json file")
|
||||
flag.StringVar(&prompt, "prompt", "", "Custom prompt for image analysis")
|
||||
flag.BoolVar(&quiet, "q", false, "Quiet mode — only output the model's response text")
|
||||
flag.BoolVar(&noThink, "no-think", false, "Disable thinking mode (faster, lower server load)")
|
||||
flag.BoolVar(&saveConfig, "save-config", false, "Save the API key to config.json and exit")
|
||||
provider := flag.String("provider", "agnes", "AI provider: agnes (default), zhipu, or custom")
|
||||
flag.Parse()
|
||||
|
||||
// Handle --save-config: persist the key and exit
|
||||
@@ -50,8 +51,12 @@ func main() {
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Apply provider preset (respects user's custom model/baseURL in config)
|
||||
cfg.ApplyProvider(*provider)
|
||||
|
||||
if !quiet {
|
||||
fmt.Fprintf(os.Stderr, "Using model: %s | API key: %s\n", cfg.Model, MaskKey(cfg.APIKey))
|
||||
fmt.Fprintf(os.Stderr, "Provider: %s | Model: %s | API key: %s\n",
|
||||
cfg.Provider, cfg.Model, MaskKey(cfg.APIKey))
|
||||
}
|
||||
|
||||
// Collect image paths from remaining args
|
||||
@@ -64,8 +69,9 @@ func main() {
|
||||
fmt.Fprintln(os.Stderr, "")
|
||||
fmt.Fprintln(os.Stderr, "Examples:")
|
||||
fmt.Fprintln(os.Stderr, " vision-tool photo.jpg")
|
||||
fmt.Fprintln(os.Stderr, " vision-tool -prompt \"这张图里有什么文字?\" screenshot.png")
|
||||
fmt.Fprintln(os.Stderr, ` vision-tool -prompt "这张图里有什么文字?" screenshot.png`)
|
||||
fmt.Fprintln(os.Stderr, " vision-tool -q img1.png img2.png")
|
||||
fmt.Fprintln(os.Stderr, " vision-tool --provider zhipu photo.jpg")
|
||||
fmt.Fprintln(os.Stderr, " vision-tool --apikey YOUR_KEY photo.jpg")
|
||||
fmt.Fprintln(os.Stderr, " vision-tool --save-config --apikey YOUR_KEY")
|
||||
os.Exit(1)
|
||||
|
||||
Reference in New Issue
Block a user