yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
service_factory_browser.cc
Go to the documentation of this file.
2
6
7#ifdef __EMSCRIPTEN__
9#endif
10
11namespace yaze {
12namespace cli {
13
14std::unique_ptr<AIService> CreateAIService() {
15 AIServiceConfig config;
16 config.provider = "gemini";
17 config.model = "gemini-1.5-flash";
18 return CreateAIService(config);
19}
20
21std::unique_ptr<AIService> CreateAIService(const AIServiceConfig& config) {
22 // For browser, we always use BrowserAIService wrapping Gemini
23 // The browser client handles API keys via config/JS
24
25 BrowserAIConfig browser_config;
26 browser_config.provider = config.provider.empty() ? "gemini" : config.provider;
27 browser_config.model = config.model;
28 if (browser_config.model.empty()) {
29 browser_config.model =
30 (browser_config.provider == "openai") ? "gpt-4o-mini"
31 : "gemini-1.5-flash";
32 }
33 if (browser_config.provider == "openai") {
34 browser_config.api_key = config.openai_api_key.empty()
35 ? config.gemini_api_key // fallback
36 : config.openai_api_key;
37 } else {
38 browser_config.api_key = config.gemini_api_key;
39 }
40 browser_config.verbose = config.verbose;
41
42#ifdef __EMSCRIPTEN__
43 auto http_client = std::make_unique<net::EmscriptenHttpClient>();
44#else
45 // Fallback for non-wasm builds if this file is included
46 std::unique_ptr<net::IHttpClient> http_client = nullptr;
47#endif
48
49 return std::make_unique<BrowserAIService>(browser_config, std::move(http_client));
50}
51
52absl::StatusOr<std::unique_ptr<AIService>> CreateAIServiceStrict(
53 const AIServiceConfig& config) {
54 return CreateAIService(config);
55}
56
57} // namespace cli
58} // namespace yaze
std::unique_ptr< AIService > CreateAIService()
absl::StatusOr< std::unique_ptr< AIService > > CreateAIServiceStrict(const AIServiceConfig &config)