yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
ollama_ai_service.h
Go to the documentation of this file.
1#ifndef YAZE_SRC_CLI_OLLAMA_AI_SERVICE_H_
2#define YAZE_SRC_CLI_OLLAMA_AI_SERVICE_H_
3
4#include <cstdint>
5#include <string>
6#include <vector>
7
8#include "absl/status/status.h"
9#include "absl/status/statusor.h"
10#include "absl/time/time.h"
13
14#ifdef YAZE_AI_RUNTIME_AVAILABLE
16#endif
17
18namespace yaze {
19namespace cli {
20
21// Ollama configuration for local LLM inference
23 std::string base_url = "http://localhost:11434"; // Default Ollama endpoint
24 std::string model =
25 "qwen2.5-coder:0.5b"; // Lightweight default with tool-calling
26 float temperature = 0.1; // Low temp for deterministic commands
27 int max_tokens = 2048; // Sufficient for command lists
28 std::string system_prompt; // Injected from resource catalogue
29 bool use_enhanced_prompting = true; // Enable few-shot examples
30 float top_p = 0.92f;
31 int top_k = 40;
32 int num_ctx = 4096;
33 bool stream = false;
35 std::vector<std::string> favorite_models;
36};
37
38#ifdef YAZE_AI_RUNTIME_AVAILABLE
39
40class OllamaAIService : public AIService {
41 public:
42 explicit OllamaAIService(const OllamaConfig& config);
43
44 struct OllamaModelDetails {
45 std::string name;
46 std::string digest;
47 std::string family;
48 std::string parameter_size;
49 std::string quantization_level;
50 uint64_t size_bytes = 0;
51 absl::Time modified_at = absl::InfinitePast();
52 };
53
54 void SetRomContext(Rom* rom) override;
55
56 // Generate z3ed commands from natural language prompt
57 absl::StatusOr<AgentResponse> GenerateResponse(
58 const std::string& prompt) override;
59 absl::StatusOr<AgentResponse> GenerateResponse(
60 const std::vector<agent::ChatMessage>& history) override;
61
62 // Health check: verify Ollama server is running and model is available
63 absl::Status CheckAvailability();
64
65 // List available models on Ollama server
66 absl::StatusOr<std::vector<ModelInfo>> ListAvailableModels() override;
67
68 std::string GetProviderName() const override { return kProviderOllama; }
69
70 private:
71 OllamaConfig config_;
72 PromptBuilder prompt_builder_;
73
74 // Build system prompt from resource catalogue
75 std::string BuildSystemPrompt();
76
77 // Parse JSON response from Ollama API
78 absl::StatusOr<std::string> ParseOllamaResponse(
79 const std::string& json_response);
80};
81
82#else // !YAZE_AI_RUNTIME_AVAILABLE
83
84class OllamaAIService : public AIService {
85 public:
87 std::string name;
88 std::string digest;
89 std::string family;
90 std::string parameter_size;
91 std::string quantization_level;
92 uint64_t size_bytes = 0;
93 absl::Time modified_at = absl::InfinitePast();
94 };
95
96 explicit OllamaAIService(const OllamaConfig&) {}
97 void SetRomContext(Rom*) override {}
98 absl::StatusOr<AgentResponse> GenerateResponse(const std::string&) override {
99 return absl::FailedPreconditionError("Ollama AI runtime is disabled");
100 }
101 absl::StatusOr<AgentResponse> GenerateResponse(
102 const std::vector<agent::ChatMessage>&) override {
103 return absl::FailedPreconditionError("Ollama AI runtime is disabled");
104 }
105 absl::Status CheckAvailability() {
106 return absl::FailedPreconditionError("Ollama AI runtime is disabled");
107 }
108 absl::StatusOr<std::vector<ModelInfo>> ListAvailableModels() override {
109 return absl::FailedPreconditionError("Ollama AI runtime is disabled");
110 }
111 std::string GetProviderName() const override { return kProviderOllama; }
112};
113
114#endif // YAZE_AI_RUNTIME_AVAILABLE
115
116} // namespace cli
117} // namespace yaze
118
119#endif // YAZE_SRC_CLI_OLLAMA_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
absl::StatusOr< std::vector< ModelInfo > > ListAvailableModels() override
std::string GetProviderName() const override
OllamaAIService(const OllamaConfig &)
absl::StatusOr< AgentResponse > GenerateResponse(const std::vector< agent::ChatMessage > &) override
void SetRomContext(Rom *) override
absl::StatusOr< AgentResponse > GenerateResponse(const std::string &) override
constexpr char kProviderOllama[]
Definition provider_ids.h:8
std::vector< std::string > favorite_models