DataFlex
DataFlex
AI Ask with Multiple Tool Function Callbacks
See more AI Examples
This example demonstrates asking a two-part question that should cause the AI to respond with two tool call requests.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.
// -----------------------------------------------------------------------------------
// Load JavaScript containing the tool functions.
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_6.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 "example_convo" To sConversation_name
Move "You are a helpful assistant" To sSysMessage
Move "Respond with markdown" To sDevMessage
Get ComNewConvo Of hoAi sConversation_name sSysMessage sDevMessage To iSuccess
// Provide inputs
Get ComInputAddText Of hoAi "What is my horoscope? I am an Aquarius. Also, what's the weather in Chicago?" 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