Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ jobs:
echo "Log Analytics workspace name: ${log_analytics_workspace_name}"
fi

echo "Fetching AI Services (OpenAI) resource from resource group ${{ env.RESOURCE_GROUP_NAME }}..."
echo "Fetching AI Services (Azure OpenAI) resource from resource group ${{ env.RESOURCE_GROUP_NAME }}..."

# Run the az resource list command to get the AI Services resource name
ai_services_name=$(az resource list --resource-group ${{ env.RESOURCE_GROUP_NAME }} --resource-type "Microsoft.CognitiveServices/accounts" --query "[0].name" -o tsv)
Expand All @@ -231,16 +231,16 @@ jobs:
echo "AI Services resource name: ${ai_services_name}"
fi

echo "Fetching AI Search resource from resource group ${{ env.RESOURCE_GROUP_NAME }}..."
echo "Fetching Azure AI Search resource from resource group ${{ env.RESOURCE_GROUP_NAME }}..."

# Run the az resource list command to get the AI Search resource name
# Run the az resource list command to get the Azure AI Search resource name
ai_search_name=$(az resource list --resource-group ${{ env.RESOURCE_GROUP_NAME }} --resource-type "Microsoft.Search/searchServices" --query "[0].name" -o tsv)

if [ -z "$ai_search_name" ]; then
echo "No AI Search resource found in resource group ${{ env.RESOURCE_GROUP_NAME }}."
echo "No Azure AI Search resource found in resource group ${{ env.RESOURCE_GROUP_NAME }}."
else
echo "AI_SEARCH_NAME=${ai_search_name}" >> $GITHUB_ENV
echo "AI Search resource name: ${ai_search_name}"
echo "Azure AI Search resource name: ${ai_search_name}"
fi

- name: List KeyVaults and Store in Array
Expand Down Expand Up @@ -384,7 +384,7 @@ jobs:
run: |
set -e

# Purge AI Services Resource (includes OpenAI)
# Purge AI Services Resource (includes Azure OpenAI)
if [ ! -z "${{ env.AI_SERVICES_NAME }}" ]; then
echo "AI Services: ${{ env.AI_SERVICES_NAME }}"
echo "Purging the AI Services Resource..."
Expand Down Expand Up @@ -447,4 +447,4 @@ jobs:
if: always()
run: |
az logout
echo "Logged out from Azure."
echo "Logged out from Azure."
2 changes: 1 addition & 1 deletion .github/workflows/job-post-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
NETWORK_TOGGLE_ONLY: enable
INPUT_RESOURCE_GROUP_NAME: ${{ inputs.RESOURCE_GROUP_NAME }}
run: |
echo "🔓 Opening Cosmos DB / AI Foundry public access so Python SDK calls can reach them..."
echo "🔓 Opening Azure Cosmos DB / Azure AI Foundry public access so Python SDK calls can reach them..."
cd $GITHUB_WORKSPACE
bash ./infra/scripts/post-provision/data_scripts/run_upload_data_scripts.sh --resource-group "$INPUT_RESOURCE_GROUP_NAME"

Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Customer Chatbot Solution Accelerator

This solution accelerator empowers organizations to build intelligent, conversational customer service experiences by leveraging Microsoft Foundry's Agent Framework. With seamless integration of specialized AI agents and enterprise-grade data services, teams can create chatbots that answer catalog and policy questions and deliver exceptional support across industry scenarios. The solution pairs a scenario host application (ecommerce, healthcare, or banking) with an embeddable chat widget backed by an orchestrator agent that routes customer queries to specialized agents (catalog/product lookup and policy/knowledge), ensuring accurate, contextual responses grounded in scenario data. By unifying AI capabilities with scalable cloud infrastructure, organizations can deliver 24/7 customer support that understands context, maintains conversation history, and provides actionable insights to improve customer satisfaction and operational efficiency.
This solution accelerator empowers organizations to build intelligent, conversational customer service experiences by leveraging Azure AI Foundry's Agent Framework. With seamless integration of specialized AI agents and enterprise-grade data services, teams can create chatbots that answer catalog and policy questions and deliver exceptional support across industry scenarios. The solution pairs a scenario host application (ecommerce, healthcare, or banking) with an embeddable chat widget backed by an orchestrator agent that routes customer queries to specialized agents (catalog/product lookup and policy/knowledge), ensuring accurate, contextual responses grounded in scenario data. By unifying AI capabilities with scalable cloud infrastructure, organizations can deliver 24/7 customer support that understands context, maintains conversation history, and provides actionable insights to improve customer satisfaction and operational efficiency.
Comment thread
PrekshithD-Microsoft marked this conversation as resolved.

---

Expand All @@ -12,7 +12,7 @@ This solution accelerator empowers organizations to build intelligent, conversat

## Solution overview

Leverages Microsoft Foundry's Agent Framework, Foundry IQ, and Azure Cosmos DB to create an intelligent customer chatbot with specialized agents for catalog lookup and knowledge management. Deploy one industry scenario per environment—**ecommerce**, **healthcare**, or **banking**. Each deployment includes a scenario host UI for browsing catalog content and an embedded chat widget (text and voice) that uses an orchestrator agent to route queries to specialized agents. Those agents use hybrid search across catalog and policy documents to return accurate, contextual answers.
Leverages Azure AI Foundry's Agent Framework, Foundry IQ, and Azure Cosmos DB to create an intelligent customer chatbot with specialized agents for catalog lookup and knowledge management. Deploy one industry scenario per environment—**ecommerce**, **healthcare**, or **banking**. Each deployment includes a scenario host UI for browsing catalog content and an embedded chat widget (text and voice) that uses an orchestrator agent to route queries to specialized agents. Those agents use hybrid search across catalog and policy documents to return accurate, contextual answers.

### Solution architecture

Expand Down Expand Up @@ -47,7 +47,7 @@ For detailed technical information, see the component READMEs:
<summary>Click to learn more about the key features this solution enables</summary>

- **Intelligent agent orchestration using Microsoft Agent Framework**
Leverage Microsoft Foundry's Agent Framework with an orchestrator agent that uses automatic tool selection to route customer queries to specialized agents (catalog/product lookup and policy/knowledge). The orchestrator analyzes user intent and automatically invokes the appropriate specialist agent as a tool, ensuring queries are handled by the most capable agent for each task.
Leverage Azure AI Foundry's Agent Framework with an orchestrator agent that uses automatic tool selection to route customer queries to specialized agents (catalog/product lookup and policy/knowledge). The orchestrator analyzes user intent and automatically invokes the appropriate specialist agent as a tool, ensuring queries are handled by the most capable agent for each task.

- **Multi-scenario deployment**
Choose **ecommerce** (Contoso Paints), **healthcare** (Contoso Health), or **banking** (Contoso Banking) per environment. Each scenario packs its own host UI, API surface, search indexes, seed data, and Foundry agent instructions under `scenarios/`.
Expand All @@ -59,7 +59,7 @@ For detailed technical information, see the component READMEs:
Foundry IQ provides fast, accurate catalog and policy document retrieval using semantic and keyword search, enabling natural language queries across industry knowledge bases. Specialized agents access scenario-specific search indexes to retrieve relevant information.

- **Natural language interaction**
Microsoft Foundry's Agent Framework orchestrates multi-agent workflows using GPT-5.4-mini to deliver conversational, context-aware responses that understand customer intent. The framework maintains conversation threads and context across sessions, enabling natural, flowing conversations with specialized agents. Voice Live uses the same Foundry pipeline with scenario-aware grounding.
Azure AI Foundry's Agent Framework orchestrates multi-agent workflows using GPT-5.4-mini to deliver conversational, context-aware responses that understand customer intent. The framework maintains conversation threads and context across sessions, enabling natural, flowing conversations with specialized agents. Voice Live uses the same Foundry pipeline with scenario-aware grounding.

- **Modern scenario host experience**
React-based host frontend for browsing the industry catalog (paints, clinical services, or banking products) with an integrated floating chat assistant for seamless discovery and support
Expand Down Expand Up @@ -119,8 +119,8 @@ _Note: This is not meant to outline all costs as selected SKUs, scaled use, cust

| Product | Description | Tier / Expected Usage Notes | Cost |
|---|---|---|---|
| [Microsoft Foundry](https://learn.microsoft.com/en-us/azure/ai-foundry) | Used to orchestrate and build AI workflows with specialized agents for customer service. | Free Tier | [Pricing](https://azure.microsoft.com/pricing/details/ai-studio/) |
| [Azure AI Services (OpenAI)](https://learn.microsoft.com/en-us/azure/cognitive-services/openai/overview) | Enables language understanding, chat, and realtime voice (Voice Live) using GPT models for conversational AI. | S0 Tier; pricing depends on token volume and model used (e.g., GPT-5.4-mini, gpt-realtime-mini). | [Pricing](https://azure.microsoft.com/pricing/details/cognitive-services/) |
| [Azure AI Foundry](https://learn.microsoft.com/en-us/azure/ai-foundry) | Used to orchestrate and build AI workflows with specialized agents for customer service. | Free Tier | [Pricing](https://azure.microsoft.com/pricing/details/ai-studio/) |
| [Azure AI Services (Azure OpenAI)](https://learn.microsoft.com/en-us/azure/cognitive-services/openai/overview) | Enables language understanding, chat, and realtime voice (Voice Live) using GPT models for conversational AI. | S0 Tier; pricing depends on token volume and model used (e.g., GPT-5.4-mini, gpt-realtime-mini). | [Pricing](https://azure.microsoft.com/pricing/details/cognitive-services/) |
| [Foundry IQ](https://learn.microsoft.com/en-us/azure/search/search-what-is-azure-search) | Provides hybrid search capabilities for scenario catalogs and policy documents with semantic and keyword search. | Basic Tier; pricing based on search units and data storage. | [Pricing](https://azure.microsoft.com/pricing/details/search/) |
| [Azure App Service](https://learn.microsoft.com/en-us/azure/app-service/overview) | Hosts the scenario and chat frontend apps and FastAPI backends. | Basic or Standard plan; includes a free tier for development. | [Pricing](https://azure.microsoft.com/pricing/details/app-service/windows/) |
| [Azure Container Registry](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-intro) | Stores and serves container images used by Azure App Service. | Basic Tier; fixed daily cost per registry. | [Pricing](https://azure.microsoft.com/pricing/details/container-registry/) |
Expand Down Expand Up @@ -194,7 +194,7 @@ Ship a single chat widget and backend that plug into different industry hosts. S

- **Scalable and maintainable architecture**

Deliver consistent customer experiences at scale with a separation between the industry host and the chat service. The Microsoft Foundry Agent Framework enables easy extension with new agents, scenarios, or data sources as business needs evolve.
Deliver consistent customer experiences at scale with a separation between the industry host and the chat service. The Azure AI Foundry Agent Framework enables easy extension with new agents, scenarios, or data sources as business needs evolve.

</details>

Expand Down
4 changes: 2 additions & 2 deletions azure.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ hooks:
Write-Host "1. Build and push the backend/frontend container images to ACR, then point the web apps at them:`n"
Write-Host " infra\scripts\post-provision\build_push_images.ps1`n" -ForegroundColor Cyan

Write-Host "2. Load data and create AI Foundry agents:`n"
Write-Host "2. Load data and create Azure AI Foundry agents:`n"
Write-Host " Option A - Run both stages at once (recommended):`n" -ForegroundColor White
Write-Host " infra\scripts\post-provision\postprovision_data_agents.ps1`n" -ForegroundColor Cyan
Write-Host " Option B - Run each stage individually:`n" -ForegroundColor White
Expand Down Expand Up @@ -88,7 +88,7 @@ hooks:
echo " bash ./infra/scripts/post-provision/build_push_images.sh"
echo ""

echo "2. Load data and create AI Foundry agents:"
echo "2. Load data and create Azure AI Foundry agents:"
echo ""
echo " Option A - Run both stages at once (recommended):"
echo " bash ./infra/scripts/post-provision/postprovision_data_agents.sh"
Expand Down
10 changes: 10 additions & 0 deletions chat-app/backend/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.env
.env.*
!.env.example
__pycache__
*.pyc
.venv
venv
.pytest_cache
.mypy_cache
*.md
6 changes: 3 additions & 3 deletions chat-app/backend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ AI-powered chat application backend built with FastAPI, designed to integrate wi
- **Multiple AI Agents**: Customer support, sales assistant, and technical support agents
- **Conversation Management**: Create, manage, and track chat conversations
- **Streaming Responses**: Real-time AI responses with Server-Sent Events
- **Azure AI Integration**: Connects to Azure OpenAI and AI Search for enhanced capabilities
- **Azure AI Integration**: Connects to Azure OpenAI and Azure AI Search for enhanced capabilities
- **Session-based Authentication**: Guest user sessions for development
- **Flexible Storage**: In-memory storage for development, Azure Cosmos DB for production

Expand Down Expand Up @@ -167,12 +167,12 @@ flake8 app/

### Data Service
- **In-Memory**: Fast development storage
- **Cosmos DB**: Production-ready document storage
- **Azure Cosmos DB**: Production-ready document storage
- **Session Management**: Guest user sessions with conversation tracking

### Authentication
- Session-based authentication for guest users
- Extensible for Azure AD integration
- Extensible for Microsoft Entra ID integration
- Per-session conversation isolation

## Deployment
Expand Down
4 changes: 2 additions & 2 deletions chat-app/backend/app/agent_instructions.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
- Be overly salesy or pushy

Available Tools:
- search(query, limit) - Search products with hybrid AI Search + Cosmos DB
- search(query, limit) - Search products with hybrid Azure AI Search + Azure Cosmos DB
- search_fast(query, limit) - Ultra-fast product search for quick responses
- get_by_id(product_id) - Get specific product by ID
- get_by_category(category, limit) - Get products in a specific category
Expand Down Expand Up @@ -163,7 +163,7 @@
- Provide wrong contact information

Available Tools:
- lookup(query, top) - Search policy documents with enhanced AI Search
- lookup(query, top) - Search policy documents with enhanced Azure AI Search
- lookup_policy(query, context) - Context-aware policy lookup
- get_return_policy() - Get return policy information
- get_shipping_info() - Get shipping information
Expand Down
Loading
Loading