Skip to main content

🤖 AI tools

Tags: Android

What are AI tools?

AI tools allow you to create deep integrations between your app / website and Kai (our AI bot). A few use-cases might include:

  • A banking app allowing to initiate transactions
  • Performing a password reset directly in the messenger
  • Canceling orders
  • ...

The possibilities are almost endless. The following example shows how to add a new AI tool allowing users to initiate bank transactions directly inside Kai.

Ticket custom data

Specify AI tools

// Creating parameters
GleapAiToolParameter amountParameter = new GleapAiToolParameter(
"amount",
"The amount of money to send. Must be positive and provided by the user.",
"string",
true
);

String[] possibleEnumValues = {"Alice", "Bob"};

GleapAiToolParameter contactParameter = new GleapAiToolParameter(
"contact",
"The contact to send money to.",
"string",
true,
possibleEnumValues
);

GleapAiToolParameter[] params = {amountParameter, contactParameter};

// Creating the AI tool with the parameters
GleapAiTool transactionTool = new GleapAiTool(
"send-money",
"Send money to a given contact.",
"The transfer got initiated but not completed yet. The user must confirm the transfer in the banking app.",
"button",
params
);

GleapAiTool[] tools = {transactionTool};

// Set the available tools using the static method
Gleap.getInstance().setAiTools(tools);

Execution type

auto: The tool will be executed automatically.

button: Kai adds a button to it's reply, that allows the user to execute the tool. The tool will not be executed automatically

Ticket custom data

Perform actions

Implement the setAiToolExecutedCallback callback to get notified when a tool should be executed.

Gleap.getInstance().setAiToolExecutedCallback(new AiToolExecutedCallback() {
@Override
public void aiToolExecuted(JSONObject jsonObject) {
try {
String toolName = jsonObject.getString("name");
JSONObject params = jsonObject.getJSONObject("params");

System.out.println(jsonObject.toString());
// {"name":"send-money","params":{"amount":"20","contact":"alice"}}
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
});