This repository contains source code and published web apps for educational use. The apps are designed to support training modules on Microsoft Learn and are not intended (or supported) for use in production solutions. They are not supported Microsoft services or products, and are provided as-is without warranty of any kind.
Most of the apps (with two Azure-based exceptions) are designed to run locally in-browser. No data is uploaded to Microsoft, though some apps make use of external web services for speech support. To run the apps successfully, you need a modern browser, such as Microsoft Edge. In some cases, the full app functionality is only available on computers that include a GPU (integrated or dedicated). When using Windows on ARM64 computers, you may need to enable WebGPU in your browser flag settings (for example at edge://flags or chrome://flags). The GPU-based apps are designed to use a "fallback" mode with some functionality restrictions when no GPU is available.
- Ask Anton (WebLLM-based AI agent)
- Azk Anton (Microsoft Foundry-based AI Agent)
- Computing History Agent (Azure-based and browser-based variants)
- Chat Playground
- Model Coder (model client coding sandbox)
- Speech Playground
- Information Extractor
- Text Analyzer
- Python ScriptBook
- ML Lite
- ML Lab
The AI functionality in these apps was developed with Microsoft's principles for responsible AI in mind. Models and prompts have been chosen to minimize the risk of harmful content generation, and ongoing automated code quality reviews are in place to mitigate potential abuse or accidental security issues. If you do encounter an issue, we encourage you to report it at https://github.com/MicrosoftLearning/ai-apps/issues.
The apps, including AI models (other than in Ask Azure and the Azure-based version of Computing History), run in your local browser and no data is shared with Microsoft. No data from your browser, such as cookies or configuration data, is collected by any of these apps.
In some cases, depending on the app mode configuration, input to models (i.e. prompts) may be sent to third-party APIs. Specifically:
- In Ask Anton, Chat playground, Speech Playground, and the browser-based variant of Computing History speech input is processed by the browser's native Web Speech API implementation, which may send audio to a server for processing. Speech input must be explicitly enabled the first time you use it in the app. Only your audio spoken when the microphone is active is processed.
- In Ask Azure and the Azure-based variant of Computing History, input is sent to your Foundry model endpoint. Additionally, when using speech, your spoken input is sent to Azure Speech-to-Text in your Foundry project (and the response is generated by Azure Text-to-speech)
Many of the apps use generative AI models. Reasonable precautions have been taken to mitigate any potential harmful output from these models, but it's important to note that LLMs can produce unpredictable results.
IMPORTANT: Generative AI functionality in these apps is designed exclusively for educational use. Do not rely on the output from these apps for any real-world application, decision, or action.
The Ask Azure and Azure-based Computing History apps use a model that you choose to deploy in your Microsoft Foundry resource. We recommend deploying a GPT 4.1 Mini model. When used in Microsoft Foundry, default content safety guardrails are applied to mitigate the risk of offensive or harmful content generation.
Some apps use the Microsoft Phi-3-mini-4k-instruct generative AI model (specifically Microsoft Phi-3-mini-4k-instruct-q4f16_1-MLC). No additional training or fine-tuning has been performed on the model. You can view the model card for this model for details, including considerations for responsible use. The model is run in-browser using the WebLLM JavaScript module, with no server-side processing.
In cases where no GPU is available, or WebGPU is not supported, a fallback mode using the smollm2 model running in the WLLAMA CPU-based runtime is used.
All in-browser LLM-based apps include a minimal content moderation solution in which the app validates input for common potentially offensive or harmful terms, and returns an appropriate message without submitting the prompt to the model. In some cases, legitimately non-offensive and non-harmful prompts may be blocked by this mechanism.
In addition to WebLLM and the Microsoft Phi model described above for generative AI, the apps make use of the following models and technologies under the terms of their respective licenses:
- MobileNet-V3 running in Tensorflow.js used by Chat Playground and Computing History (browser-based version) to predict image classifications.
- Web Speech API used by Ask Anton, Computing History (browser-based version), and Speech Playground for speech recognition and synthesis.
- retext-keywords used by Text Analyzer to extract key words and phrases.
- Compromise.js used by Computing History (browser-based version) Text Analyzer to support named entity recognition.
- TextRank.js used by Text Analyzer for text summarization.
- Tesseract.js used by Computing History (browser-based version) and Information Extractor to perform OCR analysis.
- PyScript used by Model Coder, ML Lab, ML Lite, and ScriptBook to provide an in-browser Python runtime. Imported libraries include numpy, pandas, matplotLib, and scikit-learn.
The "OpenAI" library provided in the Model Coder app is not the real OpenAI Python library. Instead, it's a set of Python classes that expose commonly used objects and methods of the OpenAI API as abstractions over a local JavaScript layer that handles prompt submission to the smollm2 model in the local WLLAMA environment. From the learner's perspective, you'll write and run real Python code using the same syntax as you would with the OpenAI library, and interact with a real LLM back-end.