48 std::string provider = config.
provider;
51 if (provider ==
"auto") {
55 std::cout <<
"🤖 Auto-detecting AI provider...\n";
56 std::cout <<
" Found Gemini API key, using Gemini\n";
64 auto test_service = std::make_unique<OllamaAIService>(test_config);
65 if (test_service->CheckAvailability().ok()) {
66 std::cout <<
"🤖 Auto-detecting AI provider...\n";
67 std::cout <<
" Ollama available, using Ollama\n";
70 std::cout <<
"🤖 No AI provider configured, using MockAIService\n";
71 std::cout <<
" Tip: Set GEMINI_API_KEY or start Ollama for real AI\n";
77 if (provider !=
"mock") {
78 std::cout <<
"🤖 AI Provider: " << provider <<
"\n";
82 if (provider ==
"ollama") {
85 if (!config.
model.empty()) {
89 auto service = std::make_unique<OllamaAIService>(ollama_config);
92 if (
auto status = service->CheckAvailability(); !status.ok()) {
93 std::cerr <<
"⚠️ Ollama unavailable: " << status.message() << std::endl;
94 std::cerr <<
" Falling back to MockAIService" << std::endl;
95 return std::make_unique<MockAIService>();
98 std::cout <<
" Using model: " << ollama_config.
model << std::endl;
99 return std::unique_ptr<AIService>(std::move(service));
104 if (provider ==
"gemini") {
106 std::cerr <<
"⚠️ Gemini API key not provided" << std::endl;
107 std::cerr <<
" Use --gemini_api_key=<key> or GEMINI_API_KEY environment variable" << std::endl;
108 std::cerr <<
" Falling back to MockAIService" << std::endl;
109 return std::make_unique<MockAIService>();
113 if (!config.
model.empty()) {
116 gemini_config.
prompt_version = absl::GetFlag(FLAGS_prompt_version);
120 std::cout <<
" Model: " << gemini_config.
model << std::endl;
122 std::cerr <<
" Prompt: " << gemini_config.
prompt_version << std::endl;
125 auto service = std::make_unique<GeminiAIService>(gemini_config);
134 std::cerr <<
"[DEBUG] Gemini service ready" << std::endl;
139 if (provider ==
"gemini") {
140 std::cerr <<
"⚠️ Gemini support not available: rebuild with YAZE_WITH_JSON=ON" << std::endl;
141 std::cerr <<
" Falling back to MockAIService" << std::endl;
146 if (provider ==
"mock") {
147 std::cout <<
" Using MockAIService (no real AI)\n";
149 return std::make_unique<MockAIService>();