🚀 Series Overview: Custom Agentic Chatbot with SAP AI Core and Joule Studio
Part 1 — Building the Custom AI Agent BackendPart 2 (1) — Deploying the Agent on AI Core (Environment & Containerization)Part 2 (2) — Deploying the Agent on AI Core (Deployment & Testing)Part 3 (1) — Setting Up Joule Studio Connection (Destination & Environment)Part 3 (2) — Creating a Joule Skill (Design & Release)Part 3 (3) — Testing and Sharing on Work Zone
Part 3 (3) — Testing and Sharing the skill on Work Zone
In the previous part, we designed a CustomAgent Skill that links your AI Core backend actions and defines how Joule interprets user inputs. Now, it’s time to test it live, right inside Joule Chat Interface, and finally share it with your organization’s via Work Zone, so that others can access your agent.
By the end of this section, you will:
Test your Skill in Joule Chat InterfaceDebug message flowsshare the Skill to Work Zone for organization-wide access
1. Test the Skill in Joule Chat interface
Once your Skill is released and deployed to the environment, it becomes available inside the Joule Chat interface.
Step 1. Launch Joule Chat Interface
Go to Control Tower → select correct Environment → More → Joule → Launch
This opens the Joule Chat interface for that specific environment.
Step 2. Start Conversation
You can start chatting naturally by sending any message, Joule will automatically detect the appropriate Skill based on your setup.
In this example, we’ll start the conversation using an activation phrase (e.g., /CustomAgent) to trigger the Skill explicitly based on how we set from skill description in this post. This approach helps ensure the correct Skill is activated during testing.
Example. Triggering the Skill and maintaining a continuous agentic flow
The example below illustrate how the CustomAgent Skill is triggered and how the agentic workflow executes step by step.
Joule detects the message and routes it to the CustomAgent Skill (triggered by the activation phrase /CustomAgent). This skill is linked to your backend endpoint deployed on SAP AI Core, which handles the reasoning and multi-step action execution.
🔍 How the Agentic Flow Executes
Planner Stage (/v2/plan) : The backend receives the request and generates a plan. In this case as shown in the chat,Generate SQL query to check current stock level for ‘Wireless Mouse’ product.Execute the generated SQL query to get current stock level.Provide a clear response about the available stock quantity.Action Graph Creation (/v2/action-graph) : The agent converts the plan into series of executable steps in LangGraph.Execution Stage (/v2/start-execution) : The actions are executed in order (querying stock, formatting a reply, etc.).Response Delivery (/v2/continue-execution) : The final message is sent back to Joule, which displays the result in the chat.
Each stage is visible in the conversation window as we designed Joule Skill in the previous post, allowing user to trace the full reasoning process.
♾ Maintaining a Continuous Conversation
To maintain continuity between messages, the system uses a unique converation_id that is shared between Joule and your backend.
When a message is sent to the Joule, Joule parses the conversation_id from the user input.
On the backend side (AI Core), it either:
uses an existing conversation_id provide by the user and parsed by Joule — to continue an ongoing conversationgenerates a new one if nothing is provided — to start a new conversation
This design ensures that every conversation session can be explicitly tracked and resumed.
The example below show how the agent continues the same conversation seamlessly using the shared conversation_id.
In the next step, the same converstaion_id (session-b31e574a) was used again to perform a follow-up task: sending an email with the previously composed order template.
The following example shows how the same agentic flow extended beyond Joule to interact with an external tool (Gmail).
Because the same conversation_id was maintained, the agent could reuse the prior plan and template — showing how multi-step reasoning, enterprise data retrieval, and third-party API execution can all happen seamlessly within a single continuous conversation in Joule.
Because Joule parsed and passed the same conversation_id (session-b31e574a) from the previous turn, the backend recognized that this message is part of the same conversation. As a result, the agent was able to reference the previous stock query result and compose a follow-up order email template without the user needing to restate any context.
🚀 Series Overview: Custom Agentic Chatbot with SAP AI Core and Joule StudioPart 1 — Building the Custom AI Agent BackendPart 2 (1) — Deploying the Agent on AI Core (Environment & Containerization)Part 2 (2) — Deploying the Agent on AI Core (Deployment & Testing)Part 3 (1) — Setting Up Joule Studio Connection (Destination & Environment)Part 3 (2) — Creating a Joule Skill (Design & Release)Part 3 (3) — Testing and Sharing on Work Zone Part 3 (3) — Testing and Sharing the skill on Work ZoneIn the previous part, we designed a CustomAgent Skill that links your AI Core backend actions and defines how Joule interprets user inputs. Now, it’s time to test it live, right inside Joule Chat Interface, and finally share it with your organization’s via Work Zone, so that others can access your agent.By the end of this section, you will:Test your Skill in Joule Chat InterfaceDebug message flowsshare the Skill to Work Zone for organization-wide access 1. Test the Skill in Joule Chat interfaceOnce your Skill is released and deployed to the environment, it becomes available inside the Joule Chat interface.Step 1. Launch Joule Chat InterfaceGo to Control Tower → select correct Environment → More → Joule → LaunchThis opens the Joule Chat interface for that specific environment.Step 2. Start ConversationYou can start chatting naturally by sending any message, Joule will automatically detect the appropriate Skill based on your setup. In this example, we’ll start the conversation using an activation phrase (e.g., /CustomAgent) to trigger the Skill explicitly based on how we set from skill description in this post. This approach helps ensure the correct Skill is activated during testing.Example. Triggering the Skill and maintaining a continuous agentic flowThe example below illustrate how the CustomAgent Skill is triggered and how the agentic workflow executes step by step.Joule detects the message and routes it to the CustomAgent Skill (triggered by the activation phrase /CustomAgent). This skill is linked to your backend endpoint deployed on SAP AI Core, which handles the reasoning and multi-step action execution. 🔍 How the Agentic Flow ExecutesPlanner Stage (/v2/plan) : The backend receives the request and generates a plan. In this case as shown in the chat,Generate SQL query to check current stock level for ‘Wireless Mouse’ product.Execute the generated SQL query to get current stock level.Provide a clear response about the available stock quantity.Action Graph Creation (/v2/action-graph) : The agent converts the plan into series of executable steps in LangGraph.Execution Stage (/v2/start-execution) : The actions are executed in order (querying stock, formatting a reply, etc.).Response Delivery (/v2/continue-execution) : The final message is sent back to Joule, which displays the result in the chat.Each stage is visible in the conversation window as we designed Joule Skill in the previous post, allowing user to trace the full reasoning process. ♾ Maintaining a Continuous ConversationTo maintain continuity between messages, the system uses a unique converation_id that is shared between Joule and your backend. When a message is sent to the Joule, Joule parses the conversation_id from the user input.On the backend side (AI Core), it either:uses an existing conversation_id provide by the user and parsed by Joule — to continue an ongoing conversationgenerates a new one if nothing is provided — to start a new conversation This design ensures that every conversation session can be explicitly tracked and resumed. The example below show how the agent continues the same conversation seamlessly using the shared conversation_id. In the next step, the same converstaion_id (session-b31e574a) was used again to perform a follow-up task: sending an email with the previously composed order template. The following example shows how the same agentic flow extended beyond Joule to interact with an external tool (Gmail).Because the same conversation_id was maintained, the agent could reuse the prior plan and template — showing how multi-step reasoning, enterprise data retrieval, and third-party API execution can all happen seamlessly within a single continuous conversation in Joule. Because Joule parsed and passed the same conversation_id (session-b31e574a) from the previous turn, the backend recognized that this message is part of the same conversation. As a result, the agent was able to reference the previous stock query result and compose a follow-up order email template without the user needing to restate any context. Read More Technology Blog Posts by SAP articles
#SAP
#SAPTechnologyblog