use llm_connector::LlmClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("đ Fetching Available Models from API\n");
println!("ââââââââââââââââââââââââââââââââââââââââ");
println!("Example: OpenAI Protocol");
println!("ââââââââââââââââââââââââââââââââââââââââ\n");
println!("đ fetch_models() - Fetch models from API:");
println!(" âšī¸ This makes an API call to get real-time model list");
println!(" â ī¸ Requires valid API key\n");
if let Ok(keys_content) = std::fs::read_to_string("keys.yaml") {
use serde::{Deserialize};
#[derive(Debug, Deserialize)]
struct ProviderConfig {
api_key: String,
base_url: String,
}
#[derive(Debug, Deserialize)]
struct KeysConfig {
providers: std::collections::HashMap<String, ProviderConfig>,
}
if let Ok(config) = serde_yaml::from_str::<KeysConfig>(&keys_content) {
if let Some(deepseek) = config.providers.get("deepseek") {
println!("ââââââââââââââââââââââââââââââââââââââââ");
println!("Testing with DeepSeek (OpenAI-compatible)");
println!("ââââââââââââââââââââââââââââââââââââââââ\n");
let client = LlmClient::openai_compatible(
&deepseek.api_key,
&deepseek.base_url,
);
match client.fetch_models().await {
Ok(models) => {
println!(" â
Success! Found {} models", models.len());
println!(" Models: {:?}", models);
println!(" â
Real-time data from DeepSeek API");
}
Err(e) => {
println!(" â Error: {}", e);
}
}
}
}
} else {
println!(" âšī¸ keys.yaml not found - skipping live test");
}
println!("\nââââââââââââââââââââââââââââââââââââââââ");
println!("đ Summary");
println!("ââââââââââââââââââââââââââââââââââââââââ\n");
println!("fetch_models():");
println!(" â
Real-time data from API");
println!(" â
Always up-to-date");
println!(" â
Works with OpenAI-compatible providers");
println!(" â Requires API call (slower)");
println!(" â Requires valid API key");
println!(" â Not supported by all protocols (Anthropic, Aliyun, Ollama)\n");
println!("đĄ Recommendation:");
println!(" - Use fetch_models() to get the latest model list from the API");
println!(" - Cache fetch_models() results to avoid repeated API calls");
println!(" - Supported by: OpenAI and OpenAI-compatible providers (DeepSeek, Zhipu, Moonshot, etc.)\n");
Ok(())
}