yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
ai_service.h
Go to the documentation of this file.
1#ifndef YAZE_SRC_CLI_SERVICE_AI_AI_SERVICE_H_
2#define YAZE_SRC_CLI_SERVICE_AI_AI_SERVICE_H_
3
4#include <memory>
5#include <string>
6#include <vector>
7
8#include "absl/status/statusor.h"
11
12namespace yaze {
13class Rom;
14
15namespace cli {
16namespace agent {
17struct ChatMessage;
18}
19// Abstract interface for AI services
20class AIService {
21 public:
22 virtual ~AIService() = default;
23
24 // Provide the AI service with the active ROM so prompts can include
25 // project-specific context.
26 virtual void SetRomContext(Rom* rom) { (void)rom; }
27
28 // Generate a response from a single prompt.
29 virtual absl::StatusOr<AgentResponse> GenerateResponse(
30 const std::string& prompt) = 0;
31
32 // Generate a response from a conversation history.
33 virtual absl::StatusOr<AgentResponse> GenerateResponse(
34 const std::vector<agent::ChatMessage>& history) = 0;
35
36 // List available models for this service
37 virtual absl::StatusOr<std::vector<ModelInfo>> ListAvailableModels() {
38 return std::vector<ModelInfo>{};
39 }
40
41 // Get the provider name
42 virtual std::string GetProviderName() const = 0;
43};
44
45// Mock implementation for testing
46class MockAIService : public AIService {
47 public:
48 void SetRomContext(Rom* rom) override { (void)rom; }
49 absl::StatusOr<AgentResponse> GenerateResponse(
50 const std::string& prompt) override;
51 absl::StatusOr<AgentResponse> GenerateResponse(
52 const std::vector<agent::ChatMessage>& history) override;
53
54 std::string GetProviderName() const override { return kProviderMock; }
55
56 absl::StatusOr<std::vector<ModelInfo>> ListAvailableModels() override {
57 std::vector<ModelInfo> models;
58 models.push_back({.name = "mock-model",
59 .display_name = "Mock Model",
60 .provider = kProviderMock,
61 .description = "A mock model for testing",
62 .is_local = true});
63 return models;
64 }
65};
66
67} // namespace cli
68} // namespace yaze
69
70#endif // YAZE_SRC_CLI_SERVICE_AI_AI_SERVICE_H_
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:28
virtual std::string GetProviderName() const =0
virtual ~AIService()=default
virtual absl::StatusOr< AgentResponse > GenerateResponse(const std::vector< agent::ChatMessage > &history)=0
virtual absl::StatusOr< AgentResponse > GenerateResponse(const std::string &prompt)=0
virtual absl::StatusOr< std::vector< ModelInfo > > ListAvailableModels()
Definition ai_service.h:37
virtual void SetRomContext(Rom *rom)
Definition ai_service.h:26
void SetRomContext(Rom *rom) override
Definition ai_service.h:48
absl::StatusOr< AgentResponse > GenerateResponse(const std::string &prompt) override
Definition ai_service.cc:92
absl::StatusOr< std::vector< ModelInfo > > ListAvailableModels() override
Definition ai_service.h:56
std::string GetProviderName() const override
Definition ai_service.h:54
constexpr char kProviderMock[]
Definition provider_ids.h:7