Sdílet prostřednictvím


Ukázka Java PetClinic AI v přehledu Container Apps

Ukázka Spring PetClinic je klasická referenční aplikace, která demonstruje použití Spring Boot s Javou. Tento návod obsahuje verzi vylepšenou pomocí umělé inteligence, postavenou na platformě Azure Container Apps, která rozšiřuje tradiční systém řízení PetClinic o moderní možnosti umělé inteligence.

Aplikace, kterou vytvoříte v tomto kurzu, je asistent chatu s umělou inteligencí, který používá rozšířenou generaci načítání (RAG). Aby se aplikace připojila ke službě Azure OpenAI, používá Spring AI SDKs k podpoře webové aplikace. Další informace o RAG najdete v tématu Implementace načítání rozšířené generace (RAG) pomocí služby Azure OpenAI.

Aplikace obsahuje mnoho různých služeb, které spolupracují na zavedení funkcí souvisejících s umělou inteligencí do vzorku Spring PetClinic.

Architektura aplikace AI v Azure Container Apps

Následující diagram ukazuje architekturu AI aplikace v Azure Container Apps:

Diagram architektury AI aplikace, který zahrnuje prostředí Container Apps, API bránu, Entra ID pro autentizaci a další komponenty.

Brána API aplikace, hostovaná v prostředí Azure Container Apps, slouží jako centrální vstupní bod pro všechny externí požadavky.

Tato brána plní následující funkce:

  • Řídí a spravuje komunikaci mezi komponentami aplikace.
  • Ověřuje uživatele pomocí Microsoft Entra ID.
  • Zajistí přístup do Azure Container Registry a kognitivních služeb pomocí spravovaných identit.
  • Zpracovává všechny příchozí požadavky externích uživatelů.

Brána funguje v rámci vyhrazené virtuální sítě, která zajišťuje bezpečnou a izolovanou komunikaci mezi aplikací a externími systémy.

Následující tabulka popisuje klíčové komponenty a služby dostupné v aplikaci:

Služba nebo funkce Popis
Azure Container Apps Platforma kontejnerů bez serverů, plně spravovaná pro vytváření a nasazování moderních aplikací. Řeší automatické škálování, rozdělení provozu a správu revizí kontejnerizovaných aplikací.
Prostředí Azure Container Apps Bezpečná hranice kolem skupiny kontejnerových aplikací, které sdílejí síťové, škálovací a řídicí konfigurace. Poskytuje základní runtime pro nasazení aplikací v kontejnerech.
Služba Azure OpenAI Poskytuje přístup k REST API OpenAI pro ChatGPT, vkládání a výkonné jazykové modely jako GPT-4. Umožňuje schopnosti AI s funkcemi podnikové úrovně zabezpečení a souladu.
Azure Container Registry Soukromá služba registru Docker pro ukládání a správu kontejnerových obrazů. Podporuje automatizované sestavování kontejnerů, skenování zranitelností a geografickou replikaci.
Spravované identity Poskytuje služby Azure s automaticky spravovanými identitami v Azure AD. Odstraňuje potřebu správy pověření tím, že umožňuje bezpečné ověřování mezi službami bez ukládání pověření v kódu.
Jarní umělá inteligence Framework Spring pro inženýrství AI, který uplatňuje principy návrhu AI do ekosystému Spring. Alternativně je Langchain4j dalším AI frameworkem s vlastní ukázkou PetClinic v spring-petclinic-langchain4j. Další informace naleznete v tématu Rozhraní API chatovacího klienta.

Pro více informací o prvcích "infrastruktura jako kód" aplikace naleznete bicep skripty v repozitáři Přineste svou první AI aplikaci v Azure Container Apps.

Implementace kódu

Následující sekce poskytují úvod do kódu, který vám pomůže pochopit tok této první aplikace umělé inteligence.

Provádění REST volání

Řadič ChatClient je zodpovědný za komunikaci s koncovým bodem klienta chatu. Syntaxe pro odeslání výzvy v PetclinicChatClient.java zahrnuje objekt chatClient pro odeslání uživatelského vstupu.

return this.chatClient.prompt().user(u -> u.text(query)).call().content();

Úpravy chatu

Třída ChatConfiguration upravuje požadavky odeslané na chatClient. Následující seznam popisuje některá klíčová nastavení konfigurace chatClient:

  • Ověření připojení: Klient se připojuje k Azure OpenAI. Jsou podporovány jak ověřování pomocí klíče API, tak ověřování pomocí spravované identity.
  • Umístění nastavení konfigurace: Pro ChatModel, nasazení gpt-4o a teplota 0.7 jsou nastaveny v konfiguračním souboru.
  • Databáze vektorů: Databáze vektorů ukládá matematické reprezentace zdrojových dokumentů, známé jako vestavění. Vektorová data jsou používána chatovacím API k vyhledávání dokumentů relevantních k otázce uživatele.
  • Systémová výzva: Přizpůsobte si chování AI a zvyšte výkon.
  • API koncové body: Aplikace disponuje přizpůsobenými koncovými body Azure Functions, aby OpenAI mohlo interagovat s aplikací.
  • Poradci: Poradci poskytují flexibilní a silný způsob, jak zachytit, upravit a zlepšit interakce řízené umělou inteligencí ve vašich aplikacích Spring.

Příklad

Následující ukázka kódu ukazuje, jak třída ChatClientCustomizer načítá konfigurační informace:

@Bean
public ChatClientCustomizer chatClientCustomizer(VectorStore vectorStore, ChatModel model) {
    ChatMemory chatMemory = new InMemoryChatMemory();

    return b -> b.defaultSystem(systemResource)
        .defaultFunctions("listOwners", "listVets", "addPetToOwner", "addOwnerToPetclinic")
        .defaultAdvisors(new PromptChatMemoryAdvisor(chatMemory),
            new ModeledQuestionAnswerAdvisor(vectorStore, SearchRequest.defaults(), model));
}

Koncové body rozhraní API

Fazole definované pod java.util.Function jsou funkce definované v kontextu aplikace. Tyto funkce jsou rozhraním mezi AI modely a aplikací PetClinic.

Existují ukázkové funkce v AIFunctionConfiguration.java, které komunikují s aplikací PetClinic. Mějte na paměti následující podrobnosti o těchto funkcích:

  • Anotace @Description k funkcím pomáhají modelům AI porozumět funkcím v přirozeném jazyce.
  • Text těla funkce se liší v závislosti na vašich obchodních požadavcích.

Poradců

"Poradci jsou komponenty, které upravují nebo vylepšují AI prompty, které fungují jako middleware pro zpracování promptů."

Tato aplikace používá dva různé poradce.

  • QuestionAnswerAdvisor volá modely AI, aby před dokončením výzvy vygenerovaly nový uživatelský dotaz, který obsahuje výsledky z vyhledávacího vektoru.
  • PromptChatMemoryAdvisor Přidá do výzvy paměť chatu a poskytne modelu chatu historii konverzací. S tímto kontextem si model AI dokáže zapamatovat kontext chatu a zlepšit kvalitu chatu.

Další informace naleznete v tématu Rozhraní API poradců.

Další kroky