Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Creación de un agente AI con un servidor de protocolo de comunicación de varios agentes para la resolución de facturas
Introducción
Las empresas que se ocupan de un gran volumen de productos, como distribuidores, industrias y cadenas minoristas, a menudo se enfrentan al desafío de identificar productos basados en descripciones textuales inexactas, incompletas o variadas. En entornos donde los datos se introducen manualmente, los errores tipográficos, las abreviaturas y los diferentes nombres comerciales pueden dificultar la identificación correcta de artículos en sistemas como la planificación de recursos empresariales (ERP), la gestión de relaciones con los clientes (CRM) y las plataformas de comercio electrónico.
En este escenario, existe una necesidad común de herramientas que puedan:
-
Interpretar descripciones informales o incorrectas proporcionadas por los usuarios.
-
Sugerir los productos más similares basados en la similitud semántica.
-
Garantizar una reserva con algoritmos tradicionales (como la coincidencia parcial) si la búsqueda semántica no encuentra resultados relevantes.
-
Integración con API y flujos automatizados de agentes inteligentes.
En este tutorial, aprenderemos a crear un agente de IA especializado en resolver inconsistencias en las facturas de devolución de clientes. El agente es capaz de interactuar con un servidor MCP que proporciona herramientas de búsqueda vectorial y recuperación de facturas, lo que permite al agente encontrar automáticamente la factura original de AR de la compañía basada en la información proporcionada por el cliente.
Un servidor de MCP (protocolo de contexto de modelo) es un componente de software responsable de la mediación de la comunicación entre agentes inteligentes y servicios externos mediante un protocolo estandarizado de mensajes y herramientas. Actúa como un puente entre los modelos de lenguaje (LLM) y las API existentes, lo que permite a los agentes de IA acceder a funcionalidades específicas de los sistemas heredados sin necesidad de reescribirlas o adaptarlas directamente.
¿Cómo funciona?
El servidor MCP:
- Expone un conjunto de herramientas con nombre que representan acciones o que los agentes de servicios pueden llamar.
- Cada herramienta se puede conectar a una función de base de datos, API de REST, sistema heredado o cualquier operación programable.
- Recibe comandos del agente (en formato JSON), ejecuta el servicio correspondiente y devuelve una respuesta estandarizada.
Uso con aplicaciones heredadas
Las aplicaciones heredadas a menudo ya proporcionan funcionalidad a través de bases de datos, archivos o API internas. Con un servidor MCP, puede:
-
Encapsular llamadas a servicios REST, procedimientos almacenados o consultas SQL.
-
Haga que estos servicios sean accesibles para un agente a través de una interfaz de comunicación unificada.
-
Integre sistemas antiguos con arquitecturas modernas basadas en IA conversacional y RAG.
Ventajas
-
Reutilización de la lógica de negocio existente.
-
No es necesario refactorizar los sistemas heredados.
-
Permite a los agentes de LLM interactuar con sistemas externos de manera segura y controlada.
-
Facilita las pruebas, el control de versiones y la modularidad en la integración entre la IA y los servicios de backend.
Este agente se basa en un modelo de lenguaje de IA generativa de Oracle Cloud Infrastructure (OCI) y se integra con herramientas declaradas dinámicamente gestionadas por un servidor MCP.
Con estos dos componentes de integración, el sistema activa un agente basado en Oracle LLM:
- Utilizar herramientas alojadas de forma remota mediante MCP.
- Realice búsquedas inteligentes de productos y EAN.
- Localice las facturas de AR correspondientes.
- Registre todo en observabilidad con Phoenix y OpenTelemetry.
Este diseño modular permite la reutilización y la fácil evolución del sistema a dominios que no sean facturas.
Objetivos
-
Configure un agente AI con LangGraph y LangChain para que funcione con peticiones de datos estructuradas.
-
Integre este agente con un servidor MCP mediante el protocolo
stdio
. -
Utilizar herramientas remotas registradas en el servidor para:
- Permite realizar búsquedas vectoriales a partir de descripciones de productos.
- Identificación del código EAN más probable para un artículo.
- Busque facturas de venta originales en función de criterios como cliente, estado y precio.
-
Supervise la ejecución del agente en tiempo real mediante Phoenix y OpenTelemetry.
-
Simule una resolución de problemas real basada en una entrada JSON como:
{ "customer": "Customer 43", "description": "Harry Potter", "price": 139.55, "location": "RJ" }
Requisitos
-
Acceso a un arrendamiento de OCI para gestionar sus recursos en la nube. Puede registrarse de forma gratuita en
oracle.com/cloud/free
. -
Instale Python
version 3.12
o superior. -
Acceso a una cuenta de OCI con el servicio OCI Generative AI activado.
-
Instale y configure la biblioteca
Langchain
de Python. -
Acceso al modelo
cohere.command-r-08-2024
mediante 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 observación con OpenTelemetry)opentelemetry-sdk
,opentelemetry-exporter-otlp
-
Un servidor MCP funcional con las herramientas:
resolve_ean
search_vectorized_product
search_invoices_by_criteria
-
Configure el archivo
server_invoice_items.py
para que se ejecute como un servidor MCP que simule un ERP. -
Descargue e instale el archivo
requirements.txt
mediante el comandopip install -r requirements.txt
.
Tarea 1: Creación de una instancia de Oracle Database 23ai (siempre gratis)
En esta tarea, aprenderemos a aprovisionar Oracle Database 23ai en modo Siempre gratis. Esta versión ofrece un entorno totalmente gestionado, ideal para el desarrollo, las pruebas y el aprendizaje, sin costo adicional.
-
Conéctese a la consola de OCI, vaya a Oracle Database, Autonomous Database y haga clic en Crear instancia de Autonomous Database.
-
Introduzca la siguiente información.
- Nombre de la base de datos: introduzca un nombre de identificación para la instancia.
- Tipo de carga de trabajo: seleccione Almacén de datos o Procesamiento de transacciones, según sus necesidades.
- Compartimento: seleccione un compartimento adecuado para organizar los recursos.
-
Seleccione Siempre gratis para asegurarse de que la instancia se aprovisiona de forma gratuita.
-
Cree una contraseña segura para el usuario
ADMIN
, que se utilizará para acceder a la base de datos. -
Revise la configuración y haga clic en Create Autonomous Database. Espere unos minutos a que la instancia se aprovisione y esté disponible para su uso.
Tarea 2: Ejecución del script de creación de tablas de Autonomous Database
Preparar la base de datos para nuestro caso de uso. Descargue y ejecute el script SQL desde aquí: script.sql
que crea tres tablas esenciales (PRODUCTS
, INVOICE
y ITEM_INVOICE
) para el escenario de conciliación de facturas con agentes de AI.
-
Vaya a la consola de OCI, vaya a Oracle Database, Autonomous Database y haga clic en el nombre de la instancia recién creada.
-
Haga clic en Database Actions y SQL para abrir la consola SQL en el explorador.
-
Descargue y abra el archivo
script.sql
localmente y pegue todo el contenido en el editor de la consola SQL. -
Haga clic en Run (Ejecutar) o pulse Ctrl + Intro. Espere a que se confirme que los comandos se hayan ejecutado correctamente.
-
Ejecute los siguientes comandos para verificar que las tablas se han creado.
SELECT table_name FROM user_tables;
Tarea 3: Inserción de datos de ejemplo en tablas
Insertar datos ficticios que simularán un escenario real para la aplicación de agentes de IA. Utilizaremos dos scripts SQL:
insert_products_books.sql
: inserta una lista de libros como productos, con sus respectivos EAN y descripciones.invoice_data_insert.sql
: inserta simulaciones de registros de facturas de AR, asociadas a clientes, productos y precios.
Los agentes de IA utilizarán estos datos para resolver incoherencias en las facturas de devolución.
-
Vaya a la consola de OCI, vaya a Oracle Database, Autonomous Database y haga clic en el nombre de la instancia recién creada.
-
Haga clic en Database Actions y SQL para abrir la consola SQL en el explorador.
-
Descargue el contenido del archivo
insert_products_books.sql
desde aquí:insert_products_books.sql
y péguelo en el editor SQL. -
Haga clic en Run (Ejecutar) o pulse Ctrl + Intro.
-
Ahora, descargue el contenido del archivo
invoice_data_insert.sql
desde aquí: archivoinvoice_data_insert.sql
y péguelo en el editor. -
Haga clic en Run (Ejecutar) o pulse Ctrl + Intro.
-
Ejecute el siguiente comando para comprobar los datos.
SELECT * FROM PRODUCTS; SELECT * FROM INVOICE; SELECT * FROM ITEM_INVOICE;
Tarea 4: Creación y compilación de la función de búsqueda avanzada en la base de datos
Cree una función PL/SQL denominada fn_advanced_search
, que realiza búsquedas inteligentes de palabras clave en las descripciones de productos. Esta función será utilizada por los agentes de AI como parte de la herramienta resolve_ean
, lo que les permitirá encontrar el código EAN más cercano en función de la descripción proporcionada por un cliente en la nota de devolución.
¿Qué hace la función?
-
Tokenización de términos de entrada (por ejemplo:
harry poter stone
se convierte en [harry
,poter
,stone
]) -
Técnicas de búsqueda con puntuación:
-
Búsqueda directa en las descripciones
(LIKE '%term%')
→ +3 puntos. -
Búsqueda fonética con
SOUNDEX
→ +2 puntos. -
Búsqueda ortográfica similar con
UTL_MATCH.EDIT_DISTANCE <= 2
→ +1 punto.
-
-
Lógica de puntuación:
- Suma puntos para cada producto.
- Devuelve solo productos con una puntuación total > 0.
-
Formato de devolución:
Los productos se devuelven como objetos de tipo
result_product
que contienen:code
(EAN).description
(descripción del producto).similarity
(puntuación de búsqueda calculada).
Realice los pasos:
-
Copie y pegue el script
similarity_search.sql
completo en la consola SQL de la base de datos autónoma.Esto incluye:
- Creando la tabla
products
(si aún no se ha realizado). - Creación de un índice de texto.
- Tipos
product_result
yproduct_result_tab
. - La función
fn_advanced_search
. - Pruebas opcionales.
- Creando la tabla
-
Ejecute el script completo. El resultado debe ser
Function created
yType created
. -
Ejecute la siguiente consulta para probar la función con descripciones simuladas.
SELECT * FROM TABLE(fn_advanced_search('harry poter askaban')) ORDER BY similarity DESC;
Tarea 5: Vectorización de productos para la búsqueda semántica con IA
En esta tarea, complementaremos la búsqueda avanzada basada en SQL con un nuevo enfoque basado en vectores semánticos. Esto será especialmente útil para los agentes de IA que utilizan incrustaciones (representaciones numéricas de frases) para comparar la similitud entre las descripciones de productos, de manera más flexible e inteligente que las búsquedas fonéticas o de palabras.
Para ello, utilizaremos el script de Python (process_vector_products.py
), que se conecta a la base de datos Oracle, extrae los productos de la tabla PRODUCTS
, transforma sus descripciones en vectores (embeddings) y crea un índice vectorial mediante la propia base de datos Oracle.
¿Qué hace el script?
- Lee los productos de la tabla
products
medianteoracledb
. - Genera las incrustaciones mediante el modelo
all-MiniLM-L6-v2
del paquetesentence-transformers
. - Cree la tabla
embeddings_products
para almacenar los vectores directamente en Oracle. - Inserte o actualice los registros y guarde el vector como un BLOB binario (en formato serializado
float32
).
Nota: Las incrustaciones se convierten en bytes con
np.float32.tobytes()
para almacenarse como BLOB. Para recuperar los vectores, utilicenp.frombuffer(blob, dtype=np.float32)
.
Este formato permite realizar búsquedas de similitud futuras directamente mediante SQL o cargando los vectores de la base de datos para operaciones con np.dot
, cosine_similarity
o integración con LLM.
Este script genera incrustaciones semánticas para productos y escribe estos vectores en Oracle Database 23ai. Los puntos principales se destacan a continuación:
-
Configuración de la Conexión a Oracle mediante Wallet.
El código utiliza la biblioteca
oracledb
en el modo delgado y configura el acceso seguro mediante una Oracle Wallet.os.environ["TNS_ADMIN"] = WALLET_PATH connection = oracledb.connect( user=USERNAME, password=PASSWORD, dsn=DB_ALIAS, ... )
-
Consulta de la tabla de productos.
La tabla
products
contiene los datos originales (ID, código y descripción). Estas descripciones se utilizan como base para generar los vectores semánticos.cursor.execute("SELECT id, code, description FROM products")
-
Generar incrustaciones con
sentence-transformers
El modelo
all-MiniLM-L6-v2
se utiliza para transformar las descripciones de productos en vectores numéricos de alta dimensión.model = SentenceTransformer('all-MiniLM-L6-v2') embeddings = model.encode(descriptions, convert_to_numpy=True)
-
Cree la tabla Embeddings (si no existe).
La tabla
embeddings_products
se crea dinámicamente con los siguientes campos:id
: identificador de producto (clave primaria).code
: código de producto.description
: descripción original.vector
: BLOB que contiene el vector serializado enfloat32
.
CREATE TABLE embeddings_products ( id NUMBER PRIMARY KEY, code VARCHAR2(100), description VARCHAR2(4000), BLOB vector )
Nota: La creación utiliza
EXECUTE IMMEDIATE
dentro deBEGIN...EXCEPTION
para evitar un error si la tabla ya existe. -
Insertar o actualizar con
MERGE
.Para cada producto, el vector se convierte en bytes (
float32
) y se inserta o actualiza en la tablaembeddings_products
mediante unMERGE INTO
.vector_bytes = vector.astype(np.float32).tobytes()
MERGE INTO embeddings_products ...
Ejecución del script:
Nota: Debe descargar y configurar Oracle Wallet.
Ejecutar en el terminal.
python process_vector_products.py
Listo Los productos de la base de datos se han vectorizado.
¿Por qué es esto importante?
La búsqueda vectorial es muy eficaz para encontrar productos incluso cuando la descripción es subjetiva, imprecisa o en lenguaje natural.
Descripción del Código: Agente LLM con Servidor MCP
Este proyecto se compone de 3 componentes principales:
- Agente ReAct con LangGraph y OCI LLM (
main.py
). - Servidor de MCP con herramientas de resolución de facturas (
server_invoice_items.py
). - Buscar productos similares con OCI Generative AI y FAISS (
product_search.py
).
Comprender la funcionalidad de cada componente y resaltar detalladamente las partes más importantes del código.
-
Agente ReAct con LangGraph y LLM de OCI:
Este componente ejecuta la aplicación principal, donde el usuario interactúa con el agente según el modelo de lenguaje grande (LLM) de Oracle Cloud. Se comunica con el servidor MCP mediante un protocolo
stdio
.Principales características:
-
Configuración de telemetría con Phoenix y OpenTelemetry.
px.launch_app() ... trace.set_tracer_provider(provider)
-
Cree un modelo de LLM con
ChatOCIGenAI
.llm = ChatOCIGenAI( model_id="cohere.command-r-08-2024", ... )
-
Definición de la petición de datos orientada a tareas para la conciliación de facturas.
prompt = ChatPromptTemplate.from_messages([ ("system", """You are an agent responsible for resolving inconsistencies in invoices...""), ("placeholder", "{messages}") ])
-
Ejecución del servidor MCP local mediante
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:
-
Bucle de interacción de usuario principal.
while True: query = input("You: ") ... result = await agent_executor.ainvoke({"messages": memory_state.messages})
-
Integración con herramientas expuestas por el servidor MCP.
agent_executor = create_react_agent( model=llm, tools=tools, prompt=prompt, )
-
Múltiples servidores MCP.
Si desea consumir varios servidores MCP, solo incluya los servidores aquí:
# 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
Petición de Datos:
La petición de datos es esencial para establecer el proceso y las reglas de funcionamiento para el agente de IA.
-
-
Servidor MCP con herramientas de resolución:
Este servidor responde a las llamadas del agente proporcionando herramientas que acceden a Oracle Database con información de productos y facturas.
Principales características:
-
Inicialización del servidor MCP con el nombre
InvoiceItemResolver
.mcp = FastMCP("InvoiceItemResolver")
-
Conexión a Oracle Database mediante Oracle Wallet.
connection = oracledb.connect( user=USERNAME, password=PASSWORD, dsn=DB_ALIAS, wallet_location=WALLET_PATH, ... )
-
Implementación de herramientas de MCP.
-
search_vectorized_product
:Busca productos similares con incrustaciones.
@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
:Resuelve un EAN basado en la similitud de la descripción.
@mcp.tool() def resolve_ean(description: str) -> dict: result = execute_search_ean(description) ... return {"ean": result[0]["code"], ...}
-
search_invoices_by_criteria
:Permite buscar facturas de AR en función de varios 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 ]
-
-
Ejecute el servidor en modo
stdio
.if __name__ == "__main__": mcp.run(transport="stdio")
-
-
Buscar productos similares con OCI Generative AI y Vector Database:
Este módulo
product_search.py
implementa una clase de Python que le permite buscar productos semánticamente similares a partir de una descripción textual, utilizando:- Incrustaciones de OCI Generative AI.
- Índices vectoriales con Oracle Database 23ai.
- Comparaciones parciales con RapidFuzz como reserva.
Tarea 6: Configuración del modelo y las incrustaciones en el agente MCP
Configuremos el modelo de lenguaje y las incrustaciones utilizadas por el agente conversacional según el protocolo MCP, utilizando los servicios de OCI Generative AI.
-
Configure el modelo de idioma (LLM).
El modelo de lenguaje es responsable de interpretar los mensajes, generar respuestas y actuar como el cerebro principal del agente.
-
Configure en el archivo
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 Descripción model_id
ID de modelo de IA generativa, por ejemplo, cohere.command-r-08-2024
service_endpoint
Punto final regional del servicio de IA generativa compartment_id
OCID del compartimento OCI auth_profile
Nombre del perfil configurado en el archivo ~/.oci/config
model_kwargs
Temperatura, p superior y tamaño de respuesta -
Lista de modelos disponibles.
-
Uso de la CLI de OCI:
oci generative-ai model list --compartment-id <seu_compartment_id>
-
Uso del SDK de Python:
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)
-
-
-
Permite configurar incrustaciones para la búsqueda semántica.
La búsqueda de productos similares o información contextual depende de incrustaciones vectoriales.
Ejemplo de uso en el agente:
@mcp.tool() def search_vectorized_product(description: str) -> dict: """ Searches for a product by description using embeddings. """ return sercher.search_similar_products(description)
Cambie los parámetros (
product_search.py
) como se muestra a continuación: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 Descripción top_k
Número de propuestas devueltas. minimum_distance
Distancia máxima para considerar el resultado relevante. model_id
ID del modelo de embebido en OCI (por ejemplo, cohere.embed-english-light-v3.0
).service_endpoint
Punto final regional de OCI Generative AI. compartment_id
OCID de compartimiento. auth_profile
Nombre de perfil en el archivo ~/.oci/config
.wallet_path
Ruta de acceso a la cartera de Oracle Database 23ai. db_alias
Alias de Base de Datos. username
Usuario de Base de Datos. password
Contraseña de Base de Datos. Configure el servidor MCP:
Al igual que al ejecutar el código
process_vector_products.py
, deberá configurar Oracle Wallet para la base de datos Oracle Database 23ai.Modifique los parámetros según su configuración:
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
A continuación, ejecute
process_vector_products.py
para vectorizar los productos en Oracle Database 23ai.python process_vector_products.py
Con esto, el modelo de LLM y las incrustaciones están listos para ser utilizados por el agente de MCP con LangGraph y LangChain.
Tarea 7: Prueba de la búsqueda de descripción de producto y factura
-
Ejecute el archivo
main.py
con el siguiente comando.python main.py
-
Cuando aparezca el indicador You:, introduzca la siguiente sentencia.
{ "customer": "Customer 108", "description": "Harry Poter askaban", "price": 82.26, "location": "SP"}
Nota: El nombre del libro Harry Potter y Azkaban está escrito mal, pero el motor puede encontrarlo sin ningún problema.
Tenga en cuenta que los servicios se han ejecutado:
fetch_vectorized_product resolve_ean search_invoices_by_criteria
-
Ahora, introduzca la siguiente sentencia.
{ "customer": "Customer 108", "description": "Harry Poter askaban", "price": 82.26}
Verá que no se encontró ningún registro de factura de venta. Esto se debe a que la ubicación es clave para buscar una factura.
-
Ahora, introduzca la siguiente sentencia.
{ "customer": "Customer 108", "description": "Harry Poter", "location": "SP"}
Esta vez, introducimos la ubicación pero omitimos el precio unitario.
Sin embargo, se ha encontrado la facturación. Esto se debe a que el precio no es fundamental, pero sí ayuda a cerrar la brecha para ser más asertivo.
Algunos ejemplos de pruebas son:
{ "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"}
Tarea 8: Visualización de la observabilidad con Phoenix
Introduzca http://localhost:6006/
en el explorador para ver la observabilidad con Phoenix.
Enlaces relacionados
Acuses de recibo
- Autor: Cristiano Hoshikawa (ingeniero de soluciones de Oracle LAD A-Team)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Build an AI Agent with Multi-Agent Communication Protocol Server for Invoice Resolution
G35140-06
Copyright ©2025, Oracle and/or its affiliates.