Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Crie um Agente de IA com Servidor de Protocolo de Comunicação Multiagente para Resolução de Faturas
Introdução
As empresas que lidam com um grande volume de produtos - como distribuidores, indústrias e cadeias de varejo - muitas vezes enfrentam o desafio de identificar produtos com base em descrições textuais imprecisas, incompletas ou variadas. Em ambientes onde os dados são inseridos manualmente, erros de digitação, abreviações e diferentes nomes comerciais podem dificultar a identificação correta de itens em sistemas como Enterprise Resource Planning (ERP), Customer Relationship Management (CRM) e plataformas de e-commerce.
Nesse cenário, há uma necessidade comum de ferramentas que possam:
-
Interpretar descrições informais ou incorretas fornecidas pelos usuários.
-
Sugira os produtos mais semelhantes com base na similaridade semântica.
-
Garantir um fallback com algoritmos tradicionais (como correspondência difusa) se a pesquisa semântica não encontrar resultados relevantes.
-
Integre com APIs e fluxos automatizados de agentes inteligentes.
Neste tutorial, aprenderemos a criar um agente de IA especializado na resolução de inconsistências em documentos fiscais de devolução ao cliente. O agente é capaz de interagir com um servidor MCP que fornece ferramentas de pesquisa vetorial e recuperação de faturas, permitindo que o agente localize automaticamente a fatura de C/R original da empresa com base nas informações fornecidas pelo cliente.
Um Servidor MCP (Model Context Protocol) é um componente de software responsável por mediar a comunicação entre agentes inteligentes e serviços externos por meio de um protocolo padronizado de mensagens e ferramentas. Ele atua como uma ponte entre os modelos de linguagem (LLMs) e as APIs existentes, permitindo que os agentes de IA acessem funcionalidades específicas de sistemas legados sem a necessidade de reescrevê-los ou adaptá-los diretamente.
Como isso funciona?
O servidor MCP:
- Expõe um conjunto de ferramentas nomeadas que representam ações ou serviços que os agentes podem chamar.
- Cada ferramenta pode ser conectada a uma função de banco de dados, à API REST, ao sistema legado ou a qualquer operação programável.
- Recebe comandos do agente (no formato JSON), executa o serviço correspondente e retorna uma resposta padronizada.
Uso com Aplicativos Legados
Muitas vezes, os aplicativos legados já fornecem funcionalidade por meio de bancos de dados, arquivos ou APIs internas. Com um Servidor MCP, você pode:
- Encapsule chamadas a serviços REST, procedimentos armazenados ou consultas SQL.
- Torne esses serviços acessíveis a um agente por meio de uma interface de comunicação unificada.
- Integre sistemas mais antigos com arquiteturas modernas baseadas em IA conversacional e RAG.
Vantagens
- Reutilização da lógica de negócios existente.
- Não há necessidade de refatorar sistemas legados.
- Permite que os agentes do LLM interajam com sistemas externos de maneira segura e controlada.
- Facilita o teste, o controle de versão e a modularidade na integração entre a IA e os serviços de backend.
Esse agente é baseado em um modelo de linguagem da Oracle Cloud Infrastructure (OCI) Generative AI e se integra a ferramentas declaradas dinamicamente gerenciadas por um servidor MCP.
Com a integração desses dois componentes, o sistema permite que um agente baseado no Oracle LLM:
- Use ferramentas hospedadas remotamente usando MCP.
- Realize pesquisas inteligentes de produtos e EANs.
- Localize as faturas de C/R correspondentes.
- Registre tudo em observabilidade usando Phoenix e OpenTelemetry.
Este design modular permite a reutilização e a fácil evolução do sistema para domínios diferentes das faturas.
Objetivos
-
Configure um agente do AI com LangGraph e LangChain para trabalhar com prompts estruturados.
-
Integre esse agente a um servidor MCP usando o protocolo
stdio
. -
Use ferramentas remotas registradas no servidor para:
- Execute pesquisas vetoriais a partir de descrições de produtos.
- Identifique o código EAN mais provável para um item.
- Procure NFFs originais com base em critérios como cliente, estado e preço.
-
Monitore a execução do agente em tempo real usando Phoenix e OpenTelemetry.
-
Simule uma resolução de problema real com base em uma entrada JSON, como:
{ "customer": "Customer 43", "description": "Harry Potter", "price": 139.55, "location": "RJ" }
Pré-requisitos
-
Acesso a uma tenancy do OCI para gerenciar seus recursos na nuvem. Você pode se registrar gratuitamente em
oracle.com/cloud/free
. -
Instale o Python
version 3.12
ou superior. -
Acesso a uma conta do OCI com o serviço OCI Generative AI ativado.
-
Instale e configure a biblioteca Langchain do Python.
-
Acesso ao modelo
cohere.command-r-08-2024
usando a OCI Generative AI. -
Instalar bibliotecas auxiliares:
oracledb
sentence_transformers
numpy
mcp-server-fastmcp
asyncio
langchain_core
langchain_community
mcp
langgraph
langchain_mcp_adapters
phoenix
(para observabilidade com OpenTelemetry)opentelemetry-sdk
,opentelemetry-exporter-otlp
-
Um servidor MCP funcional com as ferramentas:
resolve_ean
search_vectorized_product
search_invoices_by_criteria
-
Configure o arquivo
server_invoice_items.py
para ser executado como um servidor MCP simulando um ERP.
Instale o requirements.txt com:
pip install -r requirements.txt
Tarefa 1: Criar um Oracle Database 23ai (Sempre Gratuito)
Nesta tarefa, aprenderemos a provisionar um Oracle Database 23ai no modo Always Free. Esta versão oferece um ambiente totalmente gerenciado, ideal para desenvolvimento, teste e aprendizado, sem custo adicional.
-
Faça log-in na Console do OCI, navegue até Oracle Database, Autonomous Database e clique em Criar Instância do Autonomous Database.
-
Digite as seguintes informações.
- Nome do Banco de Dados: Informe um nome de identificação para sua instância.
- Tipo de Carga de Trabalho: Selecione Data Warehouse ou Processamento de Transações, de acordo com suas necessidades.
- Compartimento: Selecione um compartimento apropriado para organizar seus recursos.
-
Selecione Always Free para garantir que a instância seja provisionada gratuitamente.
-
Crie uma senha segura para o usuário
ADMIN
, que será usada para acessar o banco de dados. -
Verifique as definições e clique em Criar Autonomous Database. Aguarde alguns minutos para que a instância seja provisionada e esteja disponível para uso.
Tarefa 2: Executar o Script de Criação de Tabela do Autonomous Database
Prepare o banco de dados para nosso caso de uso. Faça download do script SQL e execute-o aqui: script.sql que cria três tabelas essenciais (PRODUCTS
, INVOICE
e ITEM_INVOICE
) para o cenário de reconciliação de NFFs com agentes de IA.
-
Vá para a Console do OCI, navegue até Oracle Database, Autonomous Database e clique no nome da instância recém-criada.
-
Clique em Database Actions e em SQL para abrir a console SQL no browser.
-
Faça download e abra o arquivo
script.sql
localmente e cole todo o conteúdo no editor da console SQL. -
Clique em Executar ou pressione Ctrl + Enter. Aguarde a confirmação de que os comandos foram executados com sucesso.
-
Execute os comandos a seguir para verificar se as tabelas foram criadas.
SELECT table_name FROM user_tables;
Tarefa 3: Inserir Dados de Exemplo em Tabelas
Insira dados fictícios que simularão um cenário real para a aplicação de agentes de IA. Usaremos dois scripts SQL:
insert_products_books.sql
: Insere uma lista de livros como produtos, com suas respectivas EANs e descrições.invoice_data_insert.sql
: Insere registros de NFF de C/R simulados, associados a clientes, produtos e preços.
Esses dados serão usados pelos agentes de IA para resolver inconsistências nas faturas de devoluções.
-
Vá para a Console do OCI, navegue até Oracle Database, Autonomous Database e clique no nome da instância recém-criada.
-
Clique em Database Actions e em SQL para abrir a console SQL no browser.
-
Faça download do conteúdo do arquivo
insert_products_books.sql
e cole-o no editor de SQL. -
Clique em Executar ou pressione Ctrl + Enter.
-
Agora, faça download e abra o conteúdo do arquivo
invoice_data_insert.sql
e cole-o no editor. -
Clique em Executar ou pressione Ctrl + Enter.
-
Execute o seguinte comando para verificar os dados.
SELECT * FROM PRODUCTS; SELECT * FROM INVOICE; SELECT * FROM ITEM_INVOICE;
Tarefa 4: Criar e Compilar a Função de Pesquisa Avançada no Banco de Dados
Crie uma função PL/SQL chamada fn_advanced_search
, que executa pesquisas inteligentes por palavras-chave em descrições de produtos. Essa função será usada por agentes de IA como parte da ferramenta resolve_ean
, permitindo que eles encontrem o código EAN mais próximo com base na descrição fornecida por um cliente na nota de devolução.
O que a função faz?
-
Tokenization dos termos de entrada (Exemplo:
harry poter stone
se torna [harry
,poter
,stone
]) -
Técnicas de pesquisa com pontuação:
-
Pesquisa direta nas descrições
(LIKE '%term%')
→ +3 pontos. -
Pesquisa fonética usando
SOUNDEX
→ +2 pontos. -
Pesquisa ortográfica semelhante usando
UTL_MATCH.EDIT_DISTANCE <= 2
→ +1 ponto.
-
-
Lógica de pontuação:
- Soma pontos para cada produto.
- Retorna apenas produtos com pontuação total > 0.
-
Formato de retorno:
Os produtos são retornados como objetos do tipo
result_product
que contêm:code
(EAN).description
(descrição do produto).similarity
(pontuação de pesquisa calculada).
Siga as etapas:
-
Copie e cole o script
similarity_search.sql
completo na console SQL do banco de dados autônomo.Isso inclui:
- Criando a tabela
products
(se ainda não tiver sido feita). - Criando um índice de texto.
- Tipos
product_result
eproduct_result_tab
. - A função
fn_advanced_search
. - Testes opcionais.
- Criando a tabela
-
Execute o script completo. O resultado deve ser
Function created
eType created
. -
Execute a consulta a seguir para testar a função com descrições simuladas.
SELECT * FROM TABLE(fn_advanced_search('harry poter askaban')) ORDER BY similarity DESC;
Tarefa 5: Vectorizar Produtos para Pesquisa Semântica com IA
Nesta tarefa, vamos complementar a pesquisa avançada baseada em SQL com uma nova abordagem baseada em vetores semânticos. Isso será especialmente útil para agentes de IA que usam incorporações (representações numéricas de frases) para comparar a similaridade entre descrições de produtos - de forma mais flexível e inteligente do que pesquisas de palavras ou fonéticas.
Para isso, usaremos o script Python (process_vector_products.py
), que se conecta ao banco de dados Oracle, extrai os produtos da tabela PRODUCTS
, transforma suas descrições em vetores (embeddings) e cria um índice vetorial usando o próprio banco de dados Oracle.
O que o script faz?
- Lê os produtos da tabela
products
usandooracledb
. - Gera as incorporações usando o modelo
all-MiniLM-L6-v2
do pacotesentence-transformers
. - Crie a tabela
embeddings_products
para armazenar os vetores diretamente no Oracle. - Insira ou atualize os registros e salve o vetor como um BLOB binário (no formato
float32
serializado).
Observação: as incorporações são convertidas em bytes com
np.float32.tobytes()
para serem armazenadas como BLOB. Para recuperar os vetores, usenp.frombuffer(blob, dtype=np.float32)
.
Esse formato permite que futuras pesquisas de similaridade sejam feitas diretamente usando SQL ou carregando os vetores do banco de dados para operações com np.dot
, cosine_similarity
ou integração com LLMs.
Esse script gera incorporações semânticas para produtos e grava esses vetores no banco de dados Oracle 23ai. Os principais pontos são destacados abaixo:
-
Configure a Conexão com o Oracle usando a Wallet.
O código usa a biblioteca
oracledb
no modo thin e configura o acesso seguro usando um Oracle Wallet.os.environ["TNS_ADMIN"] = WALLET_PATH connection = oracledb.connect( user=USERNAME, password=PASSWORD, dsn=DB_ALIAS, ... )
-
Consulta da Tabela de Produtos.
A tabela
products
contém os dados originais (ID, código e descrição). Essas descrições são usadas como base para gerar os vetores semânticos.cursor.execute("SELECT id, code, description FROM products")
-
Gerar Incorporações com
sentence-transformers
O modelo
all-MiniLM-L6-v2
é usado para transformar descrições de produtos em vetores numéricos de alta dimensão.model = SentenceTransformer('all-MiniLM-L6-v2') embeddings = model.encode(descriptions, convert_to_numpy=True)
-
Crie a Tabela de Incorporações (se não existir).
A tabela
embeddings_products
é criada dinamicamente com os seguintes campos:id
: Identificador do produto (chave primária).code
: Código do produto.description
: Descrição original.vector
: BLOB que contém o vetor serializado emfloat32
.
CREATE TABLE embeddings_products ( id NUMBER PRIMARY KEY, code VARCHAR2(100), description VARCHAR2(4000), BLOB vector )
Observação: A criação usa
EXECUTE IMMEDIATE
em umBEGIN...EXCEPTION
para evitar um erro se a tabela já existir. -
Inserir ou Atualizar usando
MERGE
.Para cada produto, o vetor é convertido em bytes (
float32
) e inserido ou atualizado na tabelaembeddings_products
usando umaMERGE INTO
.vector_bytes = vector.astype(np.float32).tobytes()
MERGE INTO embeddings_products ...
Execute o Script:
Lembre-se de que você precisa fazer download e configurar o Oracle Wallet. Execute-o no terminal.
python process_vector_products.py
Concluído! Os produtos no banco de dados foram vetorizados.
Por que isso é importante?
A busca vetorial é altamente eficaz para encontrar produtos mesmo quando a descrição é subjetiva, imprecisa ou em linguagem natural.
Compreender o Código: Agente LLM com Servidor MCP
Este projeto é composto por 3 componentes principais:
- ReAct Agent com LangGraph e OCI LLM (
main.py
). - Servidor MCP com Ferramentas de Resolução de Faturas (
server_invoice_items.py
). - Pesquise Produtos Semelhantes com a OCI Generative AI e a FAISS (
product_search.py
).
Entenda a funcionalidade de cada componente e realce com detalhes as partes mais importantes do código.
-
ReAct Agente com LangGraph e LLM do OCI:
Esse componente executa o aplicativo principal, no qual o usuário interage com o agente com base no LLM (Large Language Model) do Oracle Cloud. Ele se comunica com o servidor MCP usando um protocolo
stdio
.Principais características:
-
Configuração de Telemetria com Phoenix e OpenTelemetry.
px.launch_app() ... trace.set_tracer_provider(provider)
-
Crie o Modelo LLM usando o
ChatOCIGenAI
.llm = ChatOCIGenAI( model_id="cohere.command-r-08-2024", ... )
-
Definição do Prompt Orientado a Tarefas para Reconciliar NFFs.
prompt = ChatPromptTemplate.from_messages([ ("system", """You are an agent responsible for resolving inconsistencies in invoices...""), ("placeholder", "{messages}") ])
-
Execução do Servidor MCP Local usando
stdio
.# Run the client with the MCP server async def main(): async with MultiServerMCPClient( { "InvoiceItemResolver": { "command": "python", "args": ["server_invoice_items.py"], "transport": "stdio", }, } ) as client:
-
Loop de Interação do Usuário Principal.
while True: query = input("You: ") ... result = await agent_executor.ainvoke({"messages": memory_state.messages})
-
Integração com Ferramentas Expostas pelo Servidor MCP.
agent_executor = create_react_agent( model=llm, tools=tools, prompt=prompt, )
-
Vários Servidores MCP.
Se você quiser consumir vários servidores MCP, basta incluir os servidores aqui:
# Run the client with the MCP server async def main(): async with MultiServerMCPClient( { "InvoiceItemResolver": { "command": "python", "args": ["server_invoice_items.py"], "transport": "stdio", }, "InvoiceItemResolver": { "command": "python", "args": ["another_mcp_server.py"], "transport": "stdio", }, ... } ) as client: tools = client.get_tools() if not tools: print("❌ No MCP tools were loaded. Please check if the server is running.") return
Prompt:
O prompt é essencial para estabelecer as regras de processo e operação para o agente de IA.
-
-
Servidor MCP com Ferramentas de Resolução:
Este servidor responde às chamadas do agente fornecendo ferramentas que acessam um Oracle Database com informações de produtos e faturas.
Principais características:
-
Inicialização do Servidor MCP com o Nome
InvoiceItemResolver
.mcp = FastMCP("InvoiceItemResolver")
-
Conexão com o Oracle Database usando o Oracle Wallet.
connection = oracledb.connect( user=USERNAME, password=PASSWORD, dsn=DB_ALIAS, wallet_location=WALLET_PATH, ... )
-
Implementação de Ferramentas de MCP.
-
search_vectorized_product
:Pesquisas de produtos similares com incorporações.
@mcp.tool() def search_vectorized_product(description: str) -> dict: """ Searches for a product by description using embeddings. """ return sercher.search_similar_products(description)
-
resolve_ean
:Resolve um EAN com base na similaridade de descrição.
@mcp.tool() def resolve_ean(description: str) -> dict: result = execute_search_ean(description) ... return {"ean": result[0]["code"], ...}
-
search_invoices_by_criteria
:Procura faturas de C/R com base em vários filtros.
@mcp.tool() def search_invoices_by_criteria(customer: str = None, state: str = None, price: float = None, ean: str = None, margin: float = 0.05) -> list: """ Searches for outbound invoices based on customer, state, EAN, and approximate price. Allows one or more fields to be omitted. As long as an EAN has not been established, it is not useful to use this service. """ query = """ SELECT nf.no_invoice, nf.name_customer, nf.state, nf.date_print, inf.no_item, inf.code_ean, inf.description_product, inf.value_unitary FROM invoice nf JOIN item_invoice inf ON nf.no_invoice = inf.no_invoice WHERE 1=1 """ params = {} #if customer: query += " AND LOWER(nf.name_customer) LIKE LOWER(:customer)" params["customer"] = f"%{customer}%" #if state: query += " AND LOWER(nf.state) = LOWER(:state)" params["state"] = state #if ean: query += " AND inf.code_ean = :ean" params["ean"] = ean if price is not None: query += " AND inf.value_unitary BETWEEN :price_min AND :price_max" params["price_min"] = price * (1 - margin) params["price_max"] = price * (1 + margin) result = execute_query(query, params) return [ dict(zip( ["no_invoice", "name_customer", "state", "date_print", "no_item", "code_ean", "description_product", "value_unitary"], row )) for row in result ]
-
-
Execute o Servidor no Modo
stdio
.if __name__ == "__main__": mcp.run(transport="stdio")
-
-
Procure produtos semelhantes com a OCI Generative AI e o Vector Database:
Este módulo
product_search.py
implementa uma classe Python que permite procurar produtos semanticamente semelhantes em uma descrição textual, usando:- Incorporações da OCI Generative AI.
- Índices vetoriais com o Oracle Database 23ai.
- Comparações difusas com RapidFuzz como fallback.
Tarefa 6: Configurar o Modelo e as Incorporações no Agente MCP
Vamos configurar o modelo de linguagem e as incorporações usadas pelo agente de conversação com base no protocolo MCP, usando os serviços OCI Generative AI.
-
Configurar o Modelo de Idioma (LLM).
O modelo de linguagem é responsável por interpretar mensagens, gerar respostas e atuar como o principal cérebro do agente.
-
Configure no arquivo
main.py
.from langchain_community.chat_models.oci_generative_ai import ChatOCIGenAI llm = ChatOCIGenAI( model_id="cohere.command-r-08-2024", service_endpoint="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com", compartment_id="ocid1.compartment.oc1..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", auth_profile="DEFAULT", model_kwargs={"temperature": 0.1, "top_p": 0.75, "max_tokens": 2000} )
Parâmetro Descrição model_id
ID do modelo de IA generativa, por exemplo, cohere.command-r-08-2024
service_endpoint
Ponto final regional do serviço Generative AI compartment_id
OCID do compartimento do OCI auth_profile
Nome do perfil configurado no arquivo ~/.oci/config
model_kwargs
Temperatura, top-p e tamanho da resposta -
Liste os modelos disponíveis.
-
Usando a CLI do OCI:
oci generative-ai model list --compartment-id <seu_compartment_id>
-
Usando o Python SDK:
from oci.generative_ai import GenerativeAiClient from oci.config import from_file config = from_file(profile_name="DEFAULT") client = GenerativeAiClient(config) models = client.list_models(compartment_id=config["compartment_id"]) for model in models.data: print(model.display_name, model.model_id)
-
-
-
Configure incorporações para pesquisa semântica.
A busca por produtos semelhantes ou informações contextuais depende de incorporações vetoriais.
Exemplo de uso no agente:
@mcp.tool() def search_vectorized_product(description: str) -> dict: """ Searches for a product by description using embeddings. """ return sercher.search_similar_products(description)
Altere os parâmetros (
product_search.py
), conforme mostrado abaixo:class SimilarProductSearch: def __init__( self, top_k=5, minimum_distance=1.0, model_id="cohere.embed-english-light-v3.0", service_endpoint="https://inference.generativeai.us-chicago-1.oci.oraclecloud.com", compartment_id="ocid1.compartment.oc1..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", auth_profile="DEFAULT", wallet_path="/WALLET_PATH/Wallet_oradb23ai", db_alias="oradb23ai_high", username="USER", password="Password" ):
Parâmetro Descrição top_k
Número de sugestões retornadas. minimum_distance
Distância máxima para considerar o resultado relevante. model_id
ID do modelo de incorporação no OCI (por exemplo, cohere.embed-english-light-v3.0
).service_endpoint
Ponto final regional do OCI Generative AI. compartment_id
OCID do compartimento. auth_profile
Nome do perfil no arquivo ~/.oci/config
.wallet_path
Caminho para a wallet do Oracle Database 23ai. db_alias
Apelido do Banco de Dados. username
Usuário do banco de dados. password
Senha do banco de dados. Configure o servidor MCP:
Assim como você fez ao executar o código
process_vector_products.py
, será necessário configurar o Oracle Wallet para o banco de dados Oracle Database 23ai.Modifique os parâmetros de acordo com suas configurações:
import os # Oracle Wallet settings WALLET_PATH = "/path/to/Wallet" DB_ALIAS = "oradb23ai_high" USERNAME = "admin" PASSWORD = "..." # Define the environment variable required for the Oracle client os.environ["TNS_ADMIN"] = WALLET_PATH
Em seguida, execute o
process_vector_products.py
para vetorizar os produtos no Oracle Database 23ai.python process_vector_products.py
Com isso, o modelo LLM e as incorporações estão prontos para serem usados pelo agente MCP com LangGraph e LangChain.
Tarefa 7: Testar a Pesquisa de Descrição do Produto e da NFF
-
Execute o arquivo
main.py
usando o comando a seguir.python main.py
-
Quando o prompt Você: for exibido, informe a seguinte instrução.
{ "customer": "Customer 108", "description": "Harry Poter askaban", "price": 82.26, "location": "SP"}
Observação: O nome do livro Harry Potter e Azkaban está escrito errado, mas o mecanismo pode encontrá-lo sem problemas.
Observe que os serviços foram executados:
fetch_vectorized_product resolve_ean search_invoices_by_criteria
-
Agora, insira a seguinte instrução.
{ "customer": "Customer 108", "description": "Harry Poter askaban", "price": 82.26}
Você verá que não foi encontrado nenhum registro de documento fiscal. Isso ocorre porque o local é a chave para localizar uma NFF.
-
Agora, insira a seguinte instrução.
{ "customer": "Customer 108", "description": "Harry Poter", "location": "SP"}
Desta vez, inserimos o local, mas omitimos o preço unitário.
E ainda assim a fatura foi encontrada. Isto porque o preço não é fundamental, mas ajuda a fechar a lacuna para ser mais assertivo.
Alguns exemplos de teste são:
{ "customer": "Customer 108", "description": "Harry Poter askaban", "price": 82.26, "location": "SP"} { "customer": "Customer 108", "description": "Harry Poter askaban", "price": 82.26} { "customer": "Customer 108", "description": "Harry Poter askaban", "location": "SP"} { "customer": "Customer 108", "description": "Harry Poter askaban", "price": 82.26, "location": "RJ"} { "customer": "Customer 125", "description": "Harry Potter Chamber", "price": 79.16, "location": "SP"} { "customer": "Customer 125", "description": "Harry Potter Chamber", "price": 79.15, "location": "SP"}
Tarefa 8: Exibir a Observabilidade com o Phoenix
Digite http://localhost:6006/
no seu navegador para ver a observabilidade com Phoenix.
Links Relacionados
Confirmações
- Autor - Cristiano Hoshikawa (Engenheiro de Soluções da Equipe A do Oracle LAD)
Mais Recursos de Aprendizado
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal do Oracle Learning YouTube. Além disso, acesse education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Build an AI Agent with Multi-Agent Communication Protocol Server for Invoice Resolution
G35146-05
Copyright ©2025, Oracle and/or its affiliates.