Click any component to explore it in the full case study.

Input
User Conversation (Web UI)
User query via agent.html. Thread state managed server-side by Azure OpenAI — no session state on client. Per-conversation persistent thread container.
Web UI · Persistent threads
Assistants API Lifecycle — 5 states
Step 1
Create/Update Assistant
update-assistant.py pushes agent-config.json to Azure OpenAI. 16 function tools defined. 285-line system prompt loaded.
Step 2
Create Thread
Per-conversation state container on Azure OpenAI. Persistent across browser sessions.
Step 3
Add Message + Run
User message added to thread. Run created: queued → in_progress → requires_action → completed.
Step 4
Tool Invocation Loop
Run pauses at requires_action. Client executes function tools (park data, RAG, weather). submit_tool_outputs() resumes run.
Step 5
Retrieve Response
Final messages extracted from thread. Thread history enables multi-turn context automatically.
🤖
16 Function Tools Across 4 Categories
Tools cover all park knowledge domains. System prompt (285 lines) enforces data-source-only policy — never fabricate. IaC approach: assistant definition lives in agent-config.json and is pushed via update-assistant.py, not created manually in portal.
16 function tools9 knowledge types in vector store285-line system promptData-source-only ruleIaC: agent-config.jsonGPT-4o mini · Azure OpenAI
v4
Agent version
16
Function tools
9
Knowledge types
285
System prompt lines
StackAzure OpenAI Assistants APIGPT-4o miniPython IaCagent-config.jsonCosmos DB vector searchJSON Schema tool definitionsupdate-assistant.py