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.
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/data_access_guardrail.py | tools/data_access_guardrail.py |
| agents/customer_support_agent.yaml | agents/customer_support_agent.yaml |
orchestrate tools import -k python -f tools/data_access_guardrail.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.
Part 6: Evaluation & Red-Teaming¶
| 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/ |
Fill in <region>, <instance-id>, and <environment-name> in
evaluation/config.yaml before running. 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.
Part 7: Deployment¶
Deployment produces no new files. Use the Part 5 agent state above, then follow Part 7.
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. A few things differ:
- Agent files use
customer_support_agent.yaml(underscores); the part instructions writecustomer-support-agent.yaml. Only thename:field inside the YAML matters to the platform. - The greeting agent here is named
hello_agent, while Part 2 useshello_world_agent. - The guardrail plugin here is
data_access_guardrail; Part 5 buildscontent_safety_guardrail. They solve overlapping problems in different ways — either one satisfies the checkpoint. - The knowledge base is built from
FAQ.pdf, and the evaluation datasets are one JSON file per case (the layout the ADK's red-teaming commands produce) rather than a single JSONL file. 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.
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, AI gateway models, and NL2SQL ship their own files inside their own part folders.