RepoMicrosoftMicrosoftpublished Nov 19, 2024seen 5d

microsoft/simplechat

Python

Open original ↗

Captured source

source ↗
published Nov 19, 2024seen 5dcaptured 8hhttp 200method plain

microsoft/simplechat

Description: Secure AI conversations with documents, video, audio, and more. Personal workspaces for focused context, group spaces for shared insight. Classify docs, reuse prompts, and extend with modular features.

Language: Python

License: NOASSERTION

Stars: 137

Forks: 105

Open issues: 204

Created: 2024-11-19T01:52:37Z

Pushed: 2026-06-11T02:23:06Z

Default branch: main

Fork: no

Archived: no

README: ![logo](./docs/images/logo-wide.png)

Overview

The Simple Chat Application is a comprehensive, web-based platform designed to facilitate secure and context-aware interactions with generative AI models, specifically leveraging Azure OpenAI. Its central feature is Retrieval-Augmented Generation (RAG), which significantly enhances AI interactions by allowing users to ground conversations in their own data. Users can upload personal ("Your Workspace") or shared group ("Group Workspaces") documents, which are processed using Azure AI Document Intelligence, chunked intelligently based on content type, vectorized via Azure OpenAI Embeddings, and indexed into Azure AI Search for efficient hybrid retrieval (semantic + keyword).

Built with modularity in mind, the application offers a suite of powerful optional features that can be enabled via administrative settings. These include integrating Azure AI Content Safety for governance, providing Image Generation capabilities (DALL-E), processing Video (via Azure Video Indexer) and Audio (via Azure Speech Service) files for RAG, implementing Document Classification schemes, collecting User Feedback, enabling Conversation Archiving for compliance, extracting AI-driven Metadata, and offering Enhanced Citations linked directly to source documents stored in Azure Storage.

The application utilizes Azure Cosmos DB for storing conversations, metadata, and settings, and is secured using Azure Active Directory (Entra ID) for authentication and fine-grained Role-Based Access Control (RBAC) via App Roles. Designed for enterprise use, it runs reliably on Azure App Service and supports deployment in both Azure Commercial and Azure Government cloud environments, offering a versatile tool for knowledge discovery, content generation, and collaborative AI-powered tasks within a secure, customizable, and Azure-native framework.

Documentation

Simple Chat Documentation | Simple Chat Documentation

Contributing

See [CONTRIBUTING.md](./CONTRIBUTING.md) for the fork-based workflow, target branch guidance, and local development references for SimpleChat contributors.

Quick Deploy

[Detailed deployment Guide](./deployers/bicep/README.md)

If you prefer a PowerShell and Azure CLI driven deployment without AZD, or you want more script-level control over deployment and recovery steps, see [deployers/azurecli/README.md](./deployers/azurecli/README.md).

Prerequisites

Install these tools before starting the deployment flow:

1. Azure CLI Download: https://learn.microsoft.com/cli/azure/install-azure-cli 2. Azure Developer CLI (azd) Download: https://learn.microsoft.com/azure/developer/azure-developer-cli/install-azd 3. PowerShell 7 Download: https://learn.microsoft.com/powershell/scripting/install/installing-powershell 4. Visual Studio Code Download: https://code.visualstudio.com/download

Shell guidance:

  • This quick-start section uses PowerShell examples.
  • Windows users can run the commands in PowerShell.
  • Linux and macOS users can run the PowerShell scripts by using PowerShell 7 with pwsh.
  • If you prefer bash for the surrounding shell commands, use the shell-specific examples in [deployers/bicep/README.md](./deployers/bicep/README.md).

Minimum access and setup:

  • An Azure subscription where you have Owner or Contributor access for deployment.
  • Permission to create an Entra application registration, or coordination with an Entra admin who can run that step for you.
  • Access to Azure Container Registry Tasks so azd up can build the application image in ACR.

Pre-Configuration:

The following procedure must be completed with a user that has permissions to create an application registration in the users Entra tenant.

Create the application registration:

cd ./deployers

Define your application name and your environment in PowerShell:

$appName = "simplechat"
$environment = "dev"

If you type appName = "simplechat" in PowerShell, PowerShell treats appName as a command name. PowerShell variables must start with $.

This main README uses PowerShell examples consistently. Linux and macOS users should run the same script with pwsh. If you prefer bash for the surrounding shell commands, use the shell-specific examples in [deployers/bicep/README.md](./deployers/bicep/README.md).

The following script will create an Entra Enterprise Application, with an App Registration named *\*-*\*-ar for the web service called *\*-*\*-app.

> [!TIP] > > The web service name may be overriden with the -AppServceName parameter.

> [!TIP] > > A different expiration date for the secret which defaults to 180 days with the -SecretExpirationDays parameter.

.\Initialize-EntraApplication.ps1 -AppName $appName -Environment $environment -AppRolesJsonPath "./azurecli/appRegistrationRoles.json"

Linux and macOS example:

pwsh ./Initialize-EntraApplication.ps1 -AppName simplechat -Environment dev -AppRolesJsonPath ./azurecli/appRegistrationRoles.json

> [!NOTE] > > Be sure to save this information as it will not be available after the window is closed.*

App Registration Created Successfully!
Application Name:
Client ID:
Tenant ID:
Service Principal ID:
Client Secret:
Secret Expiration:

In addition, the script will note additional steps that must be taken for the app registration step to be completed.

1. Grant Admin Consent for API Permissions:

  • Navigate to Azure Portal > Entra ID > App registrations
  • Find app: *\*
  • Go to API permissions
  • Click 'Grant admin consent for [Tenant]'

2. Assign Users/Groups to Enterprise Application:

  • Navigate to Azure Portal > Entra ID > Enterprise applications
  • Find app: *\*
  • Go to Users and groups
  • Add user/group assignments with appropriate app roles

3. Store the Client Secret Securely:

  • Save the client secret in Azure Key Vault or secure…

Excerpt shown — open the source for the full document.

Notability

notability 3.0/10

New repo, low stars, routine