Remarques :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction à Oracle Cloud Infrastructure Free Tier.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Création d'un agent AI avec le serveur Multi-Agent Communication Protocol pour la résolution des factures
Introduction
Les entreprises qui traitent un grand nombre de produits - tels que les distributeurs, les industries et les chaînes de vente au détail - sont souvent confrontées au défi d'identifier des produits sur la base de descriptions textuelles inexactes, incomplètes ou variées. Dans les environnements où les données sont saisies manuellement, les fautes de frappe, les abréviations et les différents noms commerciaux peuvent rendre difficile l'identification correcte des articles dans des systèmes tels que Enterprise Resource Planning (ERP), Customer Relationship Management (CRM) et les plates-formes de commerce électronique.
Dans ce scénario, il existe un besoin commun d'outils qui peuvent :
-
Interpréter les descriptions informelles ou incorrectes fournies par les utilisateurs.
-
Suggérez les produits les plus similaires en fonction de la similarité sémantique.
-
Garantir un retour en arrière avec des algorithmes traditionnels (tels que la correspondance partielle) si la recherche sémantique ne trouve pas de résultats pertinents.
-
Intégration aux API et aux flux automatisés d'agents intelligents.
Dans ce tutoriel, nous allons apprendre à créer un agent d'IA spécialisé dans la résolution des incohérences dans les factures de retour client. L'agent est capable d'interagir avec un serveur MCP qui fournit des outils de recherche vectorielle et de récupération de factures, ce qui permet à l'agent de trouver automatiquement la facture A/R d'origine de la société en fonction des informations fournies par le client.
Un serveur MCP (Model Context Protocol) est un composant logiciel responsable de la communication entre les agents intelligents et les services externes via un protocole standardisé de messages et d'outils. Il sert de pont entre les modèles de langage (LLM) et les API existantes, permettant aux agents d'IA d'accéder à des fonctionnalités spécifiques des systèmes hérités sans avoir à les réécrire ou à les adapter directement.
Comment ça fonctionne ?
Le serveur MCP :
- Affiche un ensemble d'outils nommés qui représentent les actions ou les services que les agents peuvent appeler.
- Chaque outil peut être connecté à une fonction de base de données, à une API REST, à un système hérité ou à toute opération programmable.
- Reçoit les commandes de l'agent (au format JSON), exécute le service correspondant et renvoie une réponse standardisée.
Utilisation avec les applications héritées
Les applications héritées fournissent souvent déjà des fonctionnalités via des bases de données, des fichiers ou des API internes. Avec un serveur MCP, vous pouvez :
- Encapsulez les appels de services REST, de procédures stockées ou de requêtes SQL.
- Rendre ces services accessibles à un agent via une interface de communication unifiée.
- Intégrez des systèmes plus anciens à des architectures modernes basées sur l'IA conversationnelle et la RAG.
Avantages
- Réutilisation de la logique métier existante.
- Pas besoin de refactoriser les anciens systèmes.
- Permet aux agents LLM d'interagir avec des systèmes externes de manière sécurisée et contrôlée.
- Facilite les tests, la gestion des versions et la modularité dans l'intégration entre l'IA et les services back-end.
Cet agent est basé sur un modèle de langage d'IA générative Oracle Cloud Infrastructure (OCI) et s'intègre aux outils déclarés dynamiquement gérés par un serveur MCP.
Avec l'intégration de ces deux composants, le système active un agent basé sur Oracle LLM :
- Utiliser des outils hébergés à distance à l'aide de MCP.
- Effectuer des recherches intelligentes de produits et d'EAN.
- Localiser les factures clients correspondantes.
- Enregistrez tout en observabilité à l'aide de Phoenix et de OpenTelemetry.
Cette conception modulaire permet une réutilisation et une évolution facile du système vers des domaines autres que les factures.
Objectifs
-
Configurez un agent AI avec LangGraph et LangChain pour utiliser des invites structurées.
-
Intégrez cet agent à un serveur MCP à l'aide du protocole
stdio
. -
Utilisez les outils distants enregistrés sur le serveur pour :
- Effectuez des recherches vectorielles à partir des descriptions de produits.
- Identifier le code EAN le plus probable pour un article.
- Rechercher les factures d'origine en fonction de critères tels que le client, l'état et le prix.
-
Surveillez l'exécution des agents en temps réel à l'aide de Phoenix et de OpenTelemetry.
-
Simuler une résolution de problème réelle en fonction d'une entrée JSON telle que :
{ "customer": "Customer 43", "description": "Harry Potter", "price": 139.55, "location": "RJ" }
Prérequis
-
Accès à une location OCI pour gérer vos ressources cloud. Vous pouvez vous inscrire gratuitement sur
oracle.com/cloud/free
. -
Installez Python
version 3.12
ou une version ultérieure. -
Accès à un compte OCI avec le service OCI Generative AI activé.
-
Installez et configurez la bibliothèque Langchain Python.
-
Accès au modèle
cohere.command-r-08-2024
à l'aide d'OCI Generative AI. -
Installez les bibliothèques auxiliaires :
oracledb
sentence_transformers
numpy
mcp-server-fastmcp
asyncio
langchain_core
langchain_community
mcp
langgraph
langchain_mcp_adapters
phoenix
(pour l'observabilité avec OpenTelemetry)opentelemetry-sdk
,opentelemetry-exporter-otlp
-
Un serveur MCP fonctionnel avec les outils :
resolve_ean
search_vectorized_product
search_invoices_by_criteria
-
Configurez le fichier
server_invoice_items.py
pour qu'il s'exécute en tant que serveur MCP simulant un ERP.
Installez le fichier requirements.txt avec :
pip install -r requirements.txt
Tâche 1 : créer une base de données Oracle Database 23ai (toujours gratuit)
Dans cette tâche, nous allons apprendre à provisionner une instance Oracle Database 23ai en mode Toujours gratuit. Cette version offre un environnement entièrement géré, idéal pour le développement, les tests et l'apprentissage, sans frais supplémentaires.
-
Connectez-vous à la console OCI, accédez à Oracle Database, à Autonomous Database et cliquez sur Créer une instance Autonomous Database.
-
Saisissez les informations suivantes .
- Nom de base de données : entrez un nom d'identification pour l'instance.
- Type de charge globale : sélectionnez Data Warehouse ou Transaction Processing en fonction de vos besoins.
- Compartiment : sélectionnez un compartiment approprié pour organiser vos ressources.
-
Sélectionnez Toujours gratuit pour vous assurer que l'instance est provisionnée gratuitement.
-
Créez un mot de passe sécurisé pour l'utilisateur
ADMIN
, qui sera utilisé pour accéder à la base de données. -
Vérifiez les paramètres et cliquez sur Create Autonomous Database (Créer une base de données autonome). Attendez quelques minutes que l'instance soit provisionnée et disponible pour utilisation.
Tâche 2 : exécution du script de création de table Autonomous Database
Préparez la base de données pour notre cas d'utilisation. Téléchargez et exécutez le script SQL à partir d'ici : script.sql, qui crée trois tables essentielles (PRODUCTS
, INVOICE
et ITEM_INVOICE
) pour le scénario de rapprochement des factures avec les agents AI.
-
Accédez à la console OCI, accédez à Oracle Database, à Autonomous Database et cliquez sur le nom de l'instance que vous venez de créer.
-
Cliquez sur Database Actions et sur SQL pour ouvrir la console SQL dans le navigateur.
-
Téléchargez et ouvrez le fichier
script.sql
en local et collez tout le contenu dans l'éditeur de console SQL. -
Cliquez sur Run (Exécuter) ou appuyez sur Ctrl + Entrée. Attendez la confirmation que les commandes ont été exécutées avec succès.
-
Exécutez les commandes suivantes pour vérifier que les tables ont été créées.
SELECT table_name FROM user_tables;
Tâche 3 : insérer des exemples de données dans des tables
Insérez des données fictives qui simuleront un scénario réel pour l'application des agents d'IA. Nous allons utiliser deux scripts SQL :
insert_products_books.sql
: insère une liste de livres en tant que produits, avec leurs EAN et descriptions respectifs.invoice_data_insert.sql
: Insère les enregistrements de facture de comptes clients fictifs, associés aux clients, aux produits et aux prix.
Ces données seront utilisées par les agents d'IA pour résoudre les incohérences dans les factures de retour.
-
Accédez à la console OCI, accédez à Oracle Database, à Autonomous Database et cliquez sur le nom de l'instance que vous venez de créer.
-
Cliquez sur Database Actions et sur SQL pour ouvrir la console SQL dans le navigateur.
-
Téléchargez et ouvrez le contenu du fichier
insert_products_books.sql
et collez-le dans l'éditeur SQL. -
Cliquez sur Run (Exécuter) ou appuyez sur Ctrl + Entrée.
-
A présent, téléchargez et ouvrez le contenu du fichier
invoice_data_insert.sql
et collez-le dans l'éditeur. -
Cliquez sur Run (Exécuter) ou appuyez sur Ctrl + Entrée.
-
Exécutez la commande suivante pour vérifier les données.
SELECT * FROM PRODUCTS; SELECT * FROM INVOICE; SELECT * FROM ITEM_INVOICE;
Tâche 4 : créer et compiler la fonction de recherche avancée dans la base de données
Créez une fonction PL/SQL appelée fn_advanced_search
, qui effectue des recherches intelligentes pour les mots-clés dans les descriptions de produit. Cette fonction sera utilisée par les agents d'IA dans le cadre de l'outil resolve_ean
, ce qui leur permettra de trouver le code EAN le plus proche en fonction de la description fournie par un client sur la note de retour.
Que fait la fonction ?
-
Tokenization des termes d'entrée (Exemple :
harry poter stone
devient [harry
,poter
,stone
]) -
Techniques de recherche avec scoring :
-
Recherche directe dans les descriptions
(LIKE '%term%')
→ +3 points. -
Recherche téléphonique à l'aide de
SOUNDEX
→ +2 points. -
Recherche orthographique similaire à l'aide de
UTL_MATCH.EDIT_DISTANCE <= 2
→ +1 point.
-
-
Logique de notation :
- Somme des points pour chaque produit.
- Renvoie uniquement les produits dont le score total est supérieur à 0.
-
Format renvoyé :
Les produits sont renvoyés en tant qu'objets de type
result_product
contenant :code
(EAN).description
(description du produit).similarity
(score de recherche calculé).
Suivez les étapes décrites:
-
Copiez et collez le script
similarity_search.sql
complet dans la console SQL de base de données autonome.Il s'agit notamment de :
- Création de la table
products
(si elle n'a pas encore été effectuée). - Créer un index de texte.
- Types
product_result
etproduct_result_tab
. - Fonction
fn_advanced_search
. - Tests facultatifs.
- Création de la table
-
Exécutez le script complet. Le résultat doit être
Function created
etType created
. -
Exécutez la requête suivante pour tester la fonction avec des descriptions simulées.
SELECT * FROM TABLE(fn_advanced_search('harry poter askaban')) ORDER BY similarity DESC;
Tâche 5 : vectoriser les produits pour la recherche sémantique avec l'IA
Dans cette tâche, nous compléterons la recherche SQL avancée par une nouvelle approche basée sur des vecteurs sémantiques. Cela sera particulièrement utile pour les agents d'IA qui utilisent des incorporations (représentations numériques de phrases) pour comparer la similitude entre les descriptions de produits - plus flexible et intelligemment que les recherches verbales ou phonétiques.
Pour ce faire, nous allons utiliser le script Python (process_vector_products.py
), qui se connecte à la base de données Oracle, extrait les produits de la table PRODUCTS
, transforme leurs descriptions en vecteurs (embeddings) et crée un index vectoriel à l'aide de la base de données Oracle elle-même.
Que fait le script ?
- Lit les produits à partir de la table
products
à l'aide deoracledb
. - Génère les incorporations en utilisant le modèle
all-MiniLM-L6-v2
à partir du packagesentence-transformers
. - Créez la table
embeddings_products
pour stocker les vecteurs directement dans Oracle. - Insérez ou mettez à jour les enregistrements et enregistrez le vecteur en tant que BLOB binaire (au format
float32
sérialisé).
Remarque : les incorporations sont converties en octets avec
np.float32.tobytes()
pour être stockées en tant qu'objet BLOB. Pour extraire les vecteurs, utiliseznp.frombuffer(blob, dtype=np.float32)
.
Ce format permet d'effectuer des recherches de similarité futures directement à l'aide de SQL ou en chargeant les vecteurs de la base de données pour les opérations avec np.dot
, cosine_similarity
ou l'intégration aux LLM.
Ce script génère des incorporations sémantiques pour les produits et écrit ces vecteurs dans la base de données Oracle 23ai. Les principaux points sont soulignés ci-dessous :
-
Configurez la connexions à Oracle à l'aide du portefeuille.
Le code utilise la bibliothèque
oracledb
en mode thin et configure un accès sécurisé à l'aide d'un Oracle Wallet.os.environ["TNS_ADMIN"] = WALLET_PATH connection = oracledb.connect( user=USERNAME, password=PASSWORD, dsn=DB_ALIAS, ... )
-
Consultation de la table Product.
La table
products
contient les données d'origine (ID, code et description). Ces descriptions servent de base à la génération des vecteurs sémantiques.cursor.execute("SELECT id, code, description FROM products")
-
Générer des incorporations avec
sentence-transformers
Le modèle
all-MiniLM-L6-v2
est utilisé pour transformer les descriptions de produit en vecteurs numériques de haute dimension.model = SentenceTransformer('all-MiniLM-L6-v2') embeddings = model.encode(descriptions, convert_to_numpy=True)
-
Créez la table d'intégration (si elle n'existe pas).
La table
embeddings_products
est créée dynamiquement avec les champs suivants :id
: identificateur de produit (clé primaire).code
: code produit.description
: description initiale.vector
: BLOB contenant le vecteur sérialisé dansfloat32
.
CREATE TABLE embeddings_products ( id NUMBER PRIMARY KEY, code VARCHAR2(100), description VARCHAR2(4000), BLOB vector )
Remarque : la création utilise
EXECUTE IMMEDIATE
dans une tableBEGIN...EXCEPTION
pour éviter toute erreur si la table existe déjà. -
Insérez ou mettez à jour à l'aide de
MERGE
.Pour chaque produit, le vecteur est converti en octets (
float32
) et inséré ou mis à jour dans la tableembeddings_products
à l'aide d'un élémentMERGE INTO
.vector_bytes = vector.astype(np.float32).tobytes()
MERGE INTO embeddings_products ...
Exécutez le script :
N'oubliez pas qu'Oracle Wallet doit être téléchargé et configuré. Exécutez-le dans le terminal.
python process_vector_products.py
Terminé ! Les produits de la base de données ont été vectorisés.
Pourquoi est-ce important ?
La recherche vectorielle est très efficace pour trouver des produits même lorsque la description est subjective, imprécise ou en langage naturel.
Comprendre le code : agent LLM avec serveur MCP
Ce projet est composé de 3 composantes principales :
- Agent ReAct avec LangGraph et OCI LLM (
main.py
). - Serveur MCP avec outils de résolution des factures (
server_invoice_items.py
). - Recherchez des produits similaires avec OCI Generative AI et FAISS (
product_search.py
).
Comprendre la fonctionnalité de chaque composant et mettre en évidence en détail les parties les plus importantes du code.
-
ReAct Agent avec LangGraph et LLM à partir d'OCI :
Ce composant exécute l'application principale, dans laquelle l'utilisateur interagit avec l'agent en fonction du grand modèle de langage (LLM) d'Oracle Cloud. Il communique avec le serveur MCP à l'aide du protocole
stdio
.Principales caractéristiques :
-
Configuration de télémétrie avec Phoenix et OpenTelemetry.
px.launch_app() ... trace.set_tracer_provider(provider)
-
Créez un modèle LLM à l'aide de
ChatOCIGenAI
.llm = ChatOCIGenAI( model_id="cohere.command-r-08-2024", ... )
-
Définition de l'invite orientée tâche pour le rapprochement des factures.
prompt = ChatPromptTemplate.from_messages([ ("system", """You are an agent responsible for resolving inconsistencies in invoices...""), ("placeholder", "{messages}") ])
-
Exécution du serveur MCP local à l'aide de
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:
-
Boucle principale d'interaction utilisateur.
while True: query = input("You: ") ... result = await agent_executor.ainvoke({"messages": memory_state.messages})
-
Intégration aux outils exposés par le serveur MCP.
agent_executor = create_react_agent( model=llm, tools=tools, prompt=prompt, )
-
Serveurs MCP multiples.
Si vous souhaitez utiliser plusieurs serveurs MCP, incluez simplement les serveurs ici :
# 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
Invite :
L'invite est essentielle pour établir le processus et les règles d'exploitation de l'agent AI.
-
-
Serveur MCP avec outils de résolution :
Ce serveur répond aux appels d'agent en fournissant des outils qui accèdent à une instance Oracle Database avec des informations sur les produits et les factures.
Principales caractéristiques :
-
Initialisation du serveur MCP avec le nom
InvoiceItemResolver
.mcp = FastMCP("InvoiceItemResolver")
-
Connexion à Oracle Database à l'aide d'Oracle Wallet.
connection = oracledb.connect( user=USERNAME, password=PASSWORD, dsn=DB_ALIAS, wallet_location=WALLET_PATH, ... )
-
Implémentation des outils MCP.
-
search_vectorized_product
:Recherche des produits similaires avec des incorporations.
@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
:Résout un EAN en fonction de la similarité des descriptions.
@mcp.tool() def resolve_ean(description: str) -> dict: result = execute_search_ean(description) ... return {"ean": result[0]["code"], ...}
-
search_invoices_by_criteria
:Recherche les factures clients en fonction de plusieurs filtres.
@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 ]
-
-
Exécutez le serveur en mode
stdio
.if __name__ == "__main__": mcp.run(transport="stdio")
-
-
Recherchez des produits similaires avec OCI Generative AI et Vector Database :
Ce module
product_search.py
implémente une classe Python qui vous permet de rechercher des produits sémantiques similaires à partir d'une description textuelle, à l'aide des éléments suivants :- Intégration à partir d'OCI Generative AI.
- Index vectoriels avec Oracle Database 23ai.
- Comparaisons partielles avec RapidFuzz en tant que restauration.
Tâche 6 : configurer le modèle et les incorporations dans l'agent MCP
Configurez le modèle de langage et les intégrations utilisés par l'agent conversationnel en fonction du protocole MCP, à l'aide des services OCI Generative AI.
-
Configurez le modèle de langue (LLM).
Le modèle de langage est chargé d'interpréter les messages, de générer des réponses et d'agir en tant que cerveau principal de l'agent.
-
Configurez-le dans le fichier
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} )
Paramètre Description model_id
ID de modèle d'IA générative, par exemple cohere.command-r-08-2024
service_endpoint
Adresse régionale du service d'IA générative compartment_id
OCID du compartiment OCI auth_profile
Nom du profil configuré dans le fichier ~/.oci/config
model_kwargs
Température, top-p et taille de réponse -
Répertoriez les modèles disponibles.
-
Utilisation de l'interface de ligne d'interface de ligne de commande OCI :
oci generative-ai model list --compartment-id <seu_compartment_id>
-
Utilisation du kit SDK 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)
-
-
-
Configurez les incorporations pour la recherche sémantique.
La recherche de produits similaires ou d'informations contextuelles dépend de l'intégration de vecteurs.
Exemple d'utilisation dans l'agent :
@mcp.tool() def search_vectorized_product(description: str) -> dict: """ Searches for a product by description using embeddings. """ return sercher.search_similar_products(description)
Modifiez les paramètres (
product_search.py
) comme indiqué ci-dessous :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" ):
Paramètre Description top_k
Nombre de suggestions renvoyées. minimum_distance
Distance maximale pour prendre en compte le résultat pertinent. model_id
ID du modèle d'intégration dans OCI (par exemple, cohere.embed-english-light-v3.0
).service_endpoint
Adresse régionale OCI Generative AI. compartment_id
l'OCID de compartiment. auth_profile
Nom du profil dans le fichier ~/.oci/config
.wallet_path
Chemin d'accès au portefeuille Oracle Database 23ai. db_alias
Alias base données. username
Utilisateur de base de données. password
Mot de passe de base de données. Configurez le serveur MCP :
Comme vous l'avez fait lors de l'exécution du code
process_vector_products.py
, vous devrez configurer Oracle Wallet pour la base de données Oracle Database 23ai.Modifiez les paramètres en fonction de vos paramètres :
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
Exécutez ensuite le fichier
process_vector_products.py
pour vectoriser les produits dans Oracle Database 23ai.python process_vector_products.py
Ainsi, le modèle LLM et les intégrations sont prêts à être utilisés par l'agent MCP avec LangGraph et LangChain.
Tâche 7 : Tester la recherche de produit et de description de facture
-
Exécutez le fichier
main.py
à l'aide de la commande suivante.python main.py
-
Lorsque l'invite You : s'affiche, entrez l'instruction suivante.
{ "customer": "Customer 108", "description": "Harry Poter askaban", "price": 82.26, "location": "SP"}
Remarque : le nom du livre Harry Potter et Azkaban est mal orthographié, mais le moteur peut le trouver sans aucun problème.
Notez que les services ont été exécutés :
fetch_vectorized_product resolve_ean search_invoices_by_criteria
-
Maintenant, entrez l'instruction suivante.
{ "customer": "Customer 108", "description": "Harry Poter askaban", "price": 82.26}
Aucun enregistrement de facture n'a été trouvé. En effet, le lieu est la clé pour trouver une facture.
-
Maintenant, entrez l'instruction suivante.
{ "customer": "Customer 108", "description": "Harry Poter", "location": "SP"}
Cette fois, nous entrons dans le lieu mais omettons le prix unitaire.
La facture a été trouvée. C'est parce que le prix n'est pas fondamental, mais il aide à combler l'écart pour être plus affirmé.
Voici quelques exemples de tests :
{ "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"}
Tâche 8 : voir l'observabilité avec Phoenix
Entrez http://localhost:6006/
dans votre navigateur pour afficher l'observabilité avec Phoenix.
Liens connexes
Accusés de réception
- Auteur - Cristiano Hoshikawa (ingénieur solutions d'équipe A Oracle LAD)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.
Build an AI Agent with Multi-Agent Communication Protocol Server for Invoice Resolution
G35142-05
Copyright ©2025, Oracle and/or its affiliates.