• Stars
    star
    224
  • Rank 172,483 (Top 4 %)
  • Language
    Jupyter Notebook
  • License
    MIT License
  • Created 6 months ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

This sample has the full End2End process of creating RAG application with Prompt Flow and AI Studio. It includes GPT 3.5 Turbo LLM application code, evaluations, deployment automation with AZD CLI, GitHub actions for evaluation and deployment and intent mapping for multiple LLM task mapping.

End to End LLM App development with Azure AI Studio and Prompt Flow

Warning

This sample is under active development to showcase new features and evolve with the Azure AI Studio (preview) platform. Keep in mind that the latest build may not be rigorously tested for all environments (local development, GitHub Codespaces, Skillable VM).

Instead refer to the table, identify the right commit version in context, then launch in GitHub Codespaces

Build Version Description
Stable : #cc2e808 Version tested & used in Microsoft AI Tour (works on Skillable)
Active : main Version under active development (breaking changes possible)

Table Of Contents

  1. Learning Objectives
  2. Pre-Requisites
  3. Setup Development Environment
  4. Provision Azure Resources
  5. Populate With Your Data
  6. Build Your Prompt Flow
  7. Evaluate Your Prompt Flow
  8. Deploy Using Azure AI SDK
  9. Deploy with GitHub Actions

If you find this sample useful, consider giving us a star on GitHub! If you have any questions or comments, consider filing an Issue on the source repo.

1. Learning Objectives

Learn to build an Large Language Model (LLM) Application with a RAG (Retrieval Augmented Generation) architecture using Azure AI Studio and Prompt Flow. By the end of this workshop you should be able to:

  1. Describe what Azure AI Studio and Prompt Flow provide
  2. Explain the RAG Architecture for building LLM Apps
  3. Build, run, evaluate, and deploy, a RAG-based LLM App to Azure.

2. Pre-Requisites

3. Development Environment

The repository is instrumented with a devcontainer.json configuration that can provide you with a pre-built environment that can be launched locally, or in the cloud. You can also elect to do a manual environment setup locally, if desired. Here are the three options in increasing order of complexity and effort on your part. Pick one!

  1. Pre-built environment, in cloud with GitHub Codespaces
  2. Pre-built environment, on device with Docker Desktop
  3. Manual setup environment, on device with Anaconda or venv

The first approach is recommended for minimal user effort in startup and maintenance. The third approach will require you to manually update or maintain your local environment, to reflect any future updates to the repo.

To setup the development environment you can leverage either GitHub Codespaces, a local Python environment (using Anaconda or venv), or a VS Code Dev Container environment (using Docker).

3.1 Pre-Built Environment, in cloud (GitHub Codespaces)

This is the recommended option.

  • Fork the repo into your personal profile.
  • In your fork, click the green Code button on the repository
  • Select the Codespaces tab and click Create codespace...

This should open a new browser tab with a Codespaces container setup process running. On completion, this will launch a Visual Studio Code editor in the browser, with all relevant dependencies already installed in the running development container beneath. Congratulations! Your cloud dev environment is ready!

3.2 Pre-Built Environment, on device (Docker Desktop)

This option uses the same devcontainer.json configuration, but launches the development container in your local device using Docker Desktop. To use this approach, you need to have the following tools pre-installed in your local device:

  • Visual Studio Code (with Dev Containers Extension)
  • Docker Desktop (community or free version is fine)

Make sure your Docker Desktop daemon is running on your local device. Then,

  • Fork this repo to your personal profile
  • Clone that fork to your local device
  • Open the cloned repo using Visual Studio Code

If your Dev Containers extension is installed correctly, you will be prompted to "re-open the project in a container" - just confirm to launch the container locally. Alternatively, you may need to trigger this step manually. See the Dev Containers Extension for more information.

Once your project launches in the local Docker desktop container, you should see the Visual Studio Code editor reflect that connection in the status bar (blue icon, bottom left). Congratulations! Your local dev environment is ready!

3.3 Manual Setup Environment, on device (Anaconda or venv)

  1. Clone the repo

    git clone https://github.com/azure/contoso-chat
  2. Open the repo in VS Code

    cd contoso-chat
    code .
  3. Install the Prompt Flow Extension in VS Code

    • Open the VS Code Extensions tab
    • Search for "Prompt Flow"
    • Install the extension
  4. Install the Azure CLI for your device OS

  5. Create a new local Python environment using either anaconda or venv for a managed environment.

    1. Option 1: Using anaconda

      conda create -n contoso-chat python=3.11
      conda activate contoso-chat
      pip install -r requirements.txt
    2. Option 2: Using venv

      python3 -m venv .venv
      source .venv/bin/activate
      pip install -r requirements.txt

4. Create Azure resources

We setup our development ennvironment in the previous step. In this step, we'll provision Azure resources for our project, ready to use for developing our LLM Application.

4.1 Authenticate with Azure

Start by connecting your Visual Studio Code environment to your Azure account:

  1. Open the terminal in VS Code and use command az login.
  2. Complete the authentication flow.

If you are running within a dev container, use these instructions to login instead:

  1. Open the terminal in VS Code and use command az login --use-device-code
  2. The console message will give you an alphanumeric code
  3. Navigate to https://microsoft.com/devicelogin in a new tab
  4. Enter the code from step 2 and complete the flow.

In either case, verify that the console shows a message indicating a successful authentication. Congratulations! Your VS Code session is now connected to your Azure subscription!

4.2 Provision with Azure Developer CLI

For this project, we need to provision multiple Azure resources in a specific order. Before, we achieved this by running the provision.sh script. Now, we'll use the Azure Developer CLI (or azd) instead, and follow the steps below. Visit the azd reference for more details on tool syntax, commands and options.

4.2.1 Install azd

  • If you setup your development environment manually, follow these instructions to install azd for your local device OS.
  • If you used a pre-built dev container environment (e.g., GitHub Codespaces or Docker Desktop) the tool is pre-installed for you.
  • Verify that the tool is installed by typing azd version in a terminal.

4.2.2 Authenticate with Azure

  • Start the authentication flow from a terminal:
    azd auth login
  • This should activate a Device Code authentication flow as shown below. Just follow the instructions and complete the auth flow till you get the Logged in on Azure message indicating success.
    Start by copying the next code: <code-here>
    Then press enter and continue to log in from your browser...

4.2.3 Provision and Deploy

  • Run this unified command to provision all resources. This will take a non-trivial amount of time to complete.
    azd up
  • On completion, it automatically invokes apostprovision.sh script that will attempt to log you into Azure. You may see something like this. Just follow the provided instructions to complete the authentication flow.
    No Azure user signed in. Please login.
  • Once logged in, the script will do the following for you:
    • Download config.json to the local device
    • Populate .env with required environment variables
    • Populate your data (in Azure AI Search, Azure CosmosDB)
    • Create relevant Connections (for prompt flow)
    • Upload your prompt flow to Azure (for deployment)

That's it! You should now be ready to continue the process as before.Note that this is a new process so there may be some issues to iron out. Start by completing the verification steps below and taking any troubleshooting actions identified.

4.2.4 Verify Provisioning

The script should set up a dedicated resource group with the following resources:

  • Azure AI services resource
  • Azure Machine Learning workspace (Azure AI Project) resource
  • Search service (Azure AI Search) resource
  • Azure Cosmos DB account resource

The script will set up an Azure AI Studio project with the following model deployments created by default, in a relevant region that supports them. Your Azure subscription must be enabled for Azure OpenAI access.

  • gpt-3.5-turbo
  • text-embeddings-ada-002
  • gpt-4

The Azure AI Search resource will have Semantic Ranker enabled for this project, which requires the use of a paid tier of that service. It may also be created in a different region, based on availability of that feature.

4.3 Verify config.json setup

The script should automatically create a config.json in your root directory, with the relevant Azure subscription, resource group, and AI workspace properties defined. These will be made use of by the Azure AI SDK for relevant API interactions with the Azure AI platform later.

If the config.json file is not created, simply download it from your Azure portal by visiting the Azure AI project resource created, and looking at its Overview page.

4.4 Verify .env setup

The default sample has an .env.sample file that shows the relevant environment variables that need to be configured in this project. The script should create a .env file that has these same variables but populated with the right values for your Azure resources.

If the file is not created, simply copy over .env.sample to .env - then populate those values manually from the respective Azure resource pages using the Azure Portal (for Azure CosmosDB and Azure AI Search) and the Azure AI Studio (for the Azure OpenAI values)

4.5 Verify local connections for Prompt Flow

You will need to have your local Prompt Flow extension configured to have the following connection objects set up:

  • contoso-cosmos to Azure Cosmos DB endpoint
  • contoso-search to Azure AI Search endpoint
  • aoai-connection to Azure OpenAI endpoint

Verify if these were created by using the pf tool from the VS Code terminal as follows:

pf connection list

If the connections are not visible, create them by running the connections/create-connections.ipynb notebook. Then run the above command to verify they were created correctly.

4.6 Verify cloud connections for Prompt Flow

The auto-provisioning will have setup 2 of the 3 connections for you by default. First, verify this by

  • going to Azure AI Studio
  • signing in with your Azure account, then clicking "Build"
  • selecting the Azure AI project for this repo, from that list
  • clicking "Settings" in the sidebar for the project
  • clicking "View All" in the Connections panel in Settings

You should see contoso-search and aoai-connection pre-configured, else create them from the Azure AI Studio interface using the Create Connection workflow (and using the relevant values from your .env file).

You will however need to create contoso-cosmos manually from Azure ML Studio. This is a temporary measure for custom connections and may be automated in future. For now, do this:

  1. Visit https://ai.azure.com and sign in if necessary
  2. Under Recent Projects, click your Azure AI project (e.g., contoso-chat-aiproj)
  3. Select Settings (on sidebar), scroll down to the Connections pane, and click "View All"
  4. Click "+ New connection", modify the Service field, and select Custom from dropdown
  5. Enter "Connection Name": contoso-cosmos, "Access": Project.
  6. Click "+ Add key value pairs" four times. Fill in the following details found in the .env file:
    • key=key, value=.env value for COSMOS_KEY, is-secret=checked
    • key=endpoint, value=.env value for COSMOS_ENDPOINT
    • key=containerId, value=customers
    • key=databaseId, value=contoso-outdoor
  7. Click "Save" to finish setup.

Refresh main Connections list screen to verify that you now have all three required connections listed.

5. Populate with sample data

In this step we want to populate the required data for our application use case.

  1. Populate Search Index in Azure AI Search
    • Run the code in the data/product_info/create-azure-search.ipynb notebook.
    • Visit the Azure AI Search resource in the Azure Portal
    • Click on "Indexes" and verify that a new index was created
  2. Populate Customer Data in Azure Cosmos DB
    • Run the code in the data/customer_info/create-cosmos-db.ipynb notebook.
    • Visit the Azure Cosmos DB resource in the Azure Portal
    • Click on "Data Explorer" and verify tat the container and database were created!

6. Building a prompt flow

We are now ready to begin building our prompt flow! The repository comes with a number of pre-written flows that provide the starting points for this project. In the following section, we'll explore what these are and how they work.

6.1. Explore the contoso-chat Prompt Flow

A prompt flow is a DAG (directed acyclic graph) that is made up of nodes that are connected together to form a flow. Each node in the flow is a python function tool that can be edited and customized to fit your needs.

  • Click on the contoso-chat/flow.dag.yaml file in the Visual Studio Code file explorer.

  • You should get a view similar to what is shown below.

  • Click the Visual editor text line shown underlined below. Visual editor button

  • This will open up the prompt flow in the visual editor as shown: - Alt text

6.2 Understand Prompt Flow components

The prompt flow is a directed acyclic graph (DAG) of nodes, with a starting node (input), a terminating node (output), and an intermediate sub-graph of connected nodes as follows:

Node Description
inputs This node is used to start the flow and is the entry point for the flow. It has the input parameters customer_id and question, and chat_history. The customer_id is used to look up the customer information in the Cosmos DB. The question is the question the customer is asking. The chat_history is the chat history of the conversation with the customer.
question_embedding This node is used to embed the question text using the text-embedding-ada-002 model. The embedding is used to find the most relevant documents from the AI Search index.
retrieve_documents This node is used to retrieve the most relevant documents from the AI Search index with the question vector.
customer_lookup This node is used to get the customer information from the Cosmos DB.
customer_prompt This node is used to generate the prompt with the information retrieved and added to the customer_prompt.jinja2 template.
llm_response This node is used to generate the response to the customer using the GPT-35-Turbo model.
outputs This node is used to end the flow and return the response to the customer.

6.3 Run the prompt flow

Let's run the flow to see what happens. Note that the input node is pre-configured with a question. By running the flow, we anticipate that the output node should now provide the result obtained from the LLM when presented with the customer prompt that was created from the initial question with enhanced customer data and retrieved product context.

  • To run the flow, click the Run All (play icon) at the top. When prompted, select "Run it with standard mode".
  • Watch the console output for execution progress updates
  • On completion, the visual graph nodes should light up (green=success, red=failure).
  • Click any node to open the declarative version showing details of execution
  • Click the Prompt Flow tab in the Visual Studio Code terminal window for execution times

For more details on running the prompt flow, follow the instructions here.

Congratulations!! You ran the prompt flow and verified it works!

6.4 Try other customer inputs (optional)

If you like, you can try out other possible customer inputs to see what the output of the Prompt Flow might be. (This step is optional, and you can skip it if you like.)

  • As before, run the flow by clicking the Run All (play icon) at the top. This time when prompted, select "Run it with interactive mode (text only)."
  • Watch the console output, and when the "User: " prompt appears, enter a question of your choice. The "Bot" response (from the output node) will then appear.

Here are some questions you can try:

  • What have I purchased before?
  • What is a good sleeping bag for summer use?
  • How do you clean the CozyNights Sleeping Bag?

7. Evaluating prompt flow results

Now, we need to understand how well our prompt flow performs using defined metrics like groundedness, coherence etc. To evaluate the prompt flow, we need to be able to compare it to what we see as "good results" in order to understand how well it aligns with our expectations.

We may be able to evaluate the flow manually (e.g., using Azure AI Studio) but for now, we'll evaluate this by running the prompt flow using gpt-4 and comparing our performance to the results obtained there. To do this, follow the instructions and steps in the notebook evaluate-chat-prompt-flow.ipynb under the eval folder.

8. Deployment with SDK

At this point, we've built, run, and evaluated, the prompt flow locally in our Visual Studio Code environment. We are now ready to deploy the prompt flow to a hosted endpoint on Azure, allowing others to use that endpoint to send user questions and receive relevant responses.

This process consists of the following steps:

  1. We push the prompt flow to Azure (effectively uploading flow assets to Azure AI Studio)
  2. We activate an automatic runtime and run the uploaded flow once, to verify it works.
  3. We deploy the flow, triggering a series of actions that results in a hosted endpoint.
  4. We can now use built-in tests on Azure AI Studio to validate the endpoint works as desired.

Just follow the instructions and steps in the notebook push_and_deploy_pf.ipynb under the deployment folder. Once this is done, the deployment endpoint and key can be used in any third-party application to integrate with the deployed flow for real user experiences.

9. Deploy with GitHub Actions

9.1. Create Connection to Azure in GitHub

  • Login to Azure Shell

  • Follow the instructions to create a service principal here

  • Follow the instructions in steps 1 - 8 here to add create and add the user-assigned managed identity to the subscription and workspace.

  • Assign Data Science Role and the Azure Machine Learning Workspace Connection Secrets Reader to the service principal. Complete this step in the portal under the IAM.

  • Setup authentication with Github here

{
  "clientId": <GUID>,
  "clientSecret": <GUID>,
  "subscriptionId": <GUID>,
  "tenantId": <GUID>
}
  • Add SUBSCRIPTION (this is the subscription) , GROUP (this is the resource group name), WORKSPACE (this is the project name), and KEY_VAULT_NAME to GitHub.

9.2. Create a custom environment for endpoint

  • Follow the instructions to create a custom env with the packages needed here

    • Select the upload existing docker option
    • Upload from the folder runtime\docker
  • Update the deployment.yml image to the newly created environemnt. You can find the name under Azure container registry in the environment details page.


Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.

When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

More Repositories

1

azure-search-openai-demo

A sample app for the Retrieval-Augmented Generation pattern running in Azure, using Azure AI Search for retrieval and Azure OpenAI large language models to power ChatGPT-style and Q&A experiences.
Python
5,367
star
2

cognitive-services-speech-sdk

Sample code for the Microsoft Cognitive Services Speech SDK
C#
1,955
star
3

active-directory-aspnetcore-webapp-openidconnect-v2

An ASP.NET Core Web App which lets sign-in users (including in your org, many orgs, orgs + personal accounts, sovereign clouds) and call Web APIs (including Microsoft Graph)
PowerShell
1,217
star
4

openai

The repository for all Azure OpenAI Samples complementing the OpenAI cookbook.
Jupyter Notebook
926
star
5

Cognitive-Speech-TTS

Microsoft Text-to-Speech API sample code in several languages, part of Cognitive Services.
C#
839
star
6

contoso-real-estate

Intelligent enterprise-grade reference architecture for JavaScript, featuring OpenAI integration, Azure Developer CLI template and Playwright tests.
JavaScript
800
star
7

blockchain

Azure Blockchain Content and Samples
HTML
786
star
8

chat-with-your-data-solution-accelerator

A Solution Accelerator for the RAG pattern running in Azure, using Azure AI Search for retrieval and Azure OpenAI large language models to power ChatGPT-style and Q&A experiences. This includes most common requirements and best practices.
Python
611
star
9

azure-search-openai-demo-csharp

A sample app for the Retrieval-Augmented Generation pattern running in Azure, using Azure Cognitive Search for retrieval and Azure OpenAI large language models to power ChatGPT-style and Q&A experiences.
C#
529
star
10

modern-data-warehouse-dataops

DataOps for the Modern Data Warehouse on Microsoft Azure. https://aka.ms/mdw-dataops.
Shell
486
star
11

Serverless-microservices-reference-architecture

This reference architecture walks you through the decision-making process involved in designing, developing, and delivering a serverless application using a microservices architecture through hands-on instructions for configuring and deploying all of the architecture's components along the way. The goal is to provide practical hands-on experience in working with several Azure services and the technologies that effectively use them in a cohesive and unified way to build a serverless-based microservices architecture.
C#
476
star
12

openai-plugin-fastapi

A simple ChatGPT Plugin running in Codespaces for dev and Azure for production.
Bicep
429
star
13

Azure-MachineLearning-DataScience

HTML
407
star
14

raspberry-pi-web-simulator

Raspberry Pi web simulator. Demo address:
JavaScript
400
star
15

MyDriving

Building IoT or Mobile solutions are fun and exciting. This year for Build, we wanted to show the amazing scenarios that can come together when these two are combined. So, we went and developed a sample application. MyDriving uses a wide range of Azure services to process and analyze car telemetry data for both real-time insights and long-term patterns and trends. The following features are supported in the current version of the mobile app.
C#
388
star
16

azure-voting-app-redis

Azure voting app used in docs.
Shell
364
star
17

azure-search-knowledge-mining

Azure Search Knowledge Mining Accelerator
CSS
349
star
18

Synapse

Samples for Azure Synapse Analytics
Jupyter Notebook
348
star
19

nodejs-docs-hello-world

A simple nodejs application for docs
JavaScript
347
star
20

azure-cli-samples

Contains Azure CLI scripts samples used for documentation at https://docs.microsoft.com
Shell
344
star
21

saga-orchestration-serverless

An orchestration-based saga implementation reference in a serverless architecture
C#
340
star
22

cognitive-services-quickstart-code

Code Examples used by the Quickstarts in the Cognitive Services Documentation
Jupyter Notebook
335
star
23

container-apps-store-api-microservice

Sample microservices solution using Azure Container Apps, Dapr, Cosmos DB, and Azure API Management
Shell
323
star
24

AzureMapsCodeSamples

A set of code samples for the Azure Maps web control.
JavaScript
293
star
25

azure-sdk-for-go-samples

Examples of how to utilize Azure services from Go.
Go
280
star
26

active-directory-b2c-custom-policy-starterpack

Azure AD B2C now allows uploading of a Custom Policy which allows full control and customization of the Identity Experience Framework
268
star
27

azure-batch-samples

Azure Batch and HPC Code Samples
C#
256
star
28

active-directory-dotnet-native-aspnetcore-v2

Calling a ASP.NET Core Web API from a WPF application using Azure AD v2.0
C#
256
star
29

jp-azureopenai-samples

Python
253
star
30

active-directory-b2c-dotnet-webapp-and-webapi

A combined sample for a .NET web application that calls a .NET web API, both secured using Azure AD B2C
JavaScript
244
star
31

service-fabric-dotnet-getting-started

Get started with Service Fabric with these simple introductory sample projects.
CSS
232
star
32

streaming-at-scale

How to implement a streaming at scale solution in Azure
C#
231
star
33

ansible-playbooks

Ansible Playbook Samples for Azure
219
star
34

openai-dotnet-samples

Azure OpenAI .NET Samples
Jupyter Notebook
216
star
35

active-directory-dotnetcore-daemon-v2

A .NET Core daemon console application calling Microsoft Graph or your own WebAPI with its own identity
PowerShell
215
star
36

active-directory-b2c-advanced-policies

Sample for use with Azure AD B2C with Custom Policies.
C#
215
star
37

azure-files-samples

This repository contains supporting code (PowerShell modules/scripts, ARM templates, etc.) for deploying, configuring, and using Azure Files.
PowerShell
211
star
38

powerbi-powershell

Samples for calling the Power BI REST API via PowerShell
PowerShell
207
star
39

ms-identity-python-webapp

A Python web application calling Microsoft graph that is secured using the Microsoft identity platform
PowerShell
207
star
40

iot-edge-opc-plc

Sample OPC UA server with nodes that generate random and increasing data, anomalies and much more ...
C#
205
star
41

ms-identity-javascript-react-tutorial

A chapterwise tutorial that will take you through the fundamentals of modern authentication with Microsoft identity platform in React using MSAL React
JavaScript
204
star
42

cognitive-services-REST-api-samples

This is a repo for cognitive services REST API samples in 4 languages: C#, Java, Node.js, and Python.
HTML
203
star
43

SpeechToText-WebSockets-Javascript

SDK & Sample to do speech recognition using websockets in Javascript
TypeScript
200
star
44

azure-iot-samples-csharp

Provides a set of easy-to-understand samples for using Azure IoT Hub and Azure IoT Hub Device Provisioning Service and Azure IoT Plug and Play using C# SDK.
C#
196
star
45

Serverless-Eventing-Platform-for-Microservices

This solution is a personal knowledge management system and it allows users to upload text, images, and audio into categories. Each of these types of data is managed by a dedicated microservice built on Azure serverless technologies including Azure Functions and Cognitive Services. The web front-end communicates with the microservices through a SignalR-to-Event Grid bridge, allowing for real-time reactive UI updates based on the microservice updates. Each microservice is built and deployed independently using VSTS’s build and release management system, and use a variety of Azure-native data storage technologies.
C#
176
star
46

Custom-vision-service-iot-edge-raspberry-pi

Sample showing how to deploy a AI model from the Custom Vision service to a Raspberry Pi 3 device using Azure IoT Edge
Python
176
star
47

azureai-samples

Official community-driven Azure AI Examples
Jupyter Notebook
173
star
48

digital-twins-explorer

A code sample for visualizing Azure Digital Twins graphs as a web application to create, edit, view, and diagnose digital twins, models, and relationships.
JavaScript
173
star
49

IoTDemos

Demos created by the IoT Engineering team that showcase IoT services in an end-to-end solution
CSS
171
star
50

active-directory-angularjs-singlepageapp

An AngularJS based single page app, implemented with an ASP.NET Web API backend, that signs in users and calls web APIs using Azure AD
JavaScript
171
star
51

ms-identity-aspnet-webapp-openidconnect

A sample showcasing how to develop a web application that handles sign on via the unified Azure AD and MSA endpoint, so that users can sign in using both their work/school account or Microsoft account. The sample also shows how to use MSAL to obtain a token for invoking the Microsoft Graph, as well as incrementental consent.
C#
169
star
52

ms-identity-javascript-angular-tutorial

A chapterwise tutorial that will take you through the fundamentals of modern authentication with Microsoft identity platform in Angular using MSAL Angular v2
TypeScript
165
star
53

active-directory-b2c-javascript-msal-singlepageapp

A single page application (SPA) calling a Web API. Authentication is done with Azure AD B2C by leveraging MSAL.js
JavaScript
164
star
54

cosmosdb-chatgpt

Sample application that combines Azure Cosmos DB with Azure OpenAI ChatGPT service
HTML
163
star
55

active-directory-b2c-dotnetcore-webapp

An ASP.NET Core web application that can sign in a user using Azure AD B2C, get an access token using MSAL.NET and call an API.
C#
160
star
56

active-directory-xamarin-native-v2

This is a simple Xamarin Forms app showcasing how to use MSAL.NET to authenticate work or school and Microsoft personal accounts with the Microsoft identity platform, and access the Microsoft Graph with the resulting token.
C#
160
star
57

azure-python-labs

Labs demonstrating how to use Python with Azure, Visual Studio Code, GitHub, Windows Subsystem for Linux, and more!
Python
159
star
58

active-directory-dotnet-webapp-openidconnect

A .NET MVC web application that uses OpenID Connect to sign-in users from a single Azure Active Directory tenant.
JavaScript
159
star
59

NVIDIA-Deepstream-Azure-IoT-Edge-on-a-NVIDIA-Jetson-Nano

This is a sample showing how to do real-time video analytics with NVIDIA DeepStream connected to Azure via Azure IoT Edge. It uses a NVIDIA Jetson Nano device that can process up to 8 real-time video streams concurrently.
C++
158
star
60

openhack-devops-team

DevOps OpenHack Team environment APIs
C#
153
star
61

cognitive-services-python-sdk-samples

Learn how to use the Cognitive Services Python SDK with these samples
Python
149
star
62

azure-search-openai-javascript

A TypeScript sample app for the Retrieval Augmented Generation pattern running on Azure, using Azure AI Search for retrieval and Azure OpenAI and LangChain large language models (LLMs) to power ChatGPT-style and Q&A experiences.
TypeScript
149
star
63

azure-search-power-skills

A collection of useful functions to be deployed as custom skills for Azure Cognitive Search
C#
146
star
64

azure-spring-boot-samples

Spring Cloud Azure Samples
JavaScript
146
star
65

service-fabric-dotnet-web-reference-app

An end-to-end Service Fabric application that demonstrates patterns and features in a web application scenario.
C#
143
star
66

active-directory-b2c-javascript-nodejs-webapi

A small Node.js Web API for Azure AD B2C that shows how to protect your web api and accept B2C access tokens using Passport.js.
JavaScript
141
star
67

blockchain-devkit

Samples of how to integrate, connect and use devops to interact with Azure blockchain
Kotlin
138
star
68

Serverless-APIs

Guidance for building serverless APIs with Azure Functions and API Management.
C#
135
star
69

storage-blob-dotnet-getting-started

The getting started sample demonstrates how to perform common tasks using the Azure Blob Service in .NET including uploading a blob, CRUD operations, listing, as well as blob snapshot creation.
C#
135
star
70

active-directory-dotnet-webapp-openidconnect-aspnetcore

An ASP.NET Core web application that signs-in Azure AD users from a single Azure AD tenant.
HTML
132
star
71

power-bi-embedded-integrate-report-into-web-app

A Power BI Embedded sample that shows you how to integrate a Power BI report into your own web app
JavaScript
131
star
72

semantic-kernel-rag-chat

Tutorial for ChatGPT + Enterprise Data with Semantic Kernel, OpenAI, and Azure Cognitive Search
C#
131
star
73

azure-event-grid-viewer

Live view of events from Azure Event Grid with ASP.NET Core and SignalR
HTML
130
star
74

cosmos-db-design-patterns

A collection of design pattern samples for building applications and services with Azure Cosmos DB for NoSQL.
C#
130
star
75

active-directory-dotnet-webapi-manual-jwt-validation

How to manually process a JWT access token in a web API using the JSON Web Token Handler For the Microsoft .Net Framework 4.5.
C#
129
star
76

active-directory-lab-hybrid-adfs

Create a full AD/CA/ADFS/WAP lab environment with Azure AD Connect installed
PowerShell
125
star
77

service-fabric-dotnet-quickstart

Service Fabric quickstart .net application sample
C#
125
star
78

azure-opensource-labs

Azure Open Source Labs (https://aka.ms/oss-labs)
Bicep
122
star
79

jmeter-aci-terraform

Scalable cloud load/stress testing pipeline solution with Apache JMeter and Terraform to dynamically provision and destroy the required infrastructure on Azure.
HCL
120
star
80

active-directory-dotnet-desktop-msgraph-v2

Sample showing how a Windows desktop .NET (WPF) application can get an access token using MSAL.NET and call the Microsoft Graph API or other APIs protected by the Microsoft identity platform (Azure Active Directory v2)
C#
120
star
81

active-directory-dotnet-webapp-webapi-openidconnect-aspnetcore

An ASP.NET Core web application that authenticates Azure AD users and calls a web API using OAuth 2.0 access tokens.
C#
119
star
82

azure-video-indexer-samples

Contains the Azure Media Services Video Indexer samples
HTML
119
star
83

ms-identity-aspnet-daemon-webapp

A web application that sync's data from the Microsoft Graph using the identity of the application, instead of on behalf of a user.
C#
117
star
84

active-directory-dotnet-webapp-multitenant-openidconnect

A sample .NET 4.5 MVC web app that signs-up and signs-in users from any Azure AD tenant using OpenID Connect.
JavaScript
116
star
85

azure-intelligent-edge-patterns

Samples for Intelligent Edge Patterns
JavaScript
114
star
86

python-docs-hello-world

A simple python application for docs
Python
113
star
87

azure-ai

A hub with a curated awesome list of all Azure AI samples
112
star
88

Cognitive-Speech-STT-Windows

Windows SDK for the Microsoft Speech-to-Text API, part of Cognitive Services
111
star
89

active-directory-b2c-xamarin-native

This is a simple Xamarin Forms app showcasing how to use MSAL to authenticate users via Azure Active Directory B2C, and access a Web API with the resulting tokens.
C#
110
star
90

cognitive-services-dotnet-sdk-samples

Learn how to use the Cognitive Services SDKs with these samples
C#
108
star
91

active-directory-dotnet-daemon

A Windows console application that calls a web API using its app identity (instead of a user's identity) to get access tokens in an unattended job or process.
C#
107
star
92

aks-store-demo

Sample microservices app for AKS demos, tutorials, and experiments
Bicep
106
star
93

openhack-devops-proctor

DevOps OpenHack Proctor environment code and provisioning scripts
TSQL
105
star
94

private-aks-cluster-terraform-devops

This sample shows how to create a private AKS cluster using Terraform and Azure DevOps.
HCL
105
star
95

azure-samples-python-management

This repo contains sample code for management libraries of Azure SDK for Python
Python
105
star
96

ms-identity-java-webapp

A Java web application calling Microsoft graph that is secured using the Microsoft identity platform
Java
105
star
97

active-directory-node-webapi

A NodeJS web API that is secured using Azure AD and OAuth 2.0 access tokens.
105
star
98

ms-identity-javascript-tutorial

A chapterwise tutorial that will take you through the fundamentals of modern authentication with Microsoft identity platform in Vanilla JavaScript.
JavaScript
104
star
99

durablefunctions-apiscraping-dotnet

Build an Azure Durable Functions that will scrape GitHub for opened issues and store them on Azure Storage.
C#
104
star
100

azure-search-dotnet-samples

Azure Search .NET sample code
C#
103
star