DataFlex
DataFlex
Automatic JavaScript AI Tool Returning a Number
See more AI Examples
Demonstrates an automatic JavaScript tool function that returns a number. Automatic JavaScript tool calls are characterized by:- Tool function implementations are in JavaScript.
- The JavaScript also provides a tool registry and permissions.
- The JavaScript runs embedded within your application using Chilkat.Js.
- Tool calls are handled entirely within Chilkat. Your application does not need to manually check for function calls in the AI response. Internal to the Ask function, Chilkat will handle function calls by calling your registered JavaScript tools and will send results back to the AI model until the final response is received.
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Variant vSbJs
Handle hoSbJs
Handle hoAi
Boolean iEvalOnly
Boolean iAllowAllKeyword
String sConversation_name
String sSysMessage
String sDevMessage
Variant vSbResponse
Handle hoSbResponse
String sTemp1
Move False To iSuccess
// ----------------------------------------------------------------------------------
// 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.
// It doesn't need to come from a file. It could just as easily be loaded from a string.
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbJs
If (Not(IsComObjectCreated(hoSbJs))) Begin
Send CreateComObject of hoSbJs
End
Get ComLoadFile Of hoSbJs "qa_data/js_tools/toolset_3.js" "utf-8" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSbJs To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatAi)) To hoAi
If (Not(IsComObjectCreated(hoAi))) Begin
Send CreateComObject of hoAi
End
// Register the tools that will be made available to the AI.
Move False To iEvalOnly
Move True To iAllowAllKeyword
Get pvComObject of hoSbJs to vSbJs
Get ComRegisterJsTools Of hoAi vSbJs iEvalOnly iAllowAllKeyword To iSuccess
// The provider can be "openai", "google", "claude", "grok", "mistral", "custom", etc.
Set ComProvider Of hoAi To "openai"
// Use your provider's API key.
Set ComApiKey Of hoAi To "MY_API_KEY"
// Choose a model.
Set ComModel Of hoAi To "gpt-5-mini"
// Tool function calling must always occur within a conversation.
Move "convo_4" To sConversation_name
Move "You are a helpful business assistant" To sSysMessage
Move "Respond only with a information generated by a tool." To sDevMessage
Get ComNewConvo Of hoAi sConversation_name sSysMessage sDevMessage To iSuccess
// Provide inputs
Get ComInputAddText Of hoAi "What is the total for order A123?" To iSuccess
// 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.
Get ComAsk Of hoAi "text" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoAi To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the AI response.
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbResponse
If (Not(IsComObjectCreated(hoSbResponse))) Begin
Send CreateComObject of hoSbResponse
End
Get pvComObject of hoSbResponse to vSbResponse
Get ComGetOutputTextSb Of hoAi vSbResponse To iSuccess
Get ComGetAsString Of hoSbResponse To sTemp1
Showln sTemp1
End_Procedure