Download src/bin/api_server.rs from sanbo1200/ct: direct link, hf CLI and curl.
- Browser
- Download file 4.26 kB
-
https://huggingface.co/spaces/sanbo1200/ct/resolve/main/src/bin/api_server.rs
- Command line
-
hf download hf://spaces/sanbo1200/ct/src/bin/api_server.rs
-
curl -L -o api_server.rs https://huggingface.co/spaces/sanbo1200/ct/resolve/main/src/bin/api_server.rs
4.26 kB
| use chatgpt_rs::api::server; | |
| use chatgpt_rs::{log_error, log_info, log_success}; | |
| use std::env; | |
| fn print_usage() { | |
| println!("Usage: api_server [OPTIONS]"); | |
| println!(); | |
| println!("Options:"); | |
| println!(" --host <HOST> Server host (default: 0.0.0.0)"); | |
| println!(" --port <PORT> Server port (default: 7860)"); | |
| println!(" --proxy <PROXY> Default proxy URL (default: http://127.0.0.1:1082)"); | |
| println!(" --help Show this help message"); | |
| println!(); | |
| println!("Examples:"); | |
| println!(" api_server"); | |
| println!(" api_server --port 8080"); | |
| println!(" api_server --proxy http://proxy.example.com:8080"); | |
| println!(" api_server --host 127.0.0.1 --port 8080 --proxy http://localhost:7890"); | |
| } | |
| async fn main() { | |
| tracing_subscriber::fmt::init(); | |
| let args: Vec<String> = env::args().collect(); | |
| // Parse command line arguments | |
| let mut host = "0.0.0.0".to_string(); | |
| let mut port = 7860u16; | |
| let mut default_proxy = Some("http://127.0.0.1:1082".to_string()); | |
| let mut i = 1; | |
| while i < args.len() { | |
| match args[i].as_str() { | |
| "--help" | "-h" => { | |
| print_usage(); | |
| return; | |
| } | |
| "--host" => { | |
| if i + 1 < args.len() { | |
| host = args[i + 1].clone(); | |
| i += 2; | |
| } else { | |
| log_error!("--host requires a value"); | |
| std::process::exit(1); | |
| } | |
| } | |
| "--port" => { | |
| if i + 1 < args.len() { | |
| match args[i + 1].parse::<u16>() { | |
| Ok(p) => port = p, | |
| Err(_) => { | |
| log_error!("Invalid port number: {}", args[i + 1]); | |
| std::process::exit(1); | |
| } | |
| } | |
| i += 2; | |
| } else { | |
| log_error!("--port requires a value"); | |
| std::process::exit(1); | |
| } | |
| } | |
| "--proxy" => { | |
| if i + 1 < args.len() { | |
| default_proxy = Some(args[i + 1].clone()); | |
| i += 2; | |
| } else { | |
| log_error!("--proxy requires a value"); | |
| std::process::exit(1); | |
| } | |
| } | |
| "--no-proxy" => { | |
| default_proxy = None; | |
| i += 1; | |
| } | |
| _ => { | |
| log_error!("Unknown option: {}", args[i]); | |
| println!(); | |
| print_usage(); | |
| std::process::exit(1); | |
| } | |
| } | |
| } | |
| // Environment variables can override command line args | |
| if let Ok(env_host) = env::var("API_HOST") { | |
| host = env_host; | |
| } | |
| if let Ok(env_port) = env::var("API_PORT") { | |
| if let Ok(p) = env_port.parse::<u16>() { | |
| port = p; | |
| } | |
| } | |
| if let Ok(env_proxy) = env::var("DEFAULT_PROXY") { | |
| default_proxy = Some(env_proxy); | |
| } | |
| log_info!("Starting ChatGPT-RS API Server"); | |
| log_info!("================================"); | |
| log_info!("Host: {}", host); | |
| log_info!("Port: {}", port); | |
| if let Some(ref proxy) = default_proxy { | |
| log_info!("Default Proxy: {}", proxy); | |
| } else { | |
| log_info!("Default Proxy: None"); | |
| } | |
| log_info!("================================"); | |
| log_info!("Endpoints:"); | |
| log_info!(" POST /v1/chat/completions - OpenAI-compatible chat completions"); | |
| log_info!(" POST /api/v1/chat/completions - Alternative API path"); | |
| log_info!(" POST /hf/v1/chat/completions - HuggingFace-compatible API path"); | |
| log_info!(" GET /v1/models - List available models"); | |
| log_info!(" GET /api/v1/models - List available models (alternative path)"); | |
| log_info!(" GET /hf/v1/models - List available models (HuggingFace path)"); | |
| log_info!("================================"); | |
| if let Err(err) = server::run(&host, port, default_proxy).await { | |
| log_error!("API server failed: {}", err); | |
| std::process::exit(1); | |
| } | |
| log_success!("API server stopped"); | |
| } | |