Container Apps'te Java PetClinic AI örneğine genel bakış

Spring PetClinic örneği, Java ile Spring Boot kullanımını gösteren klasik bir başvuru uygulamasıdır. Bu öğreticide, geleneksel PetClinic yönetim sistemini modern yapay zeka özellikleriyle genişleten, Azure Container Apps üzerinde oluşturulmuş yapay zeka destekli bir sürüm bulunur.

Bu öğreticide oluşturduğunuz uygulama, Retrieval Augmented Generation (RAG) kullanan bir AI sohbet asistanıdır. Azure OpenAI Hizmeti'ne bağlanmak için uygulama, web uygulamasını desteklemek için Spring AI SDK'larını kullanır. RAG hakkında daha fazla bilgi için lütfen Azure OpenAI Hizmeti ile Bilgi Alma Artırılmış Üretim (RAG) Uygulamasını Yürütme sayfasına bakınız.

Uygulama, Spring PetClinic örneğine yapay zekayla ilgili özellikleri tanıtmak için birlikte çalışan birçok farklı hizmete sahiptir.

Azure Container Apps'te yapay zeka uygulamasının mimarisi

Aşağıdaki diyagramda Azure Container Apps'teki yapay zeka uygulamasının mimarisi gösterilmektedir:

Container Apps ortamı, API ağ geçidi, kimlik doğrulaması için Entra Id ve diğer bileşenleri içeren yapay zeka uygulamasının mimarisinin diyagramı.

Uygulamanın Azure Container Apps ortamında barındırılan API ağ geçidi, tüm dış istekler için merkezi giriş noktası görevi görür.

Bu ağ geçidi aşağıdaki işlevleri gerçekleştirir:

  • Uygulama bileşenleri arasındaki iletişimi yönlendirir ve yönetir.
  • Microsoft Entra Kimliği aracılığıyla kullanıcıların kimliğini doğrular.
  • Yönetilen kimlikleri kullanarak Azure Container Registry ve bilişsel hizmetlere erişimin güvenliğini sağlar.
  • Tüm gelen dış kullanıcı isteklerini işler.

Ağ geçidi ayrılmış bir sanal ağ içinde çalışır ve uygulama ile dış sistemler arasında güvenli ve yalıtılmış iletişim sağlar.

Aşağıdaki tabloda uygulamada öne çıkan temel bileşenler ve hizmetler açıklanmaktadır:

Hizmet veya özellik Açıklama
Azure Container Apps Modern uygulamalar oluşturmak ve dağıtmak için tam olarak yönetilen, sunucusuz bir kapsayıcı platformu. Kapsayıcılı uygulamaların otomatik ölçeklendirme, trafik bölme ve düzeltme yönetimini işler.
Azure Container Apps ortamı Ağ, ölçeklendirme ve yönetim yapılandırmalarını paylaşan kapsayıcı uygulamaları grubunun etrafındaki güvenli sınır. Kapsayıcı uygulamalar dağıtımı için temel çalışma zamanını sağlar.
Azure OpenAI Hizmeti OpenAI'nin ChatGPT'sine, eklemelerine ve GPT-4 gibi güçlü dil modellerine REST API erişimi sağlar. Kurumsal düzeyde güvenlik ve uyumluluk özellikleriyle yapay zeka özelliklerini etkinleştirir.
Azure Container Registry Kapsayıcı görüntülerini depolamak ve yönetmek için özel bir Docker kayıt defteri hizmeti. Otomatik kapsayıcı derlemelerini, güvenlik açığı taramayı ve coğrafi çoğaltmayı destekler.
Yönetilen Kimlikler Azure hizmetlerine Azure AD'de otomatik olarak yönetilen kimlikler sağlar. Kimlik bilgilerini kodda depolamadan güvenli hizmet-hizmet kimlik doğrulamasına izin vererek kimlik bilgisi yönetimi gereksinimini ortadan kaldırır.
Bahar Yapay Zekası Spring ekosistemine yapay zeka tasarım ilkelerini uygulayan yapay zeka mühendisliği için Spring çerçevesi. Alternatif olarak Langchain4j , spring-petclinic-langchain4j içinde kendi PetClinic örneğine sahip başka bir yapay zeka çerçevesidir. Daha fazla bilgi için bkz. Sohbet İstemcisi API'si.

Uygulamanın altyapı kodu öğeleri hakkında daha fazla bilgi için Azure Container Apps'te ilk yapay zeka uygulamanızı getirme deposundakibicep betiklerine bakın.

Kod uygulaması

Aşağıdaki bölümlerde, bu ilk yapay zeka uygulamasının akışını anlamanıza yardımcı olacak koda giriş bilgileri sağlanmaktadır.

REST çağrıları yapma

Denetleyici ChatClient , sohbet istemcisi uç noktasıyla iletişim kurmakla sorumludur. PetclinicChatClient.java'de istem gönderme söz dizimi, kullanıcı girişini gönderme nesnesini chatClient içerir.

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

Sohbet özelleştirmeleri

ChatConfiguration sınıfı chatClient adresine gönderilen istekleri özelleştirir. Aşağıdaki listede bazı temel yapılandırma ayarları chatClientaçıklanmaktadır:

  • Bağlantı kimlik doğrulaması: İstemci, Azure OpenAI'ye bağlanır. Hem API anahtarı kimlik doğrulaması hem de yönetilen kimlik kimlik doğrulaması desteklenir.
  • Yapılandırma ayarları konumu: için ChatModel, dağıtım gpt-4o ve sıcaklık 0.7 yapılandırma dosyasında ayarlanır.
  • Vektör veritabanı: Vektör veritabanı, ekleme olarak bilinen kaynak belgelerin matematiksel gösterimlerini depolar. Vektör verileri, kullanıcının sorusuyla ilgili belgeleri bulmak için sohbet API'si tarafından kullanılır.
  • Sistem istemi: Yapay zeka davranışını özelleştirin ve performansı geliştirin.
  • API uç noktaları: Uygulama, OpenAI'nin uygulamayla etkileşim kurabilmesi için özelleştirilmiş Azure İşlevleri uç noktalarına sahiptir.
  • Danışmanlar: Danışmanlar, Spring uygulamalarınızda yapay zeka temelli etkileşimleri kesmek, değiştirmek ve iyileştirmek için esnek ve güçlü bir yol sağlar.

Örnek

Aşağıdaki kod örneği, ChatClientCustomizer sınıfının yapılandırma bilgilerini nasıl yüklediğini gösterir.

@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));
}

API uç noktaları

altında java.util.Function tanımlanan çekirdekler, uygulama bağlamında tanımlanan işlevlerdir. Bu işlevler, yapay zeka modelleri ile PetClinic uygulaması arasındaki arabirimdir.

AIFunctionConfiguration.java'da PetClinic uygulamasıyla iletişim kuran örnek işlevler vardır. Bu işlevlerle ilgili aşağıdaki ayrıntıları aklınızda bulundurun:

  • İşlevlere @Description yönelik ek açıklamalar, yapay zeka modellerinin işlevleri doğal bir dilde anlamasına yardımcı olur.
  • İşlev gövdesi, iş gereksinimlerinize bağlı olarak değişir.

Danışman

Danışmanlar, yapay zeka istemlerini değiştiren veya geliştiren ve istem işleme için ara yazılım görevi yapan bileşenlerdir.

Bu uygulama iki farklı danışman kullanır:

  • QuestionAnswerAdvisor yapay zeka modellerini çağırarak, istemi sonlandırmadan önce arama vektörlerinden elde edilen sonuçları içeren yeni bir kullanıcı sorgusu oluşturur.
  • PromptChatMemoryAdvisor istemine sohbet belleği ekler ve sohbet modeline bir konuşma geçmişi sağlar. Bu bağlamda yapay zeka modeli sohbetin bağlamını anımsayabilir ve sohbet kalitesini artırabilir.

Daha fazla bilgi için bkz . Danışmanlar API'si.

Sonraki Adımlar