{"id":41617,"date":"2023-12-01T00:54:37","date_gmt":"2023-12-01T07:54:37","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/premier-developer\/?p=41617"},"modified":"2023-11-29T11:59:44","modified_gmt":"2023-11-29T18:59:44","slug":"how-to-enhance-your-chatbot-so-it-can-retrieve-data-from-multiple-data-sources-orchestrate-its-own-plan-with-c-semantic-kernel-planner-azure-openai-part-2-demo-app-implementation","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/premier-developer\/how-to-enhance-your-chatbot-so-it-can-retrieve-data-from-multiple-data-sources-orchestrate-its-own-plan-with-c-semantic-kernel-planner-azure-openai-part-2-demo-app-implementation\/","title":{"rendered":"How to enhance your chatbot so it can retrieve data from multiple data sources &#038; orchestrate its own plan with C# Semantic Kernel, planner &#038; Azure OpenAI \u2013 part 2 (demo app implementation)"},"content":{"rendered":"<p>In this multi-part series, <a href=\"https:\/\/www.linkedin.com\/in\/jordan-bean\/\">Jordan Bean<\/a> shares how to enhance a chatbot to retrieve data from multiple data sources and orchestrate plans with C# Semantic Kernel, planner, and Azure Open AI.<\/p>\n<hr \/>\n<p>In the\u00a0<a href=\"https:\/\/jordanbeandev.com\/how-to-build-your-own-chatbot-using-c-semantic-kernel-azure-openai-part-1\/\">previous post<\/a>, we discussed how the\u00a0<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/search\/retrieval-augmented-generation-overview\">RAG pattern<\/a>\u00a0isn\u2019t enough to answer complex user questions. We talked about using\u00a0<a href=\"https:\/\/learn.microsoft.com\/en-us\/semantic-kernel\/overview\/\">Semantic Kernel<\/a>\u00a0to orchestrate AI calls can allow AI to generate its own plan for answering questions from various data sources.<\/p>\n<p>In my\u00a0<a href=\"https:\/\/github.com\/jordanbean-msft\/semantic-kernel-sleeping-bag\">GitHub repo<\/a>, I have a sample application that demonstrates this idea.<\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" class=\"wp-image-2263 lazyloaded\" src=\"https:\/\/jordanbeandev.com\/wp-content\/uploads\/2023\/11\/image-6-1024x469.png\" alt=\"\" data-src=\"https:\/\/jordanbeandev.com\/wp-content\/uploads\/2023\/11\/image-6-1024x469.png\" \/><\/figure>\n<h2 class=\"wp-block-heading\">Azure Architecture<\/h2>\n<p>In this example, all the APIs &amp; web apps are hosted in\u00a0<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/container-apps\/overview\">Azure Container Apps<\/a>\u00a0with an\u00a0<a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/ai-services\/openai\/overview\">Azure OpenAI service<\/a>\u00a0backend.<\/p>\n<h2 class=\"wp-block-heading\">Use case<\/h2>\n<p>As a reminder, we are building a customer support chatbot for our fictional outdoor sporting equipment company. We want to be able to answer common customer support questions by utilizing our internal data sources.<\/p>\n<p>&nbsp;<\/p>\n<p>Continue reading this post, as well as the full series on\u00a0<a href=\"https:\/\/jordanbeandev.com\/how-to-build-your-own-chatbot-using-c-semantic-kernel-azure-openai-part-2\/\" target=\"_blank\" rel=\"noopener\">Jordan\u2019s dev blog<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this multi-part series, Jordan Bean shares how to enhance a chatbot to retrieve data from multiple data sources and orchestrate plans with C# Semantic Kernel, planner, and Azure Open AI. In the\u00a0previous post, we discussed how the\u00a0RAG pattern\u00a0isn\u2019t enough to answer complex user questions. We talked about using\u00a0Semantic Kernel\u00a0to orchestrate AI calls can allow [&hellip;]<\/p>\n","protected":false},"author":582,"featured_media":37840,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[14],"tags":[10650,56,10651],"class_list":["post-41617","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","tag-azure-openai","tag-bots","tag-semantic-kernel"],"acf":[],"blog_post_summary":"<p>In this multi-part series, Jordan Bean shares how to enhance a chatbot to retrieve data from multiple data sources and orchestrate plans with C# Semantic Kernel, planner, and Azure Open AI. In the\u00a0previous post, we discussed how the\u00a0RAG pattern\u00a0isn\u2019t enough to answer complex user questions. We talked about using\u00a0Semantic Kernel\u00a0to orchestrate AI calls can allow [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts\/41617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/users\/582"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/comments?post=41617"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts\/41617\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/media\/37840"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/media?parent=41617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/categories?post=41617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/tags?post=41617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}