Jason Haley

Ramblings from an Independent Consultant

Introducing: the Local RAG Series (with Semantic Kernel)

Announcing: The Local RAG Series with Semantic Kernel This year I’ve spent a lot of time focusing on Retrieval Augmented Generation (RAG) and its related technologies. I’ve also had my eye on agents and plan to focus on them a lot in 2025. From what I’ve seen with my limited work with agents so far is: they can be chatty. This has lead me to believe that agents will really take off once either the price of LLMs available via APIs lower (a lot) or local models become sufficient to use. Since I don’t know enough about what you can do with local models - I figured this is a great time to start digging into them. Plus, why not learn them with RAG and Semantic Kernel - two things I’ve spent a lot of time with this year. That should give me a good staring point to …

eShopSupport Series: EvaluationTests Project

This is the seventh part of the eShopSupport Series which covers the details of the eShopSupport GitHub repository. NOTE: This entry will make the most sense to you if you’ve first read eShopSupport: Evaluator Project EvaluationTests Project The EvaluationTests project is a recently added xUnit Test Project that uses the new Microsoft.Extensions.AI.Evaluation packages highlighted in this blog: Evaluate the quality of your AI applications with ease. I think the idea is to replace the Evaluator project but, as is, it doesn’t run all 500 evaluation questions in the dev folder (which is good since it would not be cheap to do unless you are running locally). The good news is: the EvaluationTests project is a good example of how to use the new Microsoft.Extensions.AI.Evaluation …

A Semantic Kernel Workshop

Announcing: A Semantic Kernel Workshop Friday Bill Wilder, Juan Pablo Garcia Gonzalez and I finally were able to make the workshop we’ve been working on for the past couple of months public. We had an in person day long event where we used the content, which was received really well. The attendees had some good questions - giving us some really good ideas on how to improve the content. Target audience: .NET developers looking to start using Gen AI in their applications Overview The workshop (currently has a long name which we’re planning on shortening soon): Building RAG-Enabled Apps and AI Agents with Semantic Kernel and Azure AI, contains 6 labs and (currently) 2 presentations. We have both Visual Studio Code and Visual Studio versions of the first 5 labs (I’m working …

Hands-on AI Workshop Dec 2024

Yesterday Bill Wilder, Juan Pablo Garcia Gonzalez and I put on a Hands-on AI Workshop in Burlington MA. The goal was to give the attendees hands on experience using Semantic Kernel. The target audience was .NET developers using Visual Studio Code or Visual Studio looking to learn GenAI. I gave the middle presentations and labs focusing on RAG. Talk: Retrieval Augmented Generation (RAG) This was an intro level presentation on what RAG is and the concepts you need to know to create a RAG system. The presentation can be downloaded on the github here The labs that were RAG related where: Lab 3: Using WebRetrieverPlugin to create a RAG application - (Visual Studio edition) Lab 4: Creating a RAG application to Search a PDF - (Visual Studio Edition) Lab 5: Putting it all together - (Visual Studio …

Azure SQL, Entity Framework, Semantic Kernel Hands-on-Lab

Announcing: Build a RAG App using Semantic Kernel, Entity Framework and Azure SQL DB Hands-on-Lab A couple of weeks ago after Azure SQL DB announced their public preview of native vector support, I put a hands on lab together to help people get started with the new feature and EF Core extension. Bill Wilder and I did mentioned it in our presentations on December 12 and December 15, but I haven’t had a chance to announce it for those of you who missed our presentations. Overview The hands on lab: Build a RAG App using Semantic Kernel, Entity Framework and Azure SQL DB provides a step-by-step walk through creating a RAG application using SQL Azure DB, EntityFramework Core and Semantic Kernel. I used VS Code for the steps, but if you are an experienced .NET developer using Visual …

Boston Code Camp 37 Session

Yesterday was Boston Code Camp 37. I spent the majority of the day talking with people in the community I haven’t seen for awhile, as well as some new people I hadn’t met before. I only made it to one session (Juan Pablo Garcia Gonzalez - Agentic AI: Unlocking the Power of Multi-Agent Systems), which was good and got me thinking about how to rewrite my demos in my talk to use agents. It was nice to see a good amount of new (and younger) people attending the code camp. We always have a lot of student volunteers from Curry College that help out and the last couple of years I’ve noticed some of them still continue to attend even after they have graduated. After having a full day of socializing, I realized that I must be an introvert because my energy was gone. Talk: Using …

eShopSupport Series: Customer Web UI Project

This is the sixth part of the eShopSupport Series which covers the details of the eShopSupport GitHub repository. CustomerWebUI Project The CustomerWebUI project is a Blazor application used to capture support ticket information from customers. It is one of the two user interface projects in the solution that highlight how to adding some AI functionality into business applications can be useful. The project is located under the src folder: In this entry I’ll cover the functionality the web application provides, a few things I found interesting and some thoughts on improvements. What does it do? Steve Sanderson opens the CustomerWebUI about 45 minutes into his NDC talk “How to add genuinely useful AI to your webapp (not just chatbots)” when he is showing the ticket …

eShopSupport Series: Python Inference Project

This is the fifth part of the eShopSupport Series which covers the details of the eShopSupport GitHub repository. PythonInference Project The PythonInference Project is a python project that provides a web API to classify the case type when a new customer support ticket is entered in the system. It does this by passing the user’s comment to the API, which uses a local model from Hugging Face (cross-encoder/nli-MiniLM2-L6-H768) to classify the text. The PythonInference project is located under the src folder: In this entry I’ll cover the details of how the PythonInference project works, a few things I found interesting and some thoughts on improvements. What does it do? Steve Sanderson mentions the Python project about 39 minutes into his NDC talk “How to add genuinely …

eShopSupport Series: Aspire Projects (AppHost and ServiceDefaults)

This is the fourth part of the eShopSupport Series which covers the details of the eShopSupport GitHub repository. The Aspire Projects (AppHost and ServiceDefaults) Unlike the other blog entries in this eShopSupport Series, this one is going to cover two projects in the solution: AppHost and ServiceDefaults - both are important for the Aspire local development experience. These projects are located under the src folder: In this entry I’ll cover the details of how the AppHost and ServiceDefaults projects are used in the local development environment, a few things I found interesting and some thoughts on improvements. What do these projects do? Steve Sanderson mentions Aspire around 27 minutes into his NDC talk “How to add genuinely useful AI to your webapp (not just …

eShopSupport Series: Evaluator Project

This is the third part of the eShopSupport Series which covers the details of the eShopSupport GitHub repository. Evaluator Project The Evaluator project is a console application used to evaluate the chat portion of the application provided by the AssistantApi in the Backend project. The Evaluator application uses the questions in the evalquestions.json file to test the assistant API and scores the results it returns against the answers in that JSON file. This gives you the ability to measure the quality of the chat functionality - which is an important thing to do when you are building application functionality that depends on an LLM. The Evaluator project is located in in the src folder: In this entry I’ll cover the details of how the Evaluator application works, a few things I …