llama_ros: llama.cpp for ROS 2
Loading...
Searching...
No Matches
llama_node.hpp
Go to the documentation of this file.
1// MIT License
2//
3// Copyright (c) 2023 Miguel Ángel González Santamarta
4//
5// Permission is hereby granted, free of charge, to any person obtaining a copy
6// of this software and associated documentation files (the "Software"), to deal
7// in the Software without restriction, including without limitation the rights
8// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9// copies of the Software, and to permit persons to whom the Software is
10// furnished to do so, subject to the following conditions:
11//
12// The above copyright notice and this permission notice shall be included in
13// all copies or substantial portions of the Software.
14//
15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21// SOFTWARE.
22
23#ifndef LLAMA_ROS__LLAMA_NODE_HPP
24#define LLAMA_ROS__LLAMA_NODE_HPP
25
26#include <rclcpp/rclcpp.hpp>
27#include <rclcpp_action/rclcpp_action.hpp>
28#include <rclcpp_lifecycle/lifecycle_node.hpp>
29
30#include <memory>
31#include <string>
32
33#include "common.h"
34#include "llama.h"
35
36#include "llama_msgs/action/generate_response.hpp"
37#include "llama_msgs/srv/detokenize.hpp"
38#include "llama_msgs/srv/format_chat_messages.hpp"
39#include "llama_msgs/srv/generate_embeddings.hpp"
40#include "llama_msgs/srv/get_metadata.hpp"
41#include "llama_msgs/srv/list_lo_r_as.hpp"
42#include "llama_msgs/srv/rerank_documents.hpp"
43#include "llama_msgs/srv/tokenize.hpp"
44#include "llama_msgs/srv/update_lo_r_as.hpp"
45#include "llama_ros/llama.hpp"
47
48namespace llama_ros {
49
51 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn;
52
53class LlamaNode : public rclcpp_lifecycle::LifecycleNode {
54
55 using GenerateResponse = llama_msgs::action::GenerateResponse;
57 rclcpp_action::ServerGoalHandle<GenerateResponse>;
58
59public:
60 LlamaNode();
61
62 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn
63 on_configure(const rclcpp_lifecycle::State &);
64 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn
65 on_activate(const rclcpp_lifecycle::State &);
66 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn
67 on_deactivate(const rclcpp_lifecycle::State &);
68 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn
69 on_cleanup(const rclcpp_lifecycle::State &);
70 rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn
71 on_shutdown(const rclcpp_lifecycle::State &);
72
73protected:
74 std::unique_ptr<Llama> llama;
77 std::shared_ptr<GoalHandleGenerateResponse> goal_handle_;
78
79 virtual void create_llama();
80 void destroy_llama();
81
82 virtual bool goal_empty(std::shared_ptr<const GenerateResponse::Goal> goal);
83 virtual void
84 execute(const std::shared_ptr<GoalHandleGenerateResponse> goal_handle);
85 void send_text(const struct CompletionOutput &completion);
86
87private:
88 // ros2
89 rclcpp::Service<llama_msgs::srv::GetMetadata>::SharedPtr
91 rclcpp::Service<llama_msgs::srv::Tokenize>::SharedPtr tokenize_service_;
92 rclcpp::Service<llama_msgs::srv::Detokenize>::SharedPtr detokenize_service_;
93 rclcpp::Service<llama_msgs::srv::GenerateEmbeddings>::SharedPtr
95 rclcpp::Service<llama_msgs::srv::RerankDocuments>::SharedPtr
97 rclcpp::Service<llama_msgs::srv::FormatChatMessages>::SharedPtr
99 rclcpp::Service<llama_msgs::srv::ListLoRAs>::SharedPtr list_loras_service_;
100 rclcpp::Service<llama_msgs::srv::UpdateLoRAs>::SharedPtr
102 rclcpp_action::Server<GenerateResponse>::SharedPtr
104
105 // methods
107 const std::shared_ptr<llama_msgs::srv::GetMetadata::Request> request,
108 std::shared_ptr<llama_msgs::srv::GetMetadata::Response> response);
109
111 const std::shared_ptr<llama_msgs::srv::Tokenize::Request> request,
112 std::shared_ptr<llama_msgs::srv::Tokenize::Response> response);
114 const std::shared_ptr<llama_msgs::srv::Detokenize::Request> request,
115 std::shared_ptr<llama_msgs::srv::Detokenize::Response> response);
116
118 const std::shared_ptr<llama_msgs::srv::GenerateEmbeddings::Request>
119 request,
120 std::shared_ptr<llama_msgs::srv::GenerateEmbeddings::Response> response);
122 const std::shared_ptr<llama_msgs::srv::RerankDocuments::Request> request,
123 std::shared_ptr<llama_msgs::srv::RerankDocuments::Response> response);
125 const std::shared_ptr<llama_msgs::srv::FormatChatMessages::Request>
126 request,
127 std::shared_ptr<llama_msgs::srv::FormatChatMessages::Response> response);
128
130 const std::shared_ptr<llama_msgs::srv::ListLoRAs::Request> request,
131 std::shared_ptr<llama_msgs::srv::ListLoRAs::Response> response);
133 const std::shared_ptr<llama_msgs::srv::UpdateLoRAs::Request> request,
134 std::shared_ptr<llama_msgs::srv::UpdateLoRAs::Response> response);
135
136 rclcpp_action::GoalResponse
137 handle_goal(const rclcpp_action::GoalUUID &uuid,
138 std::shared_ptr<const GenerateResponse::Goal> goal);
139 rclcpp_action::CancelResponse
140 handle_cancel(const std::shared_ptr<GoalHandleGenerateResponse> goal_handle);
141 void handle_accepted(
142 const std::shared_ptr<GoalHandleGenerateResponse> goal_handle);
143};
144
145} // namespace llama_ros
146
147#endif
rclcpp_action::GoalResponse handle_goal(const rclcpp_action::GoalUUID &uuid, std::shared_ptr< const GenerateResponse::Goal > goal)
Definition llama_node.cpp:451
void detokenize_service_callback(const std::shared_ptr< llama_msgs::srv::Detokenize::Request > request, std::shared_ptr< llama_msgs::srv::Detokenize::Response > response)
Definition llama_node.cpp:328
void rerank_documents_service_callback(const std::shared_ptr< llama_msgs::srv::RerankDocuments::Request > request, std::shared_ptr< llama_msgs::srv::RerankDocuments::Response > response)
Definition llama_node.cpp:364
void get_metadata_service_callback(const std::shared_ptr< llama_msgs::srv::GetMetadata::Request > request, std::shared_ptr< llama_msgs::srv::GetMetadata::Response > response)
Definition llama_node.cpp:220
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_activate(const rclcpp_lifecycle::State &)
Definition llama_node.cpp:77
rclcpp::Service< llama_msgs::srv::GetMetadata >::SharedPtr get_metadata_service_
Definition llama_node.hpp:90
rclcpp_action::ServerGoalHandle< GenerateResponse > GoalHandleGenerateResponse
Definition llama_node.hpp:56
std::shared_ptr< GoalHandleGenerateResponse > goal_handle_
Definition llama_node.hpp:77
virtual void create_llama()
Definition llama_node.cpp:44
void tokenize_service_callback(const std::shared_ptr< llama_msgs::srv::Tokenize::Request > request, std::shared_ptr< llama_msgs::srv::Tokenize::Response > response)
Definition llama_node.cpp:321
rclcpp::Service< llama_msgs::srv::Detokenize >::SharedPtr detokenize_service_
Definition llama_node.hpp:92
void generate_embeddings_service_callback(const std::shared_ptr< llama_msgs::srv::GenerateEmbeddings::Request > request, std::shared_ptr< llama_msgs::srv::GenerateEmbeddings::Response > response)
Definition llama_node.cpp:345
void list_loras_service_callback(const std::shared_ptr< llama_msgs::srv::ListLoRAs::Request > request, std::shared_ptr< llama_msgs::srv::ListLoRAs::Response > response)
Definition llama_node.cpp:405
void handle_accepted(const std::shared_ptr< GoalHandleGenerateResponse > goal_handle)
Definition llama_node.cpp:471
rclcpp_action::CancelResponse handle_cancel(const std::shared_ptr< GoalHandleGenerateResponse > goal_handle)
Definition llama_node.cpp:463
void format_chat_service_callback(const std::shared_ptr< llama_msgs::srv::FormatChatMessages::Request > request, std::shared_ptr< llama_msgs::srv::FormatChatMessages::Response > response)
Definition llama_node.cpp:381
virtual bool goal_empty(std::shared_ptr< const GenerateResponse::Goal > goal)
Definition llama_node.cpp:477
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_deactivate(const rclcpp_lifecycle::State &)
Definition llama_node.cpp:149
virtual void execute(const std::shared_ptr< GoalHandleGenerateResponse > goal_handle)
Definition llama_node.cpp:481
void update_loras_service_callback(const std::shared_ptr< llama_msgs::srv::UpdateLoRAs::Request > request, std::shared_ptr< llama_msgs::srv::UpdateLoRAs::Response > response)
Definition llama_node.cpp:424
rclcpp::Service< llama_msgs::srv::FormatChatMessages >::SharedPtr format_chat_service_
Definition llama_node.hpp:98
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_cleanup(const rclcpp_lifecycle::State &)
Definition llama_node.cpp:196
bool params_declared
Definition llama_node.hpp:75
struct llama_utils::LlamaParams params
Definition llama_node.hpp:76
llama_msgs::action::GenerateResponse GenerateResponse
Definition llama_node.hpp:55
rclcpp::Service< llama_msgs::srv::Tokenize >::SharedPtr tokenize_service_
Definition llama_node.hpp:91
void destroy_llama()
Definition llama_node.cpp:49
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_shutdown(const rclcpp_lifecycle::State &)
Definition llama_node.cpp:206
void send_text(const struct CompletionOutput &completion)
Definition llama_node.cpp:550
LlamaNode()
Definition llama_node.cpp:41
std::unique_ptr< Llama > llama
Definition llama_node.hpp:74
rclcpp::Service< llama_msgs::srv::RerankDocuments >::SharedPtr rerank_documents_service_
Definition llama_node.hpp:96
rclcpp::Service< llama_msgs::srv::ListLoRAs >::SharedPtr list_loras_service_
Definition llama_node.hpp:99
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_configure(const rclcpp_lifecycle::State &)
Definition llama_node.cpp:60
rclcpp_action::Server< GenerateResponse >::SharedPtr generate_response_action_server_
Definition llama_node.hpp:103
rclcpp::Service< llama_msgs::srv::UpdateLoRAs >::SharedPtr update_loras_service_
Definition llama_node.hpp:101
rclcpp::Service< llama_msgs::srv::GenerateEmbeddings >::SharedPtr generate_embeddings_service_
Definition llama_node.hpp:94
Definition llama.hpp:40
rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn CallbackReturn
Definition llama_node.hpp:50
Definition llama.hpp:54
Definition llama_params.hpp:39