Reference Solution¶
A complete, working snapshot of the workshop project after all core parts are finished. Use it when something will not import, a step took longer than expected, or you joined late and need to catch up.
Read this before copying
Copying files skips the learning, not the setup. You still need an active watsonx Orchestrate environment (Part 1) and you still have to import every file you copy — the platform does not pick up files from disk on its own.
How to use it¶
- Find your part in the table below.
- Copy only the files listed for the parts you have already passed, plus the part you are stuck on, into your own workspace.
- Run the import commands for that part.
- Continue the workshop from the next step.
Each file links directly to its source, so you can download a single file instead of the whole folder.
What goes where¶
Copy into the root of your workshop project, keeping this layout:
your-project/
├── workspace_config.yaml
├── requirements.txt
├── .bob/ ← from bob-config/ (renamed, see note below)
│ ├── mcp.json
│ ├── custom_modes.yaml
│ └── rules/wxo-dev-rule-enhanced.md
├── agents/
├── tools/
├── knowledge-bases/
└── evaluation/
bob-config/ is really .bob/
Git and MkDocs both skip dot-directories, so Bob's configuration is stored
here as bob-config/. Copy it to .bob/ in your own project.
Part-by-part checkpoints¶
Part 1: Setup¶
| File | Copy to |
|---|---|
| workspace_config.yaml | workspace_config.yaml |
| bob-config/mcp.json | .bob/mcp.json |
| bob-config/custom_modes.yaml | .bob/custom_modes.yaml |
| bob-config/rules/wxo-dev-rule-enhanced.md | .bob/rules/wxo-dev-rule-enhanced.md |
| scripts/add-wxo-env.sh | add-wxo-env.sh (optional helper) |
Edit .bob/mcp.json and replace <ABSOLUTE_PATH_TO_YOUR_WORKSPACE> with the
full path to your project folder, then reload the Bob IDE window. Leaving the
placeholder in place stops the ADK MCP server from starting.
The rule file is stored with a .txt extension so the documentation site
serves it. Whatever your browser saves it as, rename it to
wxo-dev-rule-enhanced.md inside .bob/rules/ — that is the name Bob looks
for.
Use bob-config/mcp.json for the regular setup. Windows users should use the
Windows fallback mcp.json
only if the regular MCP setup does not work.
add-wxo-env.sh registers and activates an environment interactively:
Part 2: First Agent¶
| File | Copy to |
|---|---|
| agents/hello-agent.yaml | agents/hello-agent.yaml |
Part 3: Custom Tools¶
| File | Copy to |
|---|---|
| tools/check_order_status.py | tools/check_order_status.py |
| tools/process_refund.py | tools/process_refund.py |
| requirements.txt | requirements.txt |
| agents/customer_support_agent.part4.yaml | agents/customer_support_agent.yaml |
orchestrate tools import -k python -f tools/check_order_status.py -r requirements.txt
orchestrate tools import -k python -f tools/process_refund.py -r requirements.txt
orchestrate agents import -f agents/customer_support_agent.yaml
Part 4: Knowledge & Collaborators¶
| File | Copy to |
|---|---|
| knowledge-bases/FAQ.pdf | knowledge-bases/FAQ.pdf |
| knowledge-bases/customer-support-faq.yaml | knowledge-bases/customer-support-faq.yaml |
| agents/escalation-agent.yaml | agents/escalation-agent.yaml |
| agents/customer_support_agent.part5.yaml | agents/customer_support_agent.yaml |
orchestrate knowledge-bases import -f knowledge-bases/customer-support-faq.yaml
orchestrate knowledge-bases status -n customer_support_faq
orchestrate agents import -f agents/escalation-agent.yaml
orchestrate agents import -f agents/customer_support_agent.yaml
Wait for the knowledge base to finish indexing before testing FAQ answers.
Part 5: Guidelines & Guardrails¶
| File | Copy to |
|---|---|
| tools/content_safety_plugin.py | tools/content_safety_plugin.py |
| agents/customer_support_agent.yaml | agents/customer_support_agent.yaml |
orchestrate tools import -k python -f tools/content_safety_plugin.py -r requirements.txt
orchestrate agents import -f agents/customer_support_agent.yaml
This is the final state of the main agent: tools, knowledge base, collaborator, guidelines, and the pre-invoke guardrail plugin.
A second guardrail is included
tools/data_access_guardrail.py
is an alternative pre-invoke plugin that focuses on unauthorized data
access rather than content safety. The agent above does not reference it.
To try it instead, import it and change plugin_name to
data_access_guardrail.
Part 6: Deployment¶
Deployment produces no new files. Use the Part 5 agent state above, then follow Part 6.
Agent Evaluations & Red-Teaming (Optional)¶
Not required before deployment — Part 6 accepts the manual Part 5 test evidence as an alternative. Use these files if you take the optional Agent Evaluations & Red-Teaming module.
| File | Copy to |
|---|---|
| evaluation/config.yaml | evaluation/config.yaml |
evaluation/datasets/*.json (12 files) |
evaluation/datasets/ |
evaluation/red-teaming-attacks/*.json (24 files) |
evaluation/red-teaming-attacks/ |
These commands need the evaluation dependencies from
Part 1 Step 5.
evaluation/config.yaml needs no editing: the ADK reuses the environment you
activated in Part 1. Do not add an auth_config block — it overrides the
authentication token the ADK already holds. Never add an API key to that file.
orchestrate evaluations quick-eval -c evaluation/config.yaml -t tools
orchestrate evaluations red-teaming run -a evaluation/red-teaming-attacks -o evaluation/red-teaming-results
The datasets cover six happy paths, three edge cases, and three error scenarios. The attack set covers instruction override, crescendo, emotional appeal, role playing, prompt leakage, jailbreaking, topic derailment, and unsafe topics.
Known differences from the walkthrough text¶
This snapshot is one completed run of the workshop, not a regenerated copy of the examples embedded in each part. Agent, tool, knowledge-base, and plugin names match the walkthrough, so you can mix files from here with files you built yourself. The remaining differences are cosmetic or structural:
- Agent filenames use underscores (
customer_support_agent.yaml); the part instructions writecustomer-support-agent.yaml. Only thename:field inside the YAML matters to the platform — but if you copy a file from here, use the filename in the import command you run. - The knowledge base is built from
FAQ.pdfrather than thecustomer-support-faq.txtused in Part 4. The knowledge-base name iscustomer_support_faqin both. - The instructions and guidelines here are longer and more detailed than the minimal examples in the parts. Both satisfy the checkpoints.
agents/customer_support_agent.part4.yamland.part5.yamlare the final agent with the later parts' sections removed, so each one imports cleanly at that stage of the workshop.tools/data_access_guardrail.pyis an extra alternative guardrail that no agent here references. See the note under Part 5 above.
Not included¶
- Evaluation and red-team results. Run outputs are environment-specific and the generated ADK config embeds a live authentication token, so they are deliberately left out. Generate your own with the commands above.
- Credentials of any kind. No API keys, tokens, or
.envfiles. The Part 1 files use placeholders you fill in yourself. - Optional modules. Multi-agent orchestration, MCP servers, agentic workflows, and AI gateway models ship their own files inside their own part folders.
- NL2SQL. Mandatory, but ships its own files inside its own part folder rather than this catalog.