Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loSbJs
LOCAL loAi
LOCAL lnEvalOnly
LOCAL lnAllowAllKeyword
LOCAL lcConversation_name
LOCAL lcSysMessage
LOCAL lcDevMessage
LOCAL loSbResponse

lnSuccess = 0

* ----------------------------------------------------------------------------------
* The Javascript file loaded here is shown at the bottom of this page.
* -----------------------------------------------------------------------------------

* Load JavaScript containing the tool functions.
loSbJs = CreateObject('Chilkat.StringBuilder')
lnSuccess = loSbJs.LoadFile("qa_data/js_tools/toolset_6.js","utf-8")
IF (lnSuccess = 0) THEN
    ? loSbJs.LastErrorText
    RELEASE loSbJs
    CANCEL
ENDIF

loAi = CreateObject('Chilkat.Ai')

* Register the tools that will be made available to the AI.
lnEvalOnly = 0
lnAllowAllKeyword = 1
loAi.RegisterJsTools(loSbJs,lnEvalOnly,lnAllowAllKeyword)

* The provider can be "openai", "google", "claude", "grok", "mistral", "custom", etc.
loAi.Provider = "openai"
* Use your provider's API key.
loAi.ApiKey = "MY_API_KEY"
* Choose a model.
loAi.Model = "gpt-5-mini"

* Tool function calling must always occur within a conversation.
lcConversation_name = "example_convo"
lcSysMessage = "You are a helpful assistant"
lcDevMessage = "Respond with markdown"
loAi.NewConvo(lcConversation_name,lcSysMessage,lcDevMessage)

* Provide inputs
loAi.InputAddText("What is my horoscope? I am an Aquarius.  Also, what's the weather in Chicago?")

* 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.
lnSuccess = loAi.Ask("text")
IF (lnSuccess = 0) THEN
    ? loAi.LastErrorText
    RELEASE loSbJs
    RELEASE loAi
    CANCEL
ENDIF

* Get the AI response.
loSbResponse = CreateObject('Chilkat.StringBuilder')
loAi.GetOutputTextSb(loSbResponse)
? loSbResponse.GetAsString()

RELEASE loSbJs
RELEASE loAi
RELEASE loSbResponse