ノート:
- このチュートリアルでは、Oracle Cloudへのアクセス権が必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了したら、これらの値をクラウド環境に固有の値に置き換えてください。
請求書解決のためのマルチエージェント通信プロトコル・サーバーを使用したAIエージェントの構築
はじめに
流通業者、業界、小売チェーンなど、大量の製品を扱う企業は、多くの場合、不正確、不完全または多様なテキスト記述に基づいて製品を特定するという課題に直面しています。データが手動で入力される環境では、入力ミス、略語および商号が異なるため、エンタープライズ・リソース・プランニング(ERP)、顧客関係管理(CRM)およびeコマース・プラットフォームなどのシステムでアイテムを正しく識別することが困難になる場合があります。
このシナリオでは、次のことが可能なツールが一般的に必要になります。
-
ユーザーから提供された非公式または誤った説明を解釈します。
-
セマンティックな類似性に基づいて、最も類似した製品を提案します。
-
セマンティック検索で関連の結果が見つからない場合、従来のアルゴリズム(ファジー・マッチングなど)によるフォールバックを保証します。
-
APIと統合し、インテリジェント・エージェントの自動フローを実現します。
このチュートリアルでは、顧客からの返品請求書の不整合の解決に特化したAIエージェントを作成する方法を学習します。エージェントは、ベクトル検索および請求書取得ツールを提供するMCPサーバーと対話できるため、エージェントは、顧客から提供された情報に基づいて会社の元の売掛金請求書を自動的に検索できます。
MCPサーバー(モデル・コンテキスト・プロトコル)は、メッセージおよびツールの標準化されたプロトコルを介してインテリジェント・エージェントと外部サービス間の通信を仲介するソフトウェア・コンポーネントです。これは、言語モデル(LLM)と既存のAPIの間のブリッジとして機能し、AIエージェントは、レガシー・システムの特定の機能に書き換えたり、直接適応したりすることなくアクセスできます。
使用方法
MCPサーバー:
- エージェントがコールできるアクションまたはサービスを表す名前付きツールのセットを公開します。
- 各ツールは、データベース関数、REST API、レガシー・システムまたは任意のプログラム可能な操作に接続できます。
- エージェント・コマンド(JSON形式)を受信し、対応するサービスを実行し、標準化されたレスポンスを返します。
レガシー・アプリケーションでの使用
レガシー・アプリケーションは、多くの場合、データベース、ファイルまたは内部APIを介して機能を提供します。MCPサーバーでは、次のことができます:
- RESTサービス、ストアド・プロシージャまたはSQL問合せへのコールをカプセル化します。
- これらのサービスは、統合された通信インタフェースを介してエージェントからアクセスできるようにします。
- 会話型AIとRAGに基づいて、古いシステムを最新のアーキテクチャと統合します。
利点
- 既存のビジネス・ロジックを再利用します。
- レガシー・システムをリファクタリングする必要はありません。
- LLMエージェントは、セキュアで制御された方法で外部システムと対話できます。
- AIとバックエンド・サービスの統合におけるテスト、バージョニングおよびモジュール性を容易にします。
このエージェントは、Oracle Cloud Infrastructure(OCI)生成AI言語モデルに基づいており、MCPサーバーによって管理される動的に宣言されたツールと統合されます。
次の2つのコンポーネント統合により、Oracle LLMに基づくエージェントが有効になります。
- MCPを使用してリモートでホストされるツールを使用します。
- 製品およびEANのインテリジェント検索を実行します。
- 対応する売掛金請求書を見つけます。
- PhoenixおよびOpenTelemetryを使用して、可観測性のすべてを記録します。
このモジュール設計により、請求書以外のドメインへのシステムの再利用性と容易な進化が可能になります。
目的
-
構造化プロンプトを操作するために、LangGraphおよびLangChainを使用してAIエージェントを構成します。
-
stdio
プロトコルを使用して、このエージェントをMCPサーバーと統合します。 -
サーバーに登録されているリモート・ツールを使用して、次のことを行います。
- 製品説明からベクトル検索を実行します。
- アイテムに最も可能性の高いEANコードを指定します。
- 顧客、都道府県、価格などの基準に基づいて当初請求書を検索します。
-
フェニックスおよびOpenTelemetryを使用して、エージェントの実行をリアルタイムでモニターします。
-
次のようなJSON入力に基づいて、実際の問題解決をシミュレートします。
{ "customer": "Customer 43", "description": "Harry Potter", "price": 139.55, "location": "RJ" }
前提条件
-
OCIテナンシにアクセスして、クラウド・リソースを管理します。
oracle.com/cloud/free
で無料で登録できます。 -
Python
version 3.12
以上をインストールします。 -
OCI生成AIサービスを有効にしたOCIアカウントへのアクセス。
-
Python Langchainライブラリをインストールして構成します。
-
OCI生成AIを使用した
cohere.command-r-08-2024
モデルへのアクセス。 -
補助ライブラリをインストールします。
oracledb
sentence_transformers
numpy
mcp-server-fastmcp
asyncio
langchain_core
langchain_community
mcp
langgraph
langchain_mcp_adapters
phoenix
(OpenTelemetryによる観測性用)opentelemetry-sdk
,opentelemetry-exporter-otlp
-
ツールを備えた機能的なMCPサーバー:
resolve_ean
search_vectorized_product
search_invoices_by_criteria
-
ERPをシミュレートするMCPサーバーとして動作するように
server_invoice_items.py
ファイルを構成します。
requirements.txtを次のようにインストールします。
pip install -r requirements.txt
タスク1: Oracle Database 23aiの作成(Always Free)
このタスクでは、Oracle Database 23aiをAlways Freeモードでプロビジョニングする方法を学習します。このバージョンは、追加コストなしで開発、テスト、学習に最適なフルマネージド環境を提供します。
-
OCIコンソールにログインし、「Oracle Database」、「Autonomous Database」に移動して、「Autonomous Databaseインスタンスの作成」をクリックします。
-
次の情報を入力します
- データベース名:インスタンスの識別名を入力します。
- ワークロード・タイプ:必要に応じて、「データ・ウェアハウス」または「トランザクション処理」を選択します。
- コンパートメント:リソースを編成する適切なコンパートメントを選択します。
-
「Always Free」を選択して、インスタンスが無償でプロビジョニングされていることを確認します。
-
データベースへのアクセスに使用される
ADMIN
ユーザーのセキュアなパスワードを作成します。 -
設定を確認し、「Autonomous Databaseの作成」をクリックします。インスタンスがプロビジョニングされ、使用可能になるまで数分待ちます。
タスク2: Autonomous Database表作成スクリプトの実行
ユース・ケースに合わせてデータベースを準備します。ここからSQLスクリプトをダウンロードして実行します: script.sql。このスクリプトは、請求書をAIエージェントと照合するシナリオ用に3つの重要な表(PRODUCTS
、INVOICE
およびITEM_INVOICE
)を作成します。
-
OCIコンソールに移動し、「Oracle Database」、「Autonomous Database」に移動して、新しく作成されたインスタンスの名前をクリックします。
-
「データベース・アクション」および「SQL」をクリックして、ブラウザでSQLコンソールを開きます。
-
script.sql
ファイルをダウンロードしてローカルで開き、すべての内容をSQLコンソールエディタに貼り付けます。 -
「実行」をクリックするか、[Ctrl]を押しながら[Enter]を押します。コマンドが正常に実行されたことを確認するまで待ちます。
-
次のコマンドを実行して、表が作成されたことを確認します。
SELECT table_name FROM user_tables;
タスク3: 表へのサンプル・データの挿入
AIエージェントの適用の実際のシナリオをシミュレートするダミー・データを挿入します。次の2つのSQLスクリプトを使用します。
insert_products_books.sql
: ブックのリストを製品として、それぞれのEANおよび説明とともに挿入します。invoice_data_insert.sql
: 顧客、製品および価格に関連付けられたモック売掛金請求書レコードを挿入します。
このデータは、返品請求書の不整合を解決するためにAIエージェントによって使用されます。
-
OCIコンソールに移動し、「Oracle Database」、「Autonomous Database」に移動して、新しく作成されたインスタンスの名前をクリックします。
-
「データベース・アクション」および「SQL」をクリックして、ブラウザでSQLコンソールを開きます。
-
insert_products_books.sql
ファイルの内容をダウンロードして開き、SQLエディタに貼り付けます。 -
「実行」をクリックするか、[Ctrl]を押しながら[Enter]を押します。
-
ここで、
invoice_data_insert.sql
ファイルの内容をダウンロードして開き、エディタに貼り付けます。 -
「実行」をクリックするか、[Ctrl]を押しながら[Enter]を押します。
-
次のコマンドを実行してデータをチェックします。
SELECT * FROM PRODUCTS; SELECT * FROM INVOICE; SELECT * FROM ITEM_INVOICE;
タスク4: データベースでの拡張検索機能の作成およびコンパイル
fn_advanced_search
というPL/SQLファンクションを作成します。このファンクションは、製品摘要のキーワードのインテリジェント検索を実行します。この関数は、resolve_ean
ツールの一部としてAIエージェントによって使用され、返品ノートで顧客から提供された説明に基づいて最も近いEANコードを検索できます。
この関数は何をしますか。
-
入力語のトークン化(例:
harry poter stone
は[harry
、poter
、stone
]) -
スコアリングを使用した検索手法:
-
(LIKE '%term%')
→+3ポイントの説明の直接検索。 -
SOUNDEX
→+2ポイントを使用した音声検索。 -
UTL_MATCH.EDIT_DISTANCE <= 2
→+1ポイントを使用した類似のスペル検索。
-
-
スコアリング・ロジック:
- 各製品のポイントの合計。
- 合計スコアが0より大きい製品のみを返します。
-
戻り形式:
製品は、次のものを含む
result_product
型オブジェクトとして返されます。code
(EAN)。description
(製品の説明)。similarity
(計算済検索スコア)。
次の手順に従います。
-
完全な
similarity_search.sql
スクリプトをコピーして、自律型データベースのSQLコンソールに貼り付けます。次のものが含まれます。
products
表の作成(まだ実行されていない場合)。- テキスト索引の作成
product_result
およびproduct_result_tab
と入力します。fn_advanced_search
ファンクション。- オプション・テスト。
-
スクリプト全体を実行します。結果は、
Function created
およびType created
である必要があります。 -
次の問合せを実行して、シミュレートされた説明で関数をテストします。
SELECT * FROM TABLE(fn_advanced_search('harry poter askaban')) ORDER BY similarity DESC;
タスク5: AIによるセマンティック検索のための製品のベクトル化
このタスクでは、セマンティック・ベクトルに基づく新しいアプローチを使用して、高度なSQLベースの検索を補完します。これは、埋込み(フレーズの数値表現)を使用して製品記述間の類似性を比較するAIエージェントに特に役立ちます。これは、単語検索や音声検索よりも柔軟かつインテリジェントです。
これを行うには、Pythonスクリプト(process_vector_products.py
)を使用します。このスクリプトは、Oracleデータベースに接続し、PRODUCTS
表から製品を抽出し、その説明をベクトル(埋込み)に変換し、Oracleデータベース自体を使用してベクトル索引を作成します。
脚本は何をするのか。
oracledb
を使用して、products
表から製品を読み取ります。sentence-transformers
パッケージのall-MiniLM-L6-v2
モデルを使用して埋込みを生成します。embeddings_products
表を作成して、ベクトルをOracleに直接格納します。- レコードを挿入または更新し、ベクトルをバイナリBLOBとして保存します(シリアライズされた
float32
形式)。
ノート:埋込みは、BLOBとして格納される
np.float32.tobytes()
を使用してバイトに変換されます。ベクトルを取得するには、np.frombuffer(blob, dtype=np.float32)
を使用します。
この形式では、SQLを使用して、またはnp.dot
、cosine_similarity
またはLLMとの統合の操作のためにデータベースからベクトルをロードすることで、将来の類似性検索を実行できます。
このスクリプトは、製品のセマンティック埋込みを生成し、これらのベクトルをOracle 23aiデータベースに書き込みます。主なポイントは次のとおりです。
-
Walletを使用してOracleへの接続を構成します。
このコードは、
oracledb
ライブラリをシン・モードで使用し、Oracle Walletを使用してセキュア・アクセスを構成します。os.environ["TNS_ADMIN"] = WALLET_PATH connection = oracledb.connect( user=USERNAME, password=PASSWORD, dsn=DB_ALIAS, ... )
-
製品表のコンサルティング。
products
表には、元のデータ(ID、コードおよび説明)が含まれます。これらの説明は、セマンティック・ベクトルの生成の基礎として使用されます。cursor.execute("SELECT id, code, description FROM products")
-
sentence-transformers
を使用した埋込みの生成all-MiniLM-L6-v2
モデルは、製品記述を高次元数値ベクトルに変換するために使用されます。model = SentenceTransformer('all-MiniLM-L6-v2') embeddings = model.encode(descriptions, convert_to_numpy=True)
-
埋込み表の作成(存在しない場合)。
embeddings_products
表は、次のフィールドを使用して動的に作成されます。id
: 製品識別子(主キー)。code
: 製品コード。description
: 元の説明。vector
:float32
でシリアライズされたベクトルを含むBLOB。
CREATE TABLE embeddings_products ( id NUMBER PRIMARY KEY, code VARCHAR2(100), description VARCHAR2(4000), BLOB vector )
ノート:作成では、表がすでに存在する場合にエラーを回避するために、
BEGIN...EXCEPTION
内のEXECUTE IMMEDIATE
が使用されます。 -
MERGE
を使用して挿入または更新。各製品について、ベクトルはバイト(
float32
)に変換され、MERGE INTO
を使用してembeddings_products
表に挿入または更新されます。vector_bytes = vector.astype(np.float32).tobytes()
MERGE INTO embeddings_products ...
このスクリプトを実行します。
Oracle Walletをダウンロードして構成する必要があることに注意してください。端末で実行します。
python process_vector_products.py
完了!データベース内の製品はベクトル化されています。
なぜこれが重要なのですか?
ベクトル検索は、記述が主観的、不正確、または自然言語であっても、製品を見つけるのに非常に効果的です。
コードの理解: MCPサーバーを使用したLLMエージェント
このプロジェクトは3つの主要コンポーネントで構成されています。
- LangGraphおよびOCI LLMを使用したReActエージェント(
main.py
)。 - 請求書解決ツールを備えたMCPサーバー(
server_invoice_items.py
)。 - OCI Generative AIおよびFAISSを使用した類似製品の検索(
product_search.py
)。
各コンポーネントの機能を理解し、コードの最も重要な部分を詳細に説明します。
-
OCIからのLangGraphおよびLLMを使用したReActエージェント:
このコンポーネントは、ユーザーがOracle Cloudの大規模言語モデル(LLM)に基づいてエージェントと対話するメイン・アプリケーションを実行します。
stdio
プロトコルを使用してMCPサーバーと通信します。主な機能は次のとおりです。
-
フェニックスおよびOpenTelemetryによるテレメトリ構成。
px.launch_app() ... trace.set_tracer_provider(provider)
-
ChatOCIGenAI
を使用してLLMモデルを作成します。llm = ChatOCIGenAI( model_id="cohere.command-r-08-2024", ... )
-
請求書の照合のためのタスク指向プロンプトの定義。
prompt = ChatPromptTemplate.from_messages([ ("system", """You are an agent responsible for resolving inconsistencies in invoices...""), ("placeholder", "{messages}") ])
-
stdio
を使用したローカルMCPサーバーの実行。# 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:
-
メイン・ユーザー顧客対応ループ。
while True: query = input("You: ") ... result = await agent_executor.ainvoke({"messages": memory_state.messages})
-
MCPサーバーによって公開されるツールとの統合。
agent_executor = create_react_agent( model=llm, tools=tools, prompt=prompt, )
-
複数のMCPサーバー。
複数のMCPサーバーを消費する場合は、ここでサーバーのみを含めます。
# 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
プロンプト:
プロンプトは、AIエージェントのプロセスおよび操作ルールを確立するために不可欠です。
-
-
解決ツールを備えたMCPサーバー:
このサーバーは、製品情報および請求書情報を使用してOracle Databaseにアクセスするツールを提供することで、エージェント・コールに応答します。
主な機能は次のとおりです。
-
InvoiceItemResolver
という名前のMCPサーバーの初期化。mcp = FastMCP("InvoiceItemResolver")
-
Oracle Walletを使用したOracle Databaseへの接続。
connection = oracledb.connect( user=USERNAME, password=PASSWORD, dsn=DB_ALIAS, wallet_location=WALLET_PATH, ... )
-
MCPツールの実装。
-
search_vectorized_product
:埋込みのある類似製品を検索します。
@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
:説明の類似性に基づいてEANを解決します。
@mcp.tool() def resolve_ean(description: str) -> dict: result = execute_search_ean(description) ... return {"ean": result[0]["code"], ...}
-
search_invoices_by_criteria
:複数のフィルターに基づいて売掛金請求書を検索します。
@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 ]
-
-
サーバーを
stdio
モードで実行します。if __name__ == "__main__": mcp.run(transport="stdio")
-
-
OCI Generative AIとVector Databaseで類似製品を検索:
このモジュール
product_search.py
は、次のようなテキスト記述から意味的に類似する製品を検索できるPythonクラスを実装しています。- OCI Generative AIからの埋込み。
- Oracle Database 23aiを使用したベクトル索引。
- RapidFuzzをフォールバックとしてあいまいな比較。
タスク6: MCPエージェントでのモデルおよび埋込みの構成
OCI生成AIサービスを使用して、MCPプロトコルに基づいて、会話型エージェントが使用する言語モデルと埋込みを構成します。
-
言語モデル(LLM)を設定します。
言語モデルは、メッセージの解釈、応答の生成、エージェントのメイン・ブレインとしての役割を果たします。
-
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} )
パラメータ 説明 model_id
生成AIモデルID(例: cohere.command-r-08-2024
)service_endpoint
生成AIサービスのリージョン・エンドポイント compartment_id
OCIコンパートメントのOCID auth_profile
ファイル ~/.oci/config
に構成されているプロファイルの名前model_kwargs
温度、top-pおよび応答サイズ -
使用可能なモデルをリストします。
-
OCI CLIの使用:
oci generative-ai model list --compartment-id <seu_compartment_id>
-
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)
-
-
-
セマンティック検索の埋込みを構成します。
類似製品またはコンテキスト情報を検索するには、ベクトル埋込みに依存します。
エージェントでの使用例:
@mcp.tool() def search_vectorized_product(description: str) -> dict: """ Searches for a product by description using embeddings. """ return sercher.search_similar_products(description)
次に示すように、パラメータ(
product_search.py
)を変更します。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" ):
パラメータ 説明 top_k
返された提案数。 minimum_distance
関連する結果を考慮する最大距離。 model_id
OCIの埋込みモデルのID ( cohere.embed-english-light-v3.0
など)。service_endpoint
OCI Generative AIのリージョン・エンドポイント。 compartment_id
コンパートメントOCID。 auth_profile
~/.oci/config
ファイルのプロファイル名。wallet_path
Oracle Database 23aiウォレットへのパス。 db_alias
データベース別名 username
データベース・ユーザー password
データベースのパスワード。 MCPサーバーを構成します。
process_vector_products.py
コードの実行時と同様に、Oracle Database 23aiデータベース用にOracle Walletを構成する必要があります。設定に従ってパラメータを変更します。
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
次に、
process_vector_products.py
を実行して、製品をOracle Database 23aiにベクトル化します。python process_vector_products.py
これにより、LLMモデルおよび埋込みは、LangGraphおよびLangChainでMCPエージェントが使用できるようになります。
タスク7: 製品および請求書摘要検索のテスト
-
次のコマンドを使用して、
main.py
ファイルを実行します。python main.py
-
[ユーザー]プロンプトが表示されたら、次のステートメントを入力します。
{ "customer": "Customer 108", "description": "Harry Poter askaban", "price": 82.26, "location": "SP"}
ノート: Harry PotterおよびAzkabanというブックの名前は間違っていますが、エンジンは問題なく見つけることができます。
サービスが実行されていることに注意してください。
fetch_vectorized_product resolve_ean search_invoices_by_criteria
-
ここで、次の文を入力します。
{ "customer": "Customer 108", "description": "Harry Poter askaban", "price": 82.26}
請求書レコードが見つかりません。これは、場所が請求書の検索の鍵となるためです。
-
ここで、次の文を入力します。
{ "customer": "Customer 108", "description": "Harry Poter", "location": "SP"}
今回は場所を入力しますが、単価は省略します。
さらに、請求書が見つかりました。これは、価格が基本的ではないためですが、より断固として格差を埋めるのに役立ちます。
テストの例を次に示します。
{ "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"}
タスク8: フェニックスによる可観測性の表示
ブラウザにhttp://localhost:6006/
と入力して、フェニックスとの可観測性を表示します。
関連リンク
確認
- 著者 - 星川クリスティアーノ(Oracle LAD Aチーム・ソリューション・エンジニア)
その他の学習リソース
docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Build an AI Agent with Multi-Agent Communication Protocol Server for Invoice Resolution
G35144-05
Copyright ©2025, Oracle and/or its affiliates.