Prompt Tools 0.3.2
Loading...
Searching...
No Matches
ollama_provider.hpp
Go to the documentation of this file.
1#pragma once
2
4
5namespace prompt
6{
7
17{
18public:
26
34 virtual void initialize(rclcpp::Node::SharedPtr node) override
35 {
36 // initialize base class
37 initialize_prompt_base(node, "OllamaProvider", "");
38 }
39
40
41protected:
51 virtual Poco::JSON::Object toJson(prompt::PromptRequest& prompt) override
52 {
53 // add options
54 Poco::JSON::Object result = handle_options(prompt.options);
55
56 // add prompt
57 result.set("prompt", prompt.prompt);
58
59 return result;
60 }
61
72 virtual Poco::JSON::Object toJsonConversation(prompt::PromptRequest& prompt,
73 std::vector<PromptDialogue>& conversation)
74 {
75 // add options
76 Poco::JSON::Object result = handle_options(prompt.options);
77
78 Poco::JSON::Array messages_array;
79
80 for (const prompt::PromptDialogue& dialog_ : conversation_)
81 {
82 Poco::JSON::Object dialog_object_;
83
84 dialog_object_.set("role", dialog_.role);
85 dialog_object_.set("content", dialog_.content);
86
87 messages_array.add(dialog_object_);
88 }
89
90 // add latest prompt
91 Poco::JSON::Object latest_dialog_object_;
92 latest_dialog_object_.set("role", "user");
93 latest_dialog_object_.set("content", prompt.prompt);
94
95 messages_array.add(latest_dialog_object_);
96
97 // add prompt
98 result.set("messages", messages_array);
99
100 std::ostringstream jsonStream;
101 result.stringify(jsonStream);
102 RCLCPP_INFO(node_->get_logger(), "Poco JSON Object: %s", jsonStream.str().c_str());
103
104 return result;
105 }
106
116 virtual prompt::PromptResponse fromJson(const Poco::JSON::Object::Ptr object) override
117 {
119
120 // try parse response
121 if (object->get("response"))
122 res.response = object->get("response").toString();
123
124 // TODO: create custom parsers for specific options from different apis
125 // res.success = object->get("success").convert<bool>();
126 // res.accuracy = object->get("accuracy").convert<double>();
127 // res.confidence = object->get("confidence").convert<double>();
128 // res.risk = object->get("risk").convert<double>();
129 // for all other variables loop and push back to response key/values
130 for (Poco::JSON::Object::ConstIterator it = object->begin(); it != object->end(); ++it)
131 {
132 res.options.push_back(prompt::PromptOption{ it->first, it->second.convert<std::string>(), "" });
133 }
134
135 return res;
136 }
137
148 virtual prompt::PromptResponse fromJsonConversation(const Poco::JSON::Object::Ptr object)
149 {
151
152 // TODO: create custom parsers for specific options from different apis
153 // res.success = object->get("success").convert<bool>();
154 // res.accuracy = object->get("accuracy").convert<double>();
155 // res.confidence = object->get("confidence").convert<double>();
156 // res.risk = object->get("risk").convert<double>();
157 // for all other variables loop and push back to response key/values
158
159 for (Poco::JSON::Object::ConstIterator it = object->begin(); it != object->end(); ++it)
160 {
161 if (it->first != "message")
162 {
163 res.options.push_back(prompt::PromptOption{ it->first, it->second.convert<std::string>(), "" });
164 }
165 else
166 {
167 Poco::JSON::Object::Ptr messageObj = object->getObject("message");
168 res.response = messageObj->get("content").toString();
169 }
170 }
171
172 return res;
173 }
174
180 std::vector<prompt::PromptDialogue> conversation_;
181};
182
183} // namespace prompt
rclcpp::Node::SharedPtr node_
Node shared pointer.
Definition base_class.hpp:105
OllamaProvider.
Definition ollama_provider.hpp:17
virtual prompt::PromptResponse fromJson(const Poco::JSON::Object::Ptr object) override
Convert a JSON object to a prompt response.
Definition ollama_provider.hpp:116
virtual Poco::JSON::Object toJsonConversation(prompt::PromptRequest &prompt, std::vector< PromptDialogue > &conversation)
Convert a prompt request with conversation history to a JSON object.
Definition ollama_provider.hpp:72
virtual prompt::PromptResponse fromJsonConversation(const Poco::JSON::Object::Ptr object)
Convert a JSON object to a prompt response with conversation history.
Definition ollama_provider.hpp:148
OllamaProvider()
Construct a new OllamaProvider object.
Definition ollama_provider.hpp:23
virtual Poco::JSON::Object toJson(prompt::PromptRequest &prompt) override
Convert a prompt request to a JSON object.
Definition ollama_provider.hpp:51
virtual void initialize(rclcpp::Node::SharedPtr node) override
Initialize the OllamaProvider.
Definition ollama_provider.hpp:34
std::vector< prompt::PromptDialogue > conversation_
A vector of prompt dialogues representing the conversation history.
Definition ollama_provider.hpp:180
PromptBaseClass.
Definition prompt_base_class.hpp:17
virtual void initialize_prompt_base(rclcpp::Node::SharedPtr node, std::string plugin_name="PromptBaseClass", std::string api_key_name="")
Initialize the REST base class.
Definition prompt_base_class.hpp:45
virtual const Poco::JSON::Object handle_options(std::vector< prompt::PromptOption > &options)
Process options from the prompt request.
Definition rest_base_class.hpp:314
Definition base_class.hpp:8
Definition structs.hpp:17
Definition structs.hpp:9
Definition structs.hpp:24
Definition structs.hpp:35
std::string response
Definition structs.hpp:36
std::vector< PromptOption > options
Definition structs.hpp:38