Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O exemplo Spring PetClinic é uma aplicação de referência clássica que demonstra o uso do Spring Boot com Java. Este tutorial apresenta uma versão aprimorada por IA construída em Azure Container Apps, que estende o sistema de gestão tradicional do PetClinic com capacidades modernas de IA.
A aplicação que você constrói neste tutorial é um assistente de chat de IA que utiliza Geração Aumentada por Recuperação (RAG). Para se conectar ao serviço Azure OpenAI, a aplicação utiliza os SDKs do Spring AI para dar suporte à aplicação web. Para mais informações sobre o RAG, veja Implementar a Geração Aumentada por Recuperação (RAG) com o serviço Azure OpenAI.
A aplicação apresenta muitos serviços diferentes que trabalham juntos para introduzir as funcionalidades relacionadas à IA no exemplo Spring PetClinic.
Arquitetura do aplicativo AI em Aplicativos de Contêiner do Azure
O diagrama a seguir mostra a arquitetura da aplicação de IA no Azure Container Apps:
O gateway API da aplicação, alojado no ambiente Azure Container Apps, serve como ponto de entrada central para todas as solicitações externas.
Este gateway realiza as seguintes funções:
- Roteia e gere a comunicação entre componentes da aplicação.
- Autentica utilizadores através do Microsoft Entra ID.
- Assegura o acesso ao Azure Container Registry e aos serviços cognitivos usando identidades geridas.
- Lida com todas as solicitações de usuários externos recebidas.
O gateway opera dentro de uma rede virtual dedicada, garantindo uma comunicação segura e isolada entre o aplicativo e os sistemas externos.
A tabela a seguir descreve os componentes e serviços principais apresentados na aplicação.
| Serviço ou funcionalidade | Descrição |
|---|---|
| Aplicativos de contêiner do Azure | Uma plataforma de contêiner totalmente gerida e sem servidor para construir e implementar aplicações modernas. Lida com escalonamento automático, divisão de tráfego e gestão de revisões de aplicações containerizadas. |
| Ambiente de Aplicativos de Contêiner do Azure | Um limite seguro ao redor de um grupo de aplicações em contêiner que compartilham configurações de rede, dimensionamento e gestão. Fornece o tempo de execução fundamental para uma implantação de aplicativos de contêiner. |
| Azure OpenAI Service | Fornece acesso à API REST ao ChatGPT da OpenAI, embeddings e modelos de linguagem poderosos como o GPT-4. Permite capacidades de IA com recursos de segurança e conformidade de nível empresarial. |
| Registo de Contentores Azure | Um serviço de registo Docker privado para armazenar e gerir imagens de contêineres. Suporta construções automáticas de contentores, análise de vulnerabilidades e geo-replicação. |
| Identidades Gerenciadas | Fornece serviços do Azure com identidades geridas automaticamente no Azure AD. Elimina a necessidade de gestão de credenciais, ao permitir uma autenticação segura de serviço para serviço sem armazenar credenciais no código. |
| IA da primavera | Framework Spring para engenharia de IA que aplica princípios de design de IA ao ecossistema Spring. Alternativamente, Langchain4j é outro framework de IA com o seu próprio exemplo PetClinic em spring-petclinic-langchain4j. Para mais informações, consulte Chat Client API. |
Para mais informações sobre os elementos de infraestrutura como código da aplicação, consulte os scripts Bicep no repositório Bring your first AI app in Azure Container Apps.
Implementação de código
As secções seguintes fornecem uma introdução ao código para o ajudar a compreender o fluxo desta primeira aplicação de IA.
Fazer chamadas REST
O controlador ChatClient é responsável por comunicar com o ponto de extremidade do cliente de chat. A sintaxe para submeter um prompt em PetclinicChatClient.java inclui o objeto chatClient para submeter a entrada do utilizador.
return this.chatClient.prompt().user(u -> u.text(query)).call().content();
Personalizações do chat
A classe ChatConfiguration personaliza os pedidos enviados para chatClient. A lista seguinte descreve algumas definições de configuração chave de chatClient:
- Autenticação de conexões: o cliente conecta-se ao Azure OpenAI. Tanto a autenticação por chave de API como a autenticação por identidade gerida são suportadas.
- Localização das definições de configuração: Para
ChatModel, a implementaçãogpt-4oe a temperatura0.7estão definidas no ficheiro de configuração. - Base de dados vetorial: A base de dados vetorial armazena representações matemáticas dos documentos de origem, conhecidas como incorporações. Os dados vetoriais são usados pela API de chat para encontrar documentos relevantes para a pergunta de um utilizador.
- Prompt do sistema: Personalize o comportamento da IA e melhore o desempenho.
- Endpoints da API: A aplicação possui endpoints personalizados de Azure Functions para que o OpenAI possa interagir com a aplicação.
- Conselheiros: Os conselheiros oferecem uma forma flexível e poderosa de interceptar, modificar e aprimorar interações orientadas por IA nas suas aplicações Spring.
Exemplo
O exemplo de código a seguir mostra como a classe ChatClientCustomizer carrega informações de configuração:
@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));
}
Pontos finais da API
Os beans definidos sob java.util.Function são funções definidas no contexto da aplicação. Estas funções são a interface entre os modelos de IA e a aplicação PetClinic.
Existem funções de exemplo em AIFunctionConfiguration.java que comunicam com a aplicação PetClinic. Tenha em mente os seguintes detalhes sobre estas funções:
- As anotações
@Descriptionpara funções ajudam os modelos de IA a compreender as funções em linguagem natural. - O corpo da função varia, dependendo dos seus requisitos de negócio.
Conselheiros
Consultores são componentes que modificam ou melhoram as solicitações de IA, que atuam como middleware para o processamento de solicitações.
Esta aplicação utiliza dois conselheiros diferentes:
-
QuestionAnswerAdvisorchama os modelos de IA para gerar uma nova consulta do utilizador que inclua os resultados do vetor de pesquisa, antes de finalizar a mensagem. -
PromptChatMemoryAdvisoradiciona a memória de chat ao prompt e fornece um histórico de conversação ao modelo de chat. Com este contexto, o modelo de IA consegue recordar o contexto da conversa e melhorar a qualidade da conversa.
Para mais informações, consulte Advisors API.