Unified Data Foundation with Microsoft Fabric with Options to Integrate with Azure Databricks and Microsoft Purview
69/100 healthLoading repository data…
Loading repository data…
Azure-Samples / repository
A solution accelerator project harnessing the capabilities of Azure AI Language to augment an existing Azure OpenAI RAG chat app. Utilize Conversational Language Understanding (CLU) and Custom Question Answering (CQA) to dynamically improve a RAG chat experience.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
This accelerator template provides users with a code-first example for creating and enhancing chat solutions and agents with deterministic, human-controllable workflows. It is designed to minimize the need for extensive prompt engineering by using a structured workflow to prioritize top questions with exact answers, top intents with deterministic routing, and use LLM to handle long tail topics. These actions help to ensure determinism and consistency. The template also provides flexibility to swap, add, or remove agents/components to tailor to your specific needs.
This template is perfect for developers and organizations looking to design, customize, and manage agents that can handle complex queries, route tasks, and provide reliable answers, all with a controlled, scalable architecture.
Note: With any AI solutions you create using these templates, you are responsible for assessing all associated risks, and for complying with all applicable laws and safety standards. Learn more in the transparency documents for Agent Service and Agent Framework.
This solution leverages the combined capabilities of Azure AI Language, Azure AI Agent Service and Azure OpenAI for enhanced conversational agent solutions. The following image is a reference architecture diagram of this Agent template.
Selected from shared topics, language and repository description—not editorial ratings.
Unified Data Foundation with Microsoft Fabric with Options to Integrate with Azure Databricks and Microsoft Purview
69/100 healthThis solution accelerator provides the architecture and working solution for real-time intelligence for operations. Key features include real-time dashboard, anomaly detection, and fabric data agent.
68/100 healthAzure AI Language already offers two services: Conversational Language Understanding (CLU) and Custom Question Answering (CQA). CLU analyzes user inputs to extract intents and entities. CQA uses pre-defined question-answer pairs or a pre-configured knowledgebase to answer user questions.
A common issue with intent prediction in conversational AI is the misclassification of user intents and inaccurate entity identification. This can lead to poor user experience due to inaccurately invoked AI Agents or custom actions for intent fulfillment.
CLU can help by performing easy-to-configure and intuitive model training to map utterances to newly added pre-defined intents with high confidence. The recognition is through natural language, not hard-coded for natural interaction with users. This ensures that the system can handle inputs gracefully, provide more accurate responses, and achieve fast and low-cost intent classification.
By leveraging CLU, users can enhance their conversational AI solutions, improve intent predication accuracy, making it a valuable agent/workflow routing solution.
A typical RAG solution allows users to chat with an AI agent and obtain grounded responses. Chat messages are sent directly to AOAI, where a specified model (e.g. GPT-4o) processes each message and creates a response. This is beneficial when customers have their own grounding data (e.g. product manuals, company information for Q/A). They would set up an Azure AI Search index to query their grounding data, and preprocess user chat messages by fetching relevant grounding data and passing it to the AOAI model downstream. Because the model now "knows" the grounding data to base its response around, user chats are met with contextual responses, improving the chat experience.
However, issues with RAG solutions (DSATs, or dissatisfactory examples) are hard to address. It is difficult to debug or update grounding data to fix inaccurate "grounded" responses. Further, this process can be expensive and time-consuming
Azure AI Language CQA can help address these issues and expand the functionality of existing RAG chat solutions.
This project includes a UnifiedConversationOrchestrator class that unifies the call to different routing strategies, which can intelligently route user input to intent routing agent, CLU-only, CQA-only, etc., based on the specified router type.
The intent routing agent is implemented with Semantic Kernel's group chat orchestration. It uses CLU and CQA as tools to predict intents based on your custom intents defined in CLU and answer FAQs if the corresponding question-answer pairs are created in CQA. In this orchestration, the intent routing agent takes the manager agent role to moderate and route the user queries to other appropriate agents as needed based on the results from CLU and CQA.
There is also fallback functionality when any of the following occurs: neither runtime is called, API call failed, confidence threshold not met, CLU did not recognize an intent, or CQA failed to answer the question. This fallback functionality can be configured to be any function. In this user-story, fallback will be the original RAG solution. The orchestrator object takes a string message as input, and outputs a dictionary object containing information regarding what runtime was called, relevant outputs, was fallback called, etc.
When combined with an existing RAG solution, adding a UnifiedConversationOrchestrator can help in the following ways:
CQA to quick fix and override incorrect answers from RAG solution.CLU.RAG.
Further, users can provide their own business logic to call based on CLU results (e.g. with an OrderStatus intent and OrderId entity, user can include business logic to query a database to check the order status).The container instance demo included with this project showcases the following chat experience:
CLU and CQA), LLM function calls, directly fallback RAG, etc., based on your routing strategy value assigned to router_type in server.py (all valid routing strategy values are listed in the "Routing strategies" section below).CLU was predicted, call extended business agent/logic based on intent/entities.Consider the following real-world example: Contoso Outdoors, a fictional retail company, has an existing RAG chat solution using AOAI. Their grounding data is composed of product manuals of the outdoor gear they sell. Because of this, users can easily ask the AI chat questions regarding Contoso Outdoors products (e.g. What tents do you sell?) and obtain grounded, contextual, and accurate responses.
However, if a user asks questions about the company's return policy, or something misclassified to grounding data, the RAG chat will not be able to respond accurately, as the grounding data does not contain any information regarding a return policy. It can be expensive and time consuming to update the grounding data to address this. Further, if a user asks a question about their online order status, even with updates of grounding data, RAG is not able to respond effectively here, as information is dynamic.
Incorporating CLU/CQA (through an intent routing agent or LLM function calls) using a UnifiedConversationOrchestrator solves these problems. Contoso Outdoors would set up a CQA model that can answer extended questions (e.g. their return policy), and set up a CLU model that can identify online order actions (e.g. checking the status of an order). Now, both of these DSATs are resolved, and Contoso Outdoors still maintains their existing RAG chat functionality, as UnifiedConversationOrchestrator falls back to the original RAG chat if CLU/CQA are not fit to respond to the user chat.
This displays the "better together" story when using Azure AI Language with Azure AI Agent Service and/or Azure OpenAI to provide a deterministic conversational agent experience. Learn more about related offerings from this blog post: [Announcing Azure AI Language new features to accelerate your agent development](https://te