En AI-assistent i din Blazor-applikation, inte ännu ett chattfönster
Så lägger du till en AI-assistent i en Blazor-affärsapplikation som känner till dina data och respekterar användarnas behörigheter, med Microsoft.Extensions.AI.
Vlado Pandžić · Grundare · Senior .NET-arkitekt
Publicerad · 5 min läsning
De flesta anställda använder redan ChatGPT. De kopierar in en order, ett klagomål eller ett stycke ur ett avtal, får ett svar och kopierar tillbaka det. Det hjälper, men företagets data hamnar i ett verktyg som ingen kontrollerar, och assistenten vet ingenting om dina kunder, dina order eller vem som får se vad.
En assistent i din egen Blazor-applikation fungerar annorlunda. Den finns bredvid skärmen användaren arbetar på, läser data via samma tjänster som applikationen redan använder och ser bara det som användaren har behörighet att se.
Vad den kan en vanlig arbetsdag
- ”Vilka av kunden Novaks order är försenade, och varför?” Assistenten slår upp order och leveransdatum och svarar med två meningar, i stället för att användaren filtrerar tre tabeller.
- ”Skriv ett utkast till svar på det här klagomålet.” Den läser klagomålet och orderhistoriken och förbereder ett utkast som användaren justerar och skickar.
- ”Sammanfatta det här avtalet och lista tidsfristerna.” Den läser det bifogade dokumentet och tar fram det viktiga, med en hänvisning till exakt var i texten det står.
I alla fall bestämmer människan. Assistenten letar upp och förbereder, och användaren bekräftar. Samma upplägg i en inkorg eller helpdesk beskriver vi i AI svarar på mejl.
Hur det fungerar, med enkla ord
- 1Användaren frågar på skärmen
- 2Modellen avgör vilka data den behöver
- 3Dina tjänster hämtar dem, med användarens behörigheter
- 4Svaret visas medan det skrivs
Grundidén är att modellen aldrig själv går in i databasen. Du ger den ”verktyg”, vanliga metoder i dina befintliga tjänster, och bara dem får den anropa. När den vill ha försenade order anropar den OrderService, och OrderService kontrollerar behörigheterna precis som för varje annan skärm.
Hur det ser ut i .NET
I .NET byggs det med Microsoft.Extensions.AI, som ger ett gränssnitt IChatClient för Azure OpenAI och andra modeller. Klienten registreras en gång, med automatiskt anrop av verktyg. Applikationen loggar in i Azure med sin egen managed identity, så det finns ingen API-nyckel i konfigurationen:
builder.Services.AddSingleton<IChatClient>(
new ChatClientBuilder(
new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
.GetChatClient(deployment).AsIChatClient())
.UseFunctionInvocation()
.Build());
Blazor-komponenten, i läget Interactive Server, ger modellen ett verktyg och visar svaret medan det kommer:
@inject IChatClient Chat
@inject OrderService Orders
@inject AuthenticationStateProvider Auth
<textarea @bind="question"></textarea>
<button @onclick="AskAsync">Ask</button>
<p>@answer</p>
@code {
private string question = "";
private string answer = "";
private async Task AskAsync()
{
var user = (await Auth.GetAuthenticationStateAsync()).User;
var options = new ChatOptions
{
Tools = [AIFunctionFactory.Create(
(string customer) => Orders.GetLateOrdersAsync(customer, user),
"get_late_orders",
"Returns late orders for a customer that the current user is allowed to see")]
};
answer = "";
await foreach (var update in Chat.GetStreamingResponseAsync([new ChatMessage(ChatRole.User, question)], options))
{
answer += update.Text;
StateHasChanged();
}
}
}
GetLateOrdersAsync får den inloggade användaren, så assistenten kan aldrig se mer än vad användaren skulle se på någon annan skärm. Det är samma regel som i checklistan för säkerhet i Blazor: behörigheter hör hemma i tjänsten, inte i gränssnittet och inte i prompten.
En prototyp på en dag, produktion på några veckor
Microsoft har mallen AI Chat Web App (dotnet new aichatweb). Den skapar en Blazor Interactive Server-applikation med ett färdigt chattgränssnitt som svarar på frågor utifrån dokument du lägger i en mapp. Ett utmärkt sätt att på en dag visa ledningen hur en assistent ser ut med era egna dokument.
Men det är en prototyp, inte produktion. För riktig användning behövs fortfarande era behörigheter, era datakällor, loggning och kostnadskontroll.
Regler för produktion
- Assistenten ser bara det användaren ser. Varje verktyg anropar dina tjänster med den inloggade användaren, och tjänsten kontrollerar behörigheterna.
- En människa bekräftar varje åtgärd. Assistenten får förbereda ett mejl, en orderändring eller en kreditfaktura, men användaren klickar på skicka.
- Nycklar och modell stannar på servern. Ännu ett skäl att köra assistentskärmen i läget Interactive Server i stället för WebAssembly, som vi förklarar i Blazor Server vs WebAssembly vs Auto.
- Allt loggas och övervakas. Microsoft.Extensions.AI stöder OpenTelemetry, så frågor, verktygsanrop och svarstider hamnar i samma övervakning som resten av applikationen.
- Kostnaderna har en gräns. En gräns per användare och dag, och en koll på vilka frågor som är dyrast.
- Data stannar där den ska. Enligt Microsoft är prompter och svar i Azure OpenAI inte tillgängliga för OpenAI och används inte för att träna modeller. Med en regional driftsättning behandlas de i den geografi du väljer, medan Global- och Data Zone-driftsättningar kan behandla dem bredare, så välj typ av driftsättning medvetet.
Var du ska börja
Välj en skärm och en typ av fråga som ditt team ställer varje dag och som i dag kräver flera klick eller ett telefonsamtal. Bygg assistenten bara för det, mät hur mycket tid den sparar och bygg ut först därefter. En bredare bild av vilka AI-funktioner som lönar sig i .NET-applikationer finns i artikeln om AI i en befintlig .NET-applikation.
Så arbetar vi
Det är precis det vi gör: vi för in AI i affärsprocesser, även som assistenter i befintliga Blazor- och .NET-applikationer, med behörigheter, bekräftelse av en människa och kostnadskontroll från första dagen. Vi börjar med en skärm och en mätbar besparing. Mer om vårt arbete med AI, och första steget är ett kostnadsfritt samtal på 30 minuter.
Källor
- Microsoft.Extensions.AI libraries, Microsoft Learn
- Invoke .NET functions using an AI model, Microsoft Learn
- Build an AI chat app with .NET, Microsoft Learn
- Create a .NET AI app using the AI app template, Microsoft Learn
- Data, privacy and security for Azure OpenAI, Microsoft Learn
Den här artikeln är endast allmän information och inte juridisk, skattemässig, ekonomisk eller annan professionell rådgivning. Scenarier, exempel och beräkningar är illustrativa. Användarvillkor och ansvarsfriskrivning.