AI u poslovanju

AI asistent unutar vaše Blazor aplikacije, a ne još jedan chat prozor

Kako u Blazor poslovnu aplikaciju dodati AI asistenta koji poznaje vaše podatke i poštuje ovlasti korisnika, uz Microsoft.Extensions.AI i .NET 10.

Vlado Pandžić

Vlado Pandžić · Osnivač · Senior .NET arhitekt
Objavljeno · 4 min čitanja

Većina zaposlenika već koristi ChatGPT. Kopiraju u njega narudžbu, reklamaciju ili odlomak ugovora, dobiju odgovor i kopiraju ga natrag. Pomaže, ali podaci firme završe u alatu koji nitko ne kontrolira, a asistent ne zna ništa o vašim kupcima, narudžbama ni o tome tko smije vidjeti što.

Asistent unutar vaše Blazor aplikacije radi drukčije. Živi pokraj ekrana na kojem korisnik radi, podatke čita kroz iste servise koje aplikacija već koristi i vidi samo ono što taj korisnik smije vidjeti.

Što može na običan radni dan

  • “Koje narudžbe kupca Novak kasne i zašto?” Asistent pogleda narudžbe i datume isporuke i odgovori u dvije rečenice, umjesto da korisnik filtrira tri tablice.
  • “Napiši nacrt odgovora na ovu reklamaciju.” Pročita reklamaciju i povijest narudžbi i pripremi nacrt koji korisnik doradi i pošalje.
  • “Sažmi ovaj ugovor i izdvoji rokove.” Pročita priloženi dokument i izvuče ono što je važno, s poveznicom na točno mjesto u tekstu.

U svakom slučaju odlučuje čovjek. Asistent traži i priprema, a korisnik potvrđuje. Isti pristup u inboxu ili helpdesku opisujemo u članku o AI prijedlozima odgovora.

Kako radi, ljudskim jezikom

  1. 1Korisnik pita na ekranu
  2. 2Model odlučuje koji mu podaci trebaju
  3. 3Vaši servisi ih dohvate, s ovlastima korisnika
  4. 4Odgovor se ispisuje dok nastaje

Ključno je da model nikad sam ne ide u bazu. Dajete mu “alate”, odnosno obične metode vaših postojećih servisa, i samo njih smije pozvati. Kad želi narudžbe koje kasne, poziva OrderService, a OrderService provjerava ovlasti točno kao za svaki drugi ekran.

Kako to izgleda u .NET-u

U .NET-u se to radi s Microsoft.Extensions.AI, koji daje jedno sučelje IChatClient za Azure OpenAI i druge modele. Klijent se registrira jednom, s uključenim automatskim pozivanjem alata. Aplikacija se u Azure prijavljuje vlastitim managed identityjem, pa u konfiguraciji nema API ključa:

builder.Services.AddSingleton<IChatClient>(
    new ChatClientBuilder(
            new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
                .GetChatClient(deployment).AsIChatClient())
        .UseFunctionInvocation()
        .Build());

Blazor komponenta, koja radi u načinu Interactive Server, daje modelu jedan alat i prikazuje odgovor dok stiže:

@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 dobiva prijavljenog korisnika, pa asistent nikad ne može vidjeti više nego što bi taj korisnik vidio na bilo kojem drugom ekranu. To je isto pravilo kao u članku o sigurnosti Blazor aplikacije: ovlasti pripadaju servisu, a ne sučelju i ne promptu.

Prototip za jedan dan, produkcija za nekoliko tjedana

Microsoft ima predložak AI Chat Web App (dotnet new aichatweb). On izradi Blazor Interactive Server aplikaciju s gotovim chat sučeljem koje odgovara na pitanja iz dokumenata koje stavite u mapu. To je izvrstan način da upravi za jedan dan pokažete kako asistent izgleda na vašim dokumentima.

Ali to je prototip, a ne produkcija. Za stvarnu upotrebu još trebaju vaše ovlasti, vaši izvori podataka, bilježenje i kontrola troška.

Pravila za produkciju

  • Asistent vidi samo ono što vidi korisnik. Svaki alat poziva vaše servise s prijavljenim korisnikom, a servis provjerava ovlasti.
  • Svaku radnju potvrđuje čovjek. Asistent smije pripremiti e-mail, izmjenu narudžbe ili odobrenje, ali korisnik klikne “pošalji”.
  • Ključevi i model ostaju na serveru. To je još jedan razlog da ekran s asistentom radi u načinu Interactive Server, a ne na WebAssemblyju, kako objašnjavamo u članku Blazor Server vs WebAssembly vs Auto.
  • Sve se bilježi i nadzire. Microsoft.Extensions.AI podržava OpenTelemetry, pa pitanja, pozivi alata i vremena odgovora završe u istom nadzoru kao i ostatak aplikacije.
  • Trošak ima granicu. Ograničenje po korisniku i po danu te provjera koja su pitanja najskuplja.
  • Podaci ostaju gdje trebaju. Prema Microsoftu, upiti i odgovori u Azure OpenAI-ju nisu dostupni OpenAI-ju i ne koriste se za treniranje modela. Kod regionalnog deploymenta obrađuju se u geografiji koju odaberete, dok ih Global i Data Zone deploymenti mogu obrađivati šire, pa vrstu deploymenta birajte namjerno.

Kako krenuti

Odaberite jedan ekran i jednu vrstu pitanja koju vaš tim postavlja svaki dan, a koja danas traži nekoliko klikova ili telefonski poziv. Izradite asistenta samo za to, izmjerite koliko vremena štedi i tek onda širite. Širu sliku o tome gdje se AI u poslovanju isplati pronaći ćete na našoj stranici o AI-ju u poslovanju.

Kako mi radimo

Upravo to radimo: uvodimo AI u poslovne procese, uključujući asistente unutar postojećih Blazor i .NET aplikacija, s ovlastima, potvrdom čovjeka i kontrolom troška od prvog dana. Krećemo s jednim ekranom i jednom mjerljivom uštedom. Više o našem radu s AI-jem, a prvi korak je besplatan razgovor od 30 minuta.

Izvori

Ovaj članak služi općem informiranju i nije pravni, porezni, financijski ni drugi stručni savjet. Scenariji, primjeri i izračuni su ilustrativni. Uvjeti korištenja i odricanje od odgovornosti.

Povezani članci

© 2026 ProCoding — Sva prava pridržana.Impresum i privatnostUvjeti korištenjaSplit, Hrvatska