From 292dfd31e4e8a6b9078f4e709b5b97a7133f98da Mon Sep 17 00:00:00 2001 From: jhqxxx <18280426169@163.com> Date: Fri, 30 Jan 2026 22:17:00 +0800 Subject: [PATCH] merge pr/go-restream/20 --- src/main.rs | 40 +++++++++++++++++++++++++++++++++++++++- src/models/mod.rs | 32 ++++++++++++++++---------------- 2 files changed, 55 insertions(+), 17 deletions(-) diff --git a/src/main.rs b/src/main.rs index c2fccbc..6be5f4a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ use std::{net::IpAddr, str::FromStr, time::Duration}; use aha::{models::WhichModel, utils::get_default_save_dir}; -use clap::{Args, Parser, Subcommand}; +use clap::{Args, Parser, Subcommand, ValueEnum}; use modelscope::ModelScope; use rocket::{ Config, @@ -55,6 +55,8 @@ enum Commands { Download(DownloadArgs), /// Run model inference directly Run(RunArgs), + /// List all supported models + List, } /// Common/shared arguments for server operations @@ -194,6 +196,41 @@ fn get_model_id(model: WhichModel) -> &'static str { } } +/// List all supported models +fn run_list() -> anyhow::Result<()> { + let models = [ + WhichModel::MiniCPM4_0_5B, + WhichModel::Qwen2_5vl3B, + WhichModel::Qwen2_5vl7B, + WhichModel::Qwen3_0_6B, + WhichModel::Qwen3vl2B, + WhichModel::Qwen3vl4B, + WhichModel::Qwen3vl8B, + WhichModel::Qwen3vl32B, + WhichModel::DeepSeekOCR, + WhichModel::HunyuanOCR, + WhichModel::PaddleOCRVL, + WhichModel::RMBG2_0, + WhichModel::VoxCPM, + WhichModel::VoxCPM1_5, + WhichModel::GlmASRNano2512, + WhichModel::FunASRNano2512, + ]; + + println!("Available models:"); + println!(); + println!("{:<30} {}", "Model Name", "ModelScope ID"); + println!("{}", "-".repeat(80)); + for model in models { + let possible_value = model.to_possible_value().unwrap(); + let name = possible_value.get_name(); + let id = get_model_id(model); + println!("{:<30} {}", name, id); + } + + Ok(()) +} + /// Run the 'cli' subcommand: download model (if needed) and start service async fn run_cli(args: CliArgs) -> anyhow::Result<()> { let CliArgs { common, weight_path, save_dir, download_retries } = args; @@ -329,6 +366,7 @@ async fn main() -> anyhow::Result<()> { Some(Commands::Serv(args)) => run_serv(args).await, Some(Commands::Download(args)) => run_download(args).await, Some(Commands::Run(args)) => run_run(args), + Some(Commands::List) => run_list(), None => { // Backward compatibility: when no subcommand is provided, use 'cli' behavior let model = cli.model.expect("Model is required (use -m or --model)"); diff --git a/src/models/mod.rs b/src/models/mod.rs index 4165669..d5a135a 100644 --- a/src/models/mod.rs +++ b/src/models/mod.rs @@ -29,37 +29,37 @@ use crate::models::{ #[derive(Debug, Clone, Copy, PartialEq, Eq, clap::ValueEnum)] pub enum WhichModel { - #[value(name = "minicpm4-0.5b")] + #[value(name = "minicpm4-0.5b", hide = true)] MiniCPM4_0_5B, - #[value(name = "qwen2.5vl-3b")] + #[value(name = "qwen2.5vl-3b", hide = true)] Qwen2_5vl3B, - #[value(name = "qwen2.5vl-7b")] + #[value(name = "qwen2.5vl-7b", hide = true)] Qwen2_5vl7B, - #[value(name = "qwen3-0.6b")] + #[value(name = "qwen3-0.6b", hide = true)] Qwen3_0_6B, - #[value(name = "qwen3vl-2b")] + #[value(name = "qwen3vl-2b", hide = true)] Qwen3vl2B, - #[value(name = "qwen3vl-4b")] + #[value(name = "qwen3vl-4b", hide = true)] Qwen3vl4B, - #[value(name = "qwen3vl-8b")] + #[value(name = "qwen3vl-8b", hide = true)] Qwen3vl8B, - #[value(name = "qwen3vl-32b")] + #[value(name = "qwen3vl-32b", hide = true)] Qwen3vl32B, - #[value(name = "deepseek-ocr")] + #[value(name = "deepseek-ocr", hide = true)] DeepSeekOCR, - #[value(name = "hunyuan-ocr")] + #[value(name = "hunyuan-ocr", hide = true)] HunyuanOCR, - #[value(name = "paddleocr-vl")] + #[value(name = "paddleocr-vl", hide = true)] PaddleOCRVL, - #[value(name = "RMBG2.0")] + #[value(name = "RMBG2.0", hide = true)] RMBG2_0, - #[value(name = "voxcpm")] + #[value(name = "voxcpm", hide = true)] VoxCPM, - #[value(name = "voxcpm1.5")] + #[value(name = "voxcpm1.5", hide = true)] VoxCPM1_5, - #[value(name = "glm-asr-nano-2512")] + #[value(name = "glm-asr-nano-2512", hide = true)] GlmASRNano2512, - #[value(name = "fun-asr-nano-2512")] + #[value(name = "fun-asr-nano-2512", hide = true)] FunASRNano2512, }