![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(C++) Automatic JS AI Tool Calling with Supporting JS SourcesSee more AI ExamplesDemonstrates an automatic JavaScript tool function calling where JavaScript code can be loaded from additional scripts that don't include a tool registry.Note: This example requires Chilkat v11.4.0 or greater. For more information, see https://www.chilkatsoft.com/ai_javascript_tool_function_calling.asp
#include <CkStringBuilder.h> #include <CkAi.h> void ChilkatSample(void) { bool success = false; // ---------------------------------------------------------------------------------- // The Javascript file loaded here is shown at the bottom of this page. // ----------------------------------------------------------------------------------- // In this example, we'll load the Javascript tool functions and registry from a file. CkStringBuilder sbJs; success = sbJs.LoadFile("qa_data/js_tools/toolset_5.js","utf-8"); if (success == false) { std::cout << sbJs.lastErrorText() << "\r\n"; return; } CkAi ai; // Additional JavaScript code can be loaded into the AI object's internal JS engine // by calling RegisterJsTools with evalOnly = true. CkStringBuilder sbExtraJs; sbExtraJs.Append("function getOrderTotal({ order_id }) { return 149.95; }"); // When evalOnly equals true, it tells Chilkat that no toolRegistry will be present. // The purpose for doing the eval is to add function definitions to the global namespace. // The value passed for allowAllKeyword is meaningless (not used) when evalOnly = true. bool evalOnly = true; bool allowAllKeyword = true; ai.RegisterJsTools(sbExtraJs,evalOnly,allowAllKeyword); // Register the tools that will be made available to the AI. evalOnly = false; ai.RegisterJsTools(sbJs,evalOnly,allowAllKeyword); // The provider can be "openai", "google", "claude", "grok", "mistral", "custom", etc. ai.put_Provider("openai"); // Use your provider's API key. ai.put_ApiKey("MY_API_KEY"); // Choose a model. ai.put_Model("gpt-5-mini"); // Tool function calling must always occur within a conversation. const char *conversation_name = "convo_4"; const char *sysMessage = "You are a helpful business assistant"; const char *devMessage = "Respond only with a information generated by a tool."; ai.NewConvo(conversation_name,sysMessage,devMessage); // Provide inputs ai.InputAddText("What is the total for order A123?"); // Send inputs, tool functions, etc. and ask for a "text" response. // If the AI responds with tool calls, Chilkat automatically handles them by calling your JavaScript // tool functions as directed by the AI, and sending results back to the AI until the final // response is received. success = ai.Ask("text"); if (success == false) { std::cout << ai.lastErrorText() << "\r\n"; return; } // Get the AI response. CkStringBuilder sbResponse; ai.GetOutputTextSb(sbResponse); std::cout << sbResponse.getAsString() << "\r\n"; }
|
||||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.