Jitterbit Composite Agent
Overview
Jitterbit provides the Composite Agent to all customers through Jitterbit Marketplace. This agent is designed for learning purposes to help organizations easily adopt AI.
This agent provides a single interface for interacting with multiple specialized agents within your organization. A specialized agent is an AI agent designed to handle specific types of tasks or queries in a particular domain. Examples include the Jitterbit Sales Agent and HR Agent.
The Composite Agent receives user queries, determines which specialized agent can best handle each query, and routes the request to that agent. After the selected agent responds, the Composite Agent returns the answer to the user. By using a single entry point, the Composite Agent eliminates the need for users to access separate interfaces for each agent. While this agent uses Azure OpenAI and Slack by default, you can adapt it to work with other LLMs and chat platforms such as Claude, Microsoft Teams, microservices, SaaS apps like Salesforce, or applications built using Jitterbit App Builder.
This document explains how to set up and operate this AI agent. The document covers the following topics: architecture and prerequisites, example prompts showing what the agent can do, and steps to install, configure, and operate the AI agent.
Project architecture
This project routes user queries to specialized agents. A typical workflow follows these steps:
- A user interacts with the Slack bot and sends a question or request.
- The Composite Agent analyzes the query and routes it to the appropriate specialized agent.
- The specialized agent processes the request and returns results.
- The Composite Agent delivers the response to the user.
Workflow diagram
The following diagram shows how the Composite Agent processes user queries:
Jitterbit Studio
Composite Agent" } SCI[fab:fa-slack
Slack bot chat interface] JCA@{ shape: hex, label: "
Jitterbit API Manager
custom API" } AZR[Azure OpenAI REST call] AZM@{ shape: hex, label: "Azure OpenAI model" } SAG@{ shape: hex, label: "Specialized Agent" } SCI -->| Sends question| JCA JCA -->| Triggers request handler| JSP JSP -->| Query| AZR AZR --> AZM AZM --> AZR AZR -->| Routing decision| JSP JSP -->| Routed query| SAG SAG -->| Agent response| JSP JSP -->| Answer| SCI classDef plain fill:white, stroke:black, stroke-width:3px, rx:15px, ry:15px
Prerequisites
You need the following components to use this AI agent.
Harmony components
You must have a Jitterbit Harmony license with access to the following components:
Azure resources
You must have a Microsoft Azure subscription with permissions to create an Azure OpenAI resource with a deployed gpt-4o or gpt-4.1 model.
Tip
For pricing information, see the Azure OpenAI pricing page.
Supported endpoints
The AI agent incorporates the following endpoints. You can accommodate other systems by modifying the project's endpoint configurations and workflows.
Large language model (LLM)
The AI agent uses Azure OpenAI as the LLM provider for query analysis and routing decisions.
Chat interface
The AI agent uses Slack as the default chat interface for interacting with the Composite Agent.
If you want to use a different application as the chat interface, you can modify the project's workflows to integrate with your preferred platform.
Example prompts
The following table illustrates how the Composite Agent decides whether to respond to a query directly or delegate it to a specialized agent, based on the query's nature and the available specialized agents.
| Query type | Example query | Composite Agent action |
|---|---|---|
| General knowledge | "What is the capital of the USA?" | Answered directly, as it is a general knowledge question that does not require routing to a specialized agent. |
| Specialized knowledge (Sales) | "Give me the sales orders for customer ABC Inc." | Routed to a specialized Sales Agent because the request requires access to sales-related data. |
Installation, configuration, and operation
Follow these steps to install, configure, and operate this AI agent:
- Download customizations and install the Studio project.
- Review project workflows.
- Create Microsoft Azure resources.
- Prepare Jitterbit Cloud Datastore.
- Configure project variables.
- Test connections.
- Deploy the project.
- Create the Jitterbit custom API.
- Create the Slack app, test the Slack connection, and redeploy the project.
- Trigger the project workflows.
- Troubleshooting.
Download customizations and install the project
Follow these steps to download customization files and install the Studio project:
-
Log in to the Harmony portal at https://login.jitterbit.com and open Marketplace.
-
Locate the AI agent named Jitterbit Composite Agent. To locate the agent, you can use the search bar or, in the Filters pane under Type, select AI Agent to filter the display.
-
Click the AI agent's Documentation link to open its documentation in a separate tab. Keep the tab open to refer back to after starting the project.
-
Click Start Project to open a two-step configuration dialog to download customizations and import the AI agent as a Studio project.
Note
If you have not yet purchased the AI agent, Get this agent will be displayed instead. Click it to open an informational dialog, then click Submit to have a representative contact you about purchasing the AI agent.
-
In configuration step 1, Download Customizations, you can use the following file to create the Slack app. Select the file and click Download Files:
- Slack app manifest file:
slack_app_manifest.json
Tip
The configuration dialog includes a warning not to import the template before applying endpoint customizations. That warning does not apply to this AI agent and you can ignore it. Follow the recommended order of steps in this documentation.
- Slack app manifest file:
-
Click Next.
-
In configuration step 2, Create a New Project, select an environment where you want the Studio project to be created, then click Create Project.
-
A progress dialog will be displayed. Once it indicates that the project is created, use the dialog link Go to Studio or open the project directly from the Studio Projects page.
Review project workflows
In the open Studio project, review the workflows and the descriptions in the following table to understand what each workflow does.
| Workflow name | Trigger type | Description |
|---|---|---|
| Main - Slack API Request Handler | API | Handles incoming Slack bot requests. |
| Main - AI Agent Tools Logic | Called by other workflows | Analyzes queries and routes them to specialized agents. |
| Specialized Agent API Call | Called by other workflows | Executes API calls to specialized agents. |
| Utility - Bot Chat Cloud Datastore | Called by other workflows | Stores bot chat history for conversation context. |
Main - Slack API Request Handler
This workflow manages incoming Slack bot requests. A Jitterbit custom API triggers the workflow each time a user interacts with the Slack bot chat interface. To learn how to configure the Jitterbit custom API, see Create the Jitterbit custom API.
Main - AI Agent Tools Logic
This workflow handles user queries received from the Main - Slack API Request Handler workflow. It manages the interaction with the LLM, captures the response, and routes the request to the appropriate specialized agent.
To add or remove specialized agents for routing, make the following modifications to this workflow:
- Modify function calls: Edit the
Build Routing Tools Requestscript within theAdd Tools Calloperation to add or remove function calls. - Update tools handling: Adjust the
Tools Decisionoperation to manage and handle the addition or removal of tools, based on the functions defined in theBuild Routing Tools Requestscript within theAdd Tools Calloperation.
Specialized Agent API Call
This workflow executes an API call to a specialized agent. The Main - AI Agent Tools Logic workflow determines the specific URL for the specialized agent. You can modify the Agent Call operation in this workflow to match the API requirements of your target agent.
Utility - Bot Chat Cloud Datastore
This workflow stores bot chat history, which provides conversation context to the LLM. The workflow uses Jitterbit Cloud Datastore for this purpose.
Create Microsoft Azure resources
Create the following Microsoft Azure resources and retain the information for configuring the AI agent. To create and manage these resources, you must have a Microsoft Azure subscription with the appropriate permissions.
Azure OpenAI resource
You must create an Azure OpenAI resource and deploy a gpt-4o or gpt-4.1 model through the Azure AI Foundry portal.
You need the deployment name, Azure OpenAI endpoint URL, and API key to configure the Azure OpenAI project variables. To find these values, follow these steps:
-
In the Azure AI Foundry portal, open the specific OpenAI resource.
-
On the landing page for the resource, find the values for the endpoint URL (
azure_openai_base_url) and API key (azure_openai_api_key). -
In the navigation menu under Shared resources, select Deployments. The deployment name (
Azure_OpenAI_Deployment_Name) appears in the list.
Prepare Jitterbit Cloud Datastore
Create two key storages in Jitterbit Cloud Datastore named askjb_user_session and askjb_q_and_a. Configure the fields with the names and types listed in the following tables.
As you add custom fields, use the tables to determine whether to toggle each field to Required in the Cloud Datastore user interface. The AlternativeKey and Value fields are default fields that you cannot remove or toggle.
You can leave blank the values of fields that the system auto-populates or does not use.
User session storage (askjb_user_session)
This key storage maintains session information for users.
| Name | Type | Required | Value definition | Description |
|---|---|---|---|---|
Key |
Text | Yes | Auto-populated | The email address of the user. The system auto-generates this value during execution. No manual entry is required. |
AlternativeKey |
Text | No | Auto-populated | The session for the user. The system auto-generates this value during execution. No manual entry is required. |
Value |
Text | No | Not used | Not used. |
Chat history (askjb_q_and_a)
This key storage retains bot chat history to provide conversation context for the LLM. It stores question and answer history. The system automatically enters all data during workflow execution.
| Name | Type | Required | Value definition | Description |
|---|---|---|---|---|
Key |
Text | Yes | Auto-populated | The unique identifier that the system assigns to a message. |
AlternativeKey |
Text | No | Auto-populated | The unique identifier that the system assigns to a chat session. |
Value |
Text | No | Not used | Not used. |
slackChannel |
Text | Yes | Auto-populated | The Slack channel ID from which the user sends the message. |
User |
Text | Yes | Auto-populated | The Slack username of the user who sends the message. |
FirstName |
Text | No | Auto-populated | The first name of the user who sends the message. |
LastName |
Text | No | Auto-populated | The last name of the user who sends the message. |
Email |
Text | Yes | Auto-populated | The email address of the user who sends the message. |
MessageTimestampText |
Text | Yes | Auto-populated | The timestamp text of the message. |
UserQuestion |
Big Text | Yes | Auto-populated | The question or message that the user submits to the AI agent. |
AIAnswer |
Big Text | Yes | Auto-populated | The response that the AI agent generates for the user's question. |
ai_reformulate_question |
Big Text | No | Auto-populated | The user's question after the AI reformulates or rephrases it to improve understanding. |
Configure project variables
In the Studio project, you must set values for the following project variables.
To configure project variables, use the project's actions menu to select Project Variables. This opens a drawer along the bottom of the page where you can review and set the values.
Cloud Datastore
| Variable name | Description |
|---|---|
Cloud_Datastore_Access_Token |
Cloud Datastore access token for authentication. |
Specialized agents configuration
The following variables configure the first specialized agent (Agent1):
| Variable name | Description |
|---|---|
Agent1_URL |
The base URL endpoint for communicating with the first specialized agent. The Composite Agent uses this URL to send routed queries and receive responses. |
Agent1_API_Key_Header |
The name of the HTTP header that the Composite Agent uses to send the API key when making requests to the first specialized agent. |
Agent1_API_Key |
The API key for the Composite Agent to access the first specialized agent, if authentication is required. |
Agent1_Function_Description |
A description of the first specialized agent's role and purpose. The LLM uses this description to determine whether to route a user query to this agent. |
The following variables configure the second specialized agent (Agent2):
| Variable name | Description |
|---|---|
Agent2_URL |
The base URL endpoint for communicating with the second specialized agent. The Composite Agent uses this URL to send routed queries and receive responses. |
Agent2_API_Key_Header |
The name of the HTTP header that the Composite Agent uses to send the API key when making requests to the second specialized agent. |
Agent2_API_Key |
The API key for the Composite Agent to access the second specialized agent, if authentication is required. |
Agent2_Function_Description |
A description of the second specialized agent's role and purpose. The LLM uses this description to determine whether to route a user query to this agent. |
The following variable configures testing mode:
| Variable name | Description |
|---|---|
Testing |
A Boolean flag that indicates whether the Composite Agent operates in test mode. When set to true, the Composite Agent returns a simulated response instead of making an API call to the actual agent. |
Azure OpenAI
| Variable name | Description |
|---|---|
Azure_OpenAI_Deployment_Name |
The name of the Azure OpenAI deployment that you use to access the model. |
azure_openai_base_url |
The base URL for accessing the Azure OpenAI service. Example: https://<your-resource-name>.openai.azure.com. |
azure_openai_api_key |
The API key that you use to authenticate requests to the Azure OpenAI service. |
ai_prompt |
The system prompt for the LLM that defines routing behavior. This prompt instructs the model to select one function (specialized agent) based on the user's query from a list of available functions. Special functions include NeedClarificationFunction for unclear queries and AnswerGeneralQuestion for general knowledge questions. |
Slack
| Variable name | Description |
|---|---|
bot_oauth_user_token |
The Slack bot token that you obtain after creating the Slack app. You use this token for the Bot user OAuth access token in the Slack connection. |
Note
You create the Slack app in a later step. You can leave this variable blank for now.
Test connections
Test the endpoint configurations to verify connectivity using the defined project variable values.
To test connections, go to the design component palette's Project endpoints and connectors tab, hover over each endpoint, and click Test.
Deploy the project
Deploy the Studio project.
To deploy the project, use the project's actions menu to select Deploy.
Create the Jitterbit custom API
Create a custom API for the Slack Bot Request operation in the Main - Slack API Request Handler workflow.
To create the API, use the operation's actions menu to select Publish as an API or Publish as an API using AI.
Configure the following settings:
| Setting | Value |
|---|---|
| Method | POST |
| Response Type | System Variable |
Save the API service URL of the published API for use when creating the Slack app. To find the service URL, go to the API details drawer on the Services tab, hover over the service's Actions column, and click Copy API service URL.
Create the Slack app, test the connection, and redeploy the project
To create the chat interface in Slack, create a Slack app using the Slack app manifest file provided with this AI agent's customization files. Alternatively, create the app from scratch.
If you use the provided Slack app manifest file (slack_app_manifest.json), replace the following placeholders with your own configuration values.
| Placeholder | Description |
|---|---|
{{Replace with Slack bot name}} |
The name you want your Slack bot to have, as displayed to users. Replace this value in two places in the manifest. |
{{Replace with Jitterbit API URL}} |
The service URL of the Jitterbit custom API you created in Create the Jitterbit custom API. |
After you install the Slack app, obtain its bot token.
Open the project variables configuration again and enter the bot token for the bot_oauth_user_token project variable value.
After you set the bot token, test the Slack connection and redeploy the project.
Trigger the project workflows
To use the Composite Agent, send a direct message to the Slack app. This triggers the Main - Slack API Request Handler workflow through the Jitterbit custom API.
All other workflows run automatically as part of the main workflow and are not intended to run independently.
Troubleshooting
If you encounter issues, review the following logs for detailed troubleshooting information:
For additional assistance, contact Jitterbit support.