merge pr/go-restream/20

This commit is contained in:
jhqxxx
2026-01-30 22:17:00 +08:00
parent f010087e97
commit 292dfd31e4
2 changed files with 55 additions and 17 deletions
+39 -1
View File
@@ -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)");
+16 -16
View File
@@ -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,
}