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
7#include "absl/strings/match.h"
8
9namespace {
10
11std::string NormalizeOpenAIApiBase(std::string base) {
12 if (base.empty()) {
13 return base;
14 }
16 if (!absl::EndsWith(base, "/v1")) {
17 base += "/v1";
18 }
19 return base;
20}
21
22} // namespace
23
24#ifdef __EMSCRIPTEN__
26#endif
27
28namespace yaze {
29namespace cli {
30
31std::unique_ptr<AIService> CreateAIService() {
32 AIServiceConfig config;
33 config.provider = "gemini";
34 config.model = "gemini-1.5-flash";
35 return CreateAIService(config);
36}
37
38std::unique_ptr<AIService> CreateAIService(const AIServiceConfig& config) {
39 // For browser, we always use BrowserAIService wrapping Gemini
40 // The browser client handles API keys via config/JS
41
42 BrowserAIConfig browser_config;
43 browser_config.provider = config.provider.empty() ? "gemini" : config.provider;
44 browser_config.model = config.model;
45 if (browser_config.model.empty()) {
46 browser_config.model =
47 (browser_config.provider == "openai") ? "gpt-4o-mini"
48 : "gemini-1.5-flash";
49 }
50 if (browser_config.provider == "openai") {
51 browser_config.api_key = config.openai_api_key;
52 browser_config.api_base = NormalizeOpenAIApiBase(config.openai_base_url);
53 } else {
54 browser_config.api_key = config.gemini_api_key;
55 }
56 browser_config.verbose = config.verbose;
57
58#ifdef __EMSCRIPTEN__
59 auto http_client = std::make_unique<net::EmscriptenHttpClient>();
60#else
61 // Fallback for non-wasm builds if this file is included
62 std::unique_ptr<net::IHttpClient> http_client = nullptr;
63#endif
64
65 return std::make_unique<BrowserAIService>(browser_config, std::move(http_client));
66}
67
68absl::StatusOr<std::unique_ptr<AIService>> CreateAIServiceStrict(
69 const AIServiceConfig& config) {
70 return CreateAIService(config);
71}
72
73} // namespace cli
74} // namespace yaze
std::unique_ptr< AIService > CreateAIService()
absl::StatusOr< std::unique_ptr< AIService > > CreateAIServiceStrict(const AIServiceConfig &config)
std::string NormalizeOpenAiBaseUrl(std::string base)