forgeant docs-test-0
Build LLM-powered agents in C++
Loading...
Searching...
No Matches
tool.hpp
Go to the documentation of this file.
1#ifndef FORGEANT_TOOL_TOOL_HPP
2#define FORGEANT_TOOL_TOOL_HPP
3
6#include <functional>
7#include <string>
8#include <utility>
9
10namespace forgeant {
11
12struct Tool {
13 std::string name;
14 std::string description;
16 std::function<Json(const Json&)> execute;
17
18 Tool(std::string name, std::string description, Json parameters,
19 std::function<Json(const Json&)> execute)
20 : name(std::move(name)), description(std::move(description)),
22};
23
24template <typename Params, typename Func>
25Tool make_tool(std::string name, std::string description, Func&& func) {
26 auto schema = ParamSchema<Params>::schema();
27 auto handler = [f = std::forward<Func>(func)](const Json& args) -> Json {
28 auto params = args.get<Params>();
29 return Json(f(std::move(params)));
30 };
31 return Tool(std::move(name), std::move(description), std::move(schema), std::move(handler));
32}
33
34} // namespace forgeant
35
36#endif // FORGEANT_TOOL_TOOL_HPP
Definition json.hpp:27
T get() const
Definition json.hpp:178
Definition agent.hpp:25
Tool make_tool(std::string name, std::string description, Func &&func)
Definition tool.hpp:25
Definition param_schema.hpp:10
Definition tool.hpp:12
std::string name
Definition tool.hpp:13
std::string description
Definition tool.hpp:14
Tool(std::string name, std::string description, Json parameters, std::function< Json(const Json &)> execute)
Definition tool.hpp:18
std::function< Json(const Json &)> execute
Definition tool.hpp:16
Json parameters
Definition tool.hpp:15