Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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:
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-4oa teplota0.7jsou 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
@Descriptionk 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.
-
QuestionAnswerAdvisorvolá modely AI, aby před dokončením výzvy vygenerovaly nový uživatelský dotaz, který obsahuje výsledky z vyhledávacího vektoru. -
PromptChatMemoryAdvisorPř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ů.