1#ifndef YAZE_SRC_CLI_GEMINI_AI_SERVICE_H_
2#define YAZE_SRC_CLI_GEMINI_AI_SERVICE_H_
7#include "absl/status/status.h"
8#include "absl/status/statusor.h"
11#ifdef YAZE_AI_RUNTIME_AVAILABLE
20 std::string
model =
"gemini-2.5-flash";
36#ifdef YAZE_AI_RUNTIME_AVAILABLE
38class GeminiAIService :
public AIService {
45 const std::string& prompt)
override;
47 const std::vector<agent::ChatMessage>& history)
override;
63 const std::string& image_path,
const std::string& prompt);
66 std::string BuildSystemInstruction();
67 std::string BuildFunctionCallSchemas();
68 absl::StatusOr<AgentResponse> ParseGeminiResponse(
69 const std::string& response_body);
72 absl::StatusOr<std::string> EncodeImageToBase64(
73 const std::string& image_path)
const;
75 bool function_calling_enabled_ =
true;
78 PromptBuilder prompt_builder_;
88 const std::string& prompt)
override {
89 return absl::FailedPreconditionError(
90 "Gemini AI runtime is disabled (prompt: " + prompt +
")");
93 const std::vector<agent::ChatMessage>&)
override {
94 return absl::FailedPreconditionError(
"Gemini AI runtime is disabled");
97 return absl::FailedPreconditionError(
"Gemini AI runtime is disabled");
102 const std::string&) {
103 return absl::FailedPreconditionError(
"Gemini AI runtime is disabled");
106 return absl::FailedPreconditionError(
"Gemini AI runtime is disabled");
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
absl::StatusOr< AgentResponse > GenerateMultimodalResponse(const std::string &, const std::string &)
void EnableFunctionCalling(bool)
absl::StatusOr< AgentResponse > GenerateResponse(const std::vector< agent::ChatMessage > &) override
absl::Status CheckAvailability()
std::vector< std::string > GetAvailableTools() const
absl::StatusOr< std::vector< ModelInfo > > ListAvailableModels() override
GeminiAIService(const GeminiConfig &)
void SetRomContext(Rom *) override
std::string GetProviderName() const override
absl::StatusOr< AgentResponse > GenerateResponse(const std::string &prompt) override
bool use_function_calling
std::string prompt_version
GeminiConfig(const std::string &key)
bool use_enhanced_prompting
std::string system_instruction