DBMS_CLOUD_AI_AGENT 套件
此套件定義與管理 Select AI 代理、任務、工具及協調。
附註:
從版本 19.29 開始,Oracle Database 19c 以及從版本 23.26 開始在 Oracle Database 26ai 中提供 DBMS_CLOUD_AI_AGENT 套裝程式的支援。DBMS_CLOUD_AI_AGENT 子程式摘要
本節涵蓋 Select AI Agent 的 Autonomous AI Database 隨附的 DBMS_CLOUD_AI_AGENT 子程式。
| 子程式 | 描述 |
|---|---|
|
此程序會建立專員。 |
|
|
提供建立代理程式的屬性。 |
|
|
此程序會啟用代理程式。 |
|
|
此程序會停用代理程式。 |
|
|
此程序會刪除現有的代理程式。 |
|
|
此程序會建立專員與專員團隊可包含的任務。 |
|
|
提供建立代理程式作業的屬性。 |
|
|
此程序會啟用代理程式工作。 |
|
|
此程序會停用代理程式工作。 |
|
|
此程序會刪除現有的代理程式作業。 |
|
|
此程序會建立專員可包含的自訂工具。 |
|
|
提供建立工具的屬性。 |
|
|
此程序會啟用已註冊的工具。 |
|
|
此程序會停用已註冊的工具。 |
|
|
此程序會刪除現有的工具。 |
|
|
此程序會建立專員團隊,並包含專員與任務。 |
|
|
提供建立專員團隊的屬性。 |
|
|
此程序會設定目前階段作業中的專員團隊。 |
|
|
此程序會傳回目前階段作業中設定的專員團隊。 |
|
|
此程序會清除目前階段作業中設定的代理程式團隊。 |
|
|
此程序會建立新的代理程式或執行已暫停的代理程式。 |
|
|
此程序會啟用專員團隊。 |
|
|
此程序會停用專員團隊。 |
|
|
此程序會刪除現有的專員團隊。 |
CREATE_AGENT 程序
使用 DBMS_CLOUD_AI_AGENT.CREATE_AGENT 程序在 Select AI Agent 架構中註冊新的 AI 代理程式。使用 agent_name 定義代理程式的識別、使用屬性參數設定其行為,以及選擇性提供描述。
語法
DBMS_CLOUD_AI_AGENT.CREATE_AGENT(
agent_name IN VARCHAR2,
attributes IN CLOB,
status IN VARCHAR2 DEFAULT NULL,
description IN CLOB DEFAULT NULL
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
AI 代理程式的名稱。代理程式名稱必須遵循 Oracle SQL ID 的命名規則。名稱的長度上限為 125 個字元。 這是必要參數。 |
|
|
AI 代理程式的自訂屬性。請參閱 CREATE_AGENT 屬性瞭解詳細資訊。 |
status |
專員的狀態。 預設值為 |
|
|
AI 代理程式的使用者指定描述。 預設值為 NULL。 |
範例
下列範例會建立專員以處理客戶產品退貨。如需完整的範例,請參閱範例:建立產品退回代理程式。
BEGIN
DBMS_CLOUD_AI_AGENT.CREATE_AGENT(
agent_name => 'CustomerAgent',
attributes => '{
"profile_name": "GOOGLE",
"role": "You are an experienced customer agent who deals with customers return request."
}'
);
END;
/
PL/SQL procedure successfully completed.
CREATE_AGENT 屬性
屬性
| 屬性名稱 | 預設值 | 描述 |
|---|---|---|
|
|
- |
代理程式用來將要求傳送至 LLM 的 AI 設定檔。 這是必要參數。 |
|
|
- |
定義專員的功能,並提供內容給專員。這會傳送至 LLM。 這是必要參數。 |
|
|
|
讓專員向使用者提出問題以取得資訊或說明。 |
BEGIN
DBMS_CLOUD_AI_AGENT.CREATE_AGENT(
agent_name => 'Customer_Return_Agent',
attributes => '{
"profile_name": "GOOGLE",
"role": "You are an experienced customer agent who deals with customers return request.",
"enable_human_tool": "False"
}'
);
END;
/
PL/SQL procedure successfully completedENABLE_AGENT 程序
此程序可讓使用者指定的 AI 代理程式。程序會將 AI 代理程式的狀態變更為 ENABLED。
語法
DBMS_CLOUD_AI_AGENT.ENABLE_AGENT(
agent_name IN VARCHAR2
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
要啟用的 AI 代理程式名稱。 此參數為必要參數。 |
啟用 AI 設定檔的範例
BEGIN
DBMS_CLOUD_AI_AGENT.ENABLE_AGENT(
agent_name => 'Customer_Return_Agent'
);
END;
/
DISABLE_AGENT 程序
此程序會停用目前資料庫中的 AI 代理程式。此程序會將 AI 代理程式的狀態變更為 DISABLED。
語法
DBMS_CLOUD_AI_AGENT.DISABLE_AGENT(
agent_name IN VARCHAR2
);
參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
AI 代理程式的名稱。 此參數為必要參數。 |
範例
BEGIN
DBMS_CLOUD_AI_AGENT.DISABLE_AGENT(
agent_name => 'Customer_Return_Agent'
);
END;
/
DROP_AGENT 程序
此程序會刪除現有的 AI 代理程式。如果客服員不存在,則程序會發出錯誤。
語法
DBMS_CLOUD_AI_AGENT.DROP_AGENT(
agent_name IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
AI 代理程式的名稱。 這是必要參數。 |
|
|
如果是 此參數的預設值為 |
範例
BEGIN
DBMS_CLOUD_AI_AGENT.DROP_AGENT(agent_name => 'Customer_Return_Agent);
END;
/使用注意事項
如果 AI 代理程式不存在,請使用 force 來刪除代理程式並忽略錯誤。
CREATE_TASK 程序
使用 DBMS_CLOUD_AI_AGENT.CREATE_TASK 程序來定義 Select AI 代理程式可包含在其推理程序中的工作。每個工作都有唯一的名稱和一組屬性,可指定代理程式在規劃和執行工作時的行為。
您可以使用 input 屬性定義工作之間的相依性,讓 Select AI 可以將一個工作的輸出傳送到另一個工作。這支援鏈結推理和多步驟工作流程。
語法
DBMS_CLOUD_AI_AGENT.CREATE_TASK(
task_name IN VARCHAR2,
attributes IN CLOB,
status IN VARCHAR2 DEFAULT NULL,
description IN CLOB DEFAULT NULL
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
任務的唯一名稱。 這是必要參數。 |
|
|
包含任務特定屬性的 JSON 物件。請參閱 CREATE_TASK 屬性。 |
status |
任務的狀態。 預設值為 |
|
|
協助識別任務的使用者定義描述。此值會儲存在資料庫中,但不會傳送至 LLM。 預設值為 NULL。 |
範例
下列範例會建立處理客戶產品退貨的任務。
BEGIN
DBMS_CLOUD_AI_AGENT.CREATE_TASK(
task_name => 'Return_And_Price_Match',
attributes => '{"instruction": "Process a product return request from a customer:{query}' ||
'1. Ask customer the reason for return (price match or defective)' ||
'2. If price match:' ||
' a. Request customer to provide a price match link' ||
' b. Use websearch tool to get the price for that price match link' ||
' c. Ask customer if they want a refund.' ||
' d. Send email notification only if customer accept the refund.' ||
'3. If defective:' ||
' a. Process the defective return",
"tools": ["WebSearch", "Email"]}'
);
END;
/
CREATE_TASK 屬性
屬性
| 屬性名稱 | 預設值 | 描述 |
|---|---|---|
|
|
- |
一個清楚而簡明的敘述句,描述工作應該達成的成果。此文字包含在傳送至 LLM 的提示中。您可以包含代表自然語言輸入的
{query} 預留位置。舉例而言:
這是必要參數。 |
|
|
- |
代理程式可用來完成任務的工具名稱 JSON 陣列。例如: 這是必要參數。 |
|
|
- |
識別其輸出應作為此作業輸入的其他作業。Select AI 會自動將這些輸出內容提供給 LLM。 |
|
|
- |
讓專員在任務期間需要資訊或說明時向使用者提出問題。 預設值是 True。 附註: 工作 |
ENABLE_TASK 程序
使用 DBMS_CLOUD_AI_AGENT.ENABLE_TASK 程序啟用先前定義的工作。這會將工作的狀態變更為 ENABLED,讓代理程式在處理期間使用它。
語法
DBMS_CLOUD_AI_AGENT.ENABLE_TASK(
task_name IN VARCHAR2
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
要啟用之任務的名稱。 此參數為必要參數。 |
使用注意事項
任務必須已存在於系統中。此程序會更新任務狀態,使其可在推理工作流程期間用於專員處理。
啟用任務的範例
BEGIN
DBMS_CLOUD_AI_AGENT.ENABLE_TASK(
task_name => 'Return_And_Price_Match'
);
END;
/
DISABLE_TASK 程序
請使用 DBMS_CLOUD_AI_AGENT.DISABLE_TASK 程序停用目前資料庫中的工作。這會將工作的狀態變更為 DISABLED,防止代理程式在處理期間使用它。
語法
DBMS_CLOUD_AI_AGENT.DISABLE_TASK(
task_name IN VARCHAR2
);
參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
要停用之任務的名稱。 此參數為必要參數。 |
使用注意事項
停用工作並不會將其刪除;您可以稍後使用 DBMS_CLOUD_AI_AGENT.ENABLE_TASK 重新啟用該工作。停用之後,任務會變成非作用中,且服務人員在任務選取期間不會再考慮它。
範例
下列範例會停用現有的工作。
BEGIN
DBMS_CLOUD_AI_AGENT.DISABLE_TASK(
task_name => 'Return_And_Price_Match'
);
END;
/
DROP_TASK 程序
使用 DBMS_CLOUD_AI_AGENT.DROP_TASK 程序從資料庫中移除先前定義的工作。如果工作不存在,您可以將 force 參數設為 TRUE 來隱藏錯誤。
語法
DBMS_CLOUD_AI_AGENT.DROP_TASK(
task_name IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
要刪除之任務的名稱。 這是必要參數。 |
|
|
如果是 此參數的預設值為 |
範例
BEGIN
DBMS_CLOUD_AI_AGENT.DROP_TASK(task_name => 'Return_And_Price_Match');
END;
/使用注意事項
如果工作不存在,請使用 force 來刪除工作並忽略錯誤。
CREATE_TOOL 程序
使用 DBMS_CLOUD_AI_AGENT.CREATE_TOOL 程序來註冊代理程式在工作處理期間可以使用的自訂工具。每個工具均由唯一的 tool_name 識別,並包含定義其用途、實作邏輯和中繼資料的屬性。
這些工具可以是自訂的 PL/SQL 程序或函數,也可以是內建的工具類型,例如 RAG、SQL、WEBSEARCH 或 NOTIFICATION。
語法
DBMS_CLOUD_AI_AGENT.CREATE_TOOL(
tool_name IN VARCHAR2,
attributes IN CLOB,
status IN VARCHAR2 DEFAULT NULL,
description IN CLOB DEFAULT NULL
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
識別工具的唯一名稱。 這是必要參數。 |
|
|
JSON 格式的工具屬性。請參閱 CREATE_TOOL 屬性。 這是必要參數。 |
status |
工具的狀態。 預設值為 |
|
|
協助識別工具的使用者定義描述。此值會儲存在資料庫中,但不會傳送至 LLM。 預設值為 NULL。 |
範例
下列範例會建立工具以產生給收件者的電子郵件。
BEGIN
DBMS_CLOUD_AI_AGENT.CREATE_TOOL(
tool_name => 'NOTIFICATION',
attributes => '{"tool_type": "EMAIL"}'
);
END;
/
CREATE_TOOL 屬性
屬性
| 屬性名稱 | 預設值 | 描述 |
|---|---|---|
|
|
- |
一個清楚、簡潔的陳述,描述該工具應完成的任務及其執行方式。此文字包含在傳送至 LLM 的提示中。 這是必要參數。 |
|
|
- |
指定使用工具時要呼叫的 PL/SQL 程序或函數。 這是自訂工具的必要參數。 |
|
|
- |
指定內建工具類型。如果設定,則不需要 可能的值如下:
您可以使用自訂名稱和參數建立內建工具。您也可以使用相同的 |
|
|
- |
指定註冊內建工具的參數。 |
|
|
- |
描述輸入引數。與表格中的資料欄註解類似。舉例而言:
|
內建工具的先決條件
在使用內建工具之前,請先執行下列步驟:
RAG 工具
-
建立參照向量索引的 AI 設定檔。請參閱使用檢索增強生成 (RAG) 增強自然語言提示。
通知工具
支援下列項目:SLACK 和 EMAIL。
SLACK 工具:
- 設定 Slack 應用程式以接收來自 Autonomous Database 的訊息。
-
使用
DBMS_CLOUD_NOTIFICATION建立證明資料,以從 Autonomous Database 傳送 Slack 通知。請參閱從自治式 AI 資料庫傳送 Slack 通知。
電子郵件工具:
附註:
電子郵件工具會從 OCI 傳送電子郵件通知。- 識別您的 SMTP 端點。例如,選取下列其中一個 SMTP 端點:
smtp.us-phoenix-1.oraclecloud.com smtp.us-ashburn-1.oraclecloud.com smtp.email.uk-london-1.oci.oraclecloud.com smtp.email.eu-frankfurt-1.oci.oraclecloud.com - 使用 ACL 授予 SMTP 存取權。請參閱設定 SMTP 連接。
- 產生電子郵件傳遞的 SMTP 證明資料。當您傳送電子郵件時,
UTL_SMTP套裝程式會使用證明資料與電子郵件傳遞伺服器進行認證。請參閱針對使用者產生 SMTP 憑證以瞭解詳細資訊。 - 建立核准的寄件人。針對您作為
From地址 (含UTL_SMTP.MAIL子程式) 的所有電子郵件地址完成此步驟。如需詳細資訊,請參閱管理核准的寄件者。 -
透過新增存取控制項目 (ACE) 來授予使用者的 SMTP 存取權。如需詳細資訊,請參閱在自治式 AI 資料庫上傳送電子郵件。
DBMS_CLOUD_AI_AGENT 套件中的內建工具類型
您可以使用 tool_type 和 tool_params 屬性來註冊內建工具。
| 工具型態 | 描述 | 強制性參數 |
|---|---|---|
|
|
將自然語言轉譯為 SQL 查詢。 |
|
|
|
透過向量搜尋執行檢索增強生成。 |
|
|
|
將訊息傳送至 Slack 通道,或使用 SMTP 傳送電子郵件。可用的選項:
|
|
|
|
從網頁中搜尋資訊。 |
|
ENABLE_TOOL 程序
請使用 DBMS_CLOUD_AI_AGENT.ENABLE_TOOL 程序來啟用先前註冊的工具。這會將工具的狀態變更為 ENABLED,讓代理程式使用該工具的工作。
語法
DBMS_CLOUD_AI_AGENT.ENABLE_TOOL(
tool_name IN VARCHAR2
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
要啟用的工具名稱。 此參數為必要參數。 |
範例
BEGIN
DBMS_CLOUD_AI_AGENT.ENABLE_TOOL(
tool_name => 'SQL'
);
END;
/
DISABLE_TOOL 程序
請使用 DBMS_CLOUD_AI_AGENT.DISABLE_TOOL 程序停用註冊的工具。這會將工具的狀態變更為 DISABLED,讓代理程式無法在工作中使用。
語法
DBMS_CLOUD_AI_AGENT.DISABLE_TOOL(
tool_name IN VARCHAR2
);
參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
要停用的工具名稱。 此參數為必要參數。 |
範例
下列範例會停用現有的工具。
BEGIN
DBMS_CLOUD_AI_AGENT.DISABLE_TOOL(
tool_name => 'SQL'
);
END;
/
DROP_TOOL 程序
使用 DBMS_CLOUD_AI_AGENT.DROP_TOOL 程序移除先前在代理程式註冊的工具。如果工作不存在,您可以將 force 參數設為 TRUE 來隱藏錯誤。
語法
DBMS_CLOUD_AI_AGENT.DROP_TOOL(
tool_name IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
要丟棄的工具名稱 。 這是必要參數。 |
|
|
如果是 此參數的預設值為 |
範例
BEGIN
DBMS_CLOUD_AI_AGENT.DROP_TOOL(tool_name => 'SQL');
END;
/使用注意事項
如果工具不存在,請使用 force 來刪除工具並忽略錯誤。
CREATE_TEAM 程序
使用 DBMS_CLOUD_AI_AGENT.CREATE_TEAM 程序定義一群共同完成任務的 AI 代理程式。您可以指定專員及其相關任務,以及應如何處理任務。
語法
DBMS_CLOUD_AI_AGENT.CREATE_TEAM(
team_name IN VARCHAR2,
attributes IN CLOB,
status IN VARCHAR2 DEFAULT NULL,
description IN CLOB DEFAULT NULL
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
識別 AI 代理團隊的唯一名稱。 這是必要參數。 |
|
|
定義團隊屬性 (例如專員與處理) 的 JSON 格式字串。請參閱 CREATE_TEAM 屬性。 這是必要參數。 |
status |
團隊的狀態。 預設值為 |
|
|
識別團隊目的的使用者定義描述。此值會儲存在資料庫中,但不會傳送至 LLM。 預設值為 NULL。 |
範例
下列範例會建立專員團隊來處理客戶的產品退貨。
BEGIN
DBMS_CLOUD_AI_AGENT.CREATE_TEAM(
team_name => 'ReturnAgency',
attributes => '{"agents": [{"name":"Customer_Return_Agent","task" : "Return_And_Price_Match"}],
"process": "sequential"}');
END;
/
CREATE_TEAM 屬性
team_name,並使用一組屬性來定義其結構和執行策略。
屬性
| 屬性名稱 | 預設值 | 描述 |
|---|---|---|
|
|
- |
指定列出代理程式與其對應作業的 JSON 陣列。可以使用相同名稱將專員指派給多個任務。 這是必要參數。 範例:
|
|
|
- |
指定作業的執行方式。使用 |
SET_TEAM 函數
使用 DBMS_CLOUD_AI_AGENT.SET_TEAM 指定目前階段作業的 AI 代理程式團隊。
設定團隊之後,只有啟用 select ai agent 動作,系統並不支援其他 Select AI 動作。
語法
DBMS_CLOUD_AI_AGENT.SET_TEAM(
team_name IN VARCHAR2,
);
參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
指定要在目前階段作業中使用的 AI 代理程式團隊名稱。團隊必須已存在於系統中。 此參數為必要參數。 |
範例
下列範例會在目前階段作業中設定使用者指定的 AI 代理程式團隊。
EXEC DBMS_CLOUD_AI_AGENT.SET_TEAM('ReturnAgency');
GET_TEAM 函數
使用 DBMS_CLOUD_AI_AGENT.GET_TEAM 傳回目前階段作業的 AI 代理程式團隊。
語法
DBMS_CLOUD_AI_AGENT.GET_TEAM RETURN VARCHAR2;
範例
下列範例會傳回目前階段作業中的 AI 代理程式團隊。
SELECT DBMS_CLOUD_AI_AGENT.GET_TEAM from DUAL;
CLEAR_TEAM 函數
使用 DBMS_CLOUD_AI_AGENT.CLEAR_TEAM 清除目前階段作業中設定的 AI 代理程式團隊。此程序不會刪除群組。
語法
DBMS_CLOUD_AI_AGENT.CLEAR_TEAM;
範例
下列範例會清除目前階段作業中的 AI 代理程式團隊。
BEGIN
DBMS_CLOUD_AI_AGENT.CLEAR_TEAM;
END;
/
RUN_TEAM 函數
使用 DBMS_CLOUD_AI_AGENT.RUN_TEAM 啟動新的 AI 代理團隊,或恢復正在等待人工輸入的暫停團隊。如果您提供現有處理 ID,且相關聯的團隊處理處於 WAITING_FOR_HUMAN 狀態,則功能會使用您提供的輸入作為人類回應來恢復工作流程。
語法
DBMS_CLOUD_AI_AGENT.RUN_TEAM(
team_name IN VARCHAR2,
user_prompt IN CLOB DEFAULT NULL,
params IN CLOB DEFAULT NULL,
);
參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
指定要在目前階段作業中使用的 AI 代理程式團隊名稱。團隊必須已存在於系統中。 此參數為必要參數。 |
|
|
指定提供給工作的使用者查詢或回應。 如果工作處於 如果工作處於 |
|
|
指定在 AI 代理團隊處理期間使用的自訂參數。支援的參數包括:
|
範例
下列範例會在目前階段作業中執行使用者指定的 AI 代理程式團隊。
l_final_answer := DBMS_CLOUD_AI_AGENT.RUN_TEAM(
team_name => 'ReturnAgency',
user_prompt => 'I want to return computer desk chair',
params => '{"conversation_id": "' ||l_conversation_id || '"}'
);
ENABLE_TEAM 程序
使用 DBMS_CLOUD_AI_AGENT.ENABLE_TEAM 程序來啟用使用者指定的 AI 代理團隊。這會將團隊的狀態變更為 ENABLED。
語法
DBMS_CLOUD_AI_AGENT.ENABLE_TEAM(
team_name IN VARCHAR2
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
要啟用的 AI 代理團隊名稱。 此參數為必要參數。 |
範例
下列範例會啟用使用者指定的 AI 代理團隊。
BEGIN
DBMS_CLOUD_AI_AGENT.ENABLE_TEAM(
team_name => 'ReturnAgency'
);
END;
/
DISABLE_TEAM 程序
使用 DBMS_CLOUD_AI_AGENT.DISABLE_TEAM 程序停用現有的 AI 代理團隊。這會將團隊的狀態變更為 DISABLED。
語法
DBMS_CLOUD_AI_AGENT.DISABLE_TEAM(
team_name IN VARCHAR2
);
參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
要停用的 AI 代理團隊名稱。 此參數為必要參數。 |
範例
下列範例會停用現有的 AI 代理團隊。
BEGIN
DBMS_CLOUD_AI_AGENT.DISABLE_TEAM(
team_name => 'ReturnAgency'
);
END;
/
DROP_TEAM 程序
使用 DBMS_CLOUD_AI_AGENT.DROP_TEAM 程序移除先前建立的 AI 代理團隊。
語法
DBMS_CLOUD_AI_AGENT.DROP_TEAM(
team_name IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE
);參數
| Parameter - 參數 | 描述 |
|---|---|
|
|
要退選的團隊名稱。 這是必要參數。 |
|
|
如果是 此參數的預設值為 |
範例
BEGIN
DBMS_CLOUD_AI_AGENT.DROP_TEAM(team_name => 'ReturnAgency');
END;
/使用注意事項
如果小組不存在,請使用 force 來刪除小組並忽略錯誤。
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
取得 Oracle 支援
Oracle 客戶對於 Oracle 支援服務的取得及使用,應以其 Oracle 訂單中針對適用服務所指定的條款與條件為依據。