Tool: Get city recommendations
| 91 | |
| 92 | // Tool: Get city recommendations |
| 93 | ai::JsonValue get_recommendations(const ai::JsonValue& args, |
| 94 | const ai::ToolExecutionContext& context) { |
| 95 | std::string city = args["city"].get<std::string>(); |
| 96 | std::string weather_condition = |
| 97 | args.contains("weather") ? args["weather"].get<std::string>() : "unknown"; |
| 98 | |
| 99 | std::cout << "💡 Getting recommendations for: " << city |
| 100 | << " (weather: " << weather_condition << ")" << std::endl; |
| 101 | |
| 102 | std::vector<std::string> indoor_activities = { |
| 103 | "Visit museums", "Go shopping", "Try local restaurants", "See a movie"}; |
| 104 | std::vector<std::string> outdoor_activities = { |
| 105 | "Walk in parks", "Visit landmarks", "Take photos", "Outdoor dining"}; |
| 106 | |
| 107 | ai::JsonValue activities; |
| 108 | if (weather_condition == "Rainy") { |
| 109 | activities = indoor_activities; |
| 110 | } else { |
| 111 | // Mix of indoor and outdoor |
| 112 | activities = ai::JsonValue::array(); |
| 113 | for (int i = 0; i < 2; ++i) { |
| 114 | activities.push_back(indoor_activities[i]); |
| 115 | activities.push_back(outdoor_activities[i]); |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | return ai::JsonValue{{"city", city}, |
| 120 | {"weather_condition", weather_condition}, |
| 121 | {"recommendations", activities}}; |
| 122 | } |
| 123 | |
| 124 | int main() { |
| 125 | std::cout << "AI SDK C++ - Multi-Step Tool Calling Example\n"; |
nothing calls this directly
no outgoing calls
no test coverage detected