본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 05. 22. 17:26

Oracle ADB Select AI Agent 입문 ② ~Custom Agent Tool을 이용한 메일 전송~

요약

Oracle Autonomous AI Database(ADB)의 Select AI Agent를 활용하여 커스텀 메일 전송 도구를 구축하는 방법을 설명합니다. 내장 도구의 한계를 넘어 PL/SQL 프로시저를 통해 수신처를 동적으로 변경할 수 있는 맞춤형 Agent Tool 제작 과정을 다룹니다.

핵심 포인트

  • Select AI Agent를 통한 단일 인프라 내 데이터 및 AI 통합
  • PL/SQL 프로시저를 활용한 커스텀 Agent Tool 제작 방법
  • 동적 수신처 변경이 가능한 메일 전송 기능 구현
  • DBMS_CLOUD_AI_AGENT 패키지를 이용한 도구 등록

Oracle Autonomous AI Database(ADB)에는 데이터베이스 내부에서 AI Agent를 구축 및 실행할 수 있는 「Select AI Agent」라는 기능이 있습니다.

이 기능의 큰 장점은 AI 전용 인프라를 별도로 준비할 필요 없이 데이터와 AI Agent를 단일 인프라에서 이용할 수 있다는 점입니다. 이를 통해 데이터 이동을 최소화하고, DB의 보안 및 거버넌스를 유지하면서 기업 데이터를 활용할 수 있어 생성형 AI (Generative AI)를 업무 시스템에 안전하게 통합하기 쉬워집니다.

이전에는 이 기능을 사용하여 DB 상의 데이터를 참조한 결과를 메일로 전송하는 Agent를 작성했습니다.

당시에는 「내장된 메일 전송 도구」를 사용하여 메일 전송을 실시했습니다. 하지만 내장된 도구는 도구 내에 수신 메일 주소를 임베딩(Embedding)해야 했기에, 수신처의 커스터마이징(Customizing) 측면에서 다소 아쉬움이 있었습니다.

그래서 이번에는 이 Select AI Agent의 도구를 직접 제작하여, 동적으로 수신처를 변경할 수 있는 도구로서 Agent가 이용할 수 있도록 해보겠습니다.

  • 메일 전송 Agent의 작성 및 실행

  • 내장 도구로도 메일은 보낼 수 있지만, 보다 커스터마이징 기능이 높은 Agent Tool로 만들기 위해 이를 대체할 Tool을 작성하고, 이 도구를 사용하여 메일을 보내는 Agent를 작성하여 메일 전송을 실행합니다.

Autonomous AI Database의 인스턴스 구축이 완료되어 있어야 합니다.

ADB 구축은 이 절차를 참조하여 실시해 주세요. -
Select AI를 이용하기 위한 준비가 완료되어 있어야 합니다.

이 기사의 Step 2 「ADB로의 API 키 등록」까지 실시해 주세요. -
SMTP 설정

메일 전송에는 SMTP 설정이 필요합니다. 이 기사의 「ADB로부터의 메일 전송 설정」 항목을 참고하여 구성해 주세요.

또한 EMAIL 전송을 위한 SMTP 자격 증명 (Credential)도 필요하므로 미리 작성해 둡시다.

BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'EMAIL_CRED',
...

곧바로 메일 전송 도구를 작성해 보겠습니다. 작성이라고는 해도 공식적으로 제공되는 PL/SQL 프로시저 (Procedure)의 기능을 확장하는 것뿐입니다.

send_email_notification

이라는 프로시저를 만듭니다.

이 프로시저 안에서 Oracle이 제공하는 이 프로시저를 사용하여 메일 수신자와 제목, 내용이 동적으로 변경되도록 커스터마이징합니다.

CREATE OR REPLACE PROCEDURE send_email_notification (
-- 수신 메일 주소
p_recipient IN VARCHAR2,
...

프로시저가 완성되면 테스트해 봅시다.

작성한 send_email_notification 프로시저를 실행합니다.

BEGIN
send_email_notification(
p_recipient => '수신할 메일 주소',
...

image.png

제 Gmail로 메일이 제대로 도착했습니다.

프로시저 자체는 작성이 완료되었습니다.

그럼 이 PL/SQL 프로시저를 Agent Tool로 만들겠습니다.

Agent Tool은 DBMS_CLOUD_AI_AGENT 패키지의 CREATE_TOOL 프로시저로 작성할 수 있습니다. (참고)

-- 기존 것이 있는 경우 삭제
BEGIN
DBMS_CLOUD_AI_AGENT.DROP_TASK(
...
-- 작성
BEGIN
DBMS_CLOUD_AI_AGENT.CREATE_TOOL(
...

일단 작성된 도구를 확인해 봅시다.

SQL>SELECT
tool_id,
tool_name,
...

이것으로 Agent가 사용할 도구의 작성이 완료되었습니다.

여기까지 되었다면, 나머지는 내장 도구로 Agent를 작성할 때와 동일합니다.

Agent 작성 단계는 다음과 같습니다.

Step내용
1. Agent Tool 작성Agent에 사용하게 할 도구를 정의합니다. 내장된 SQL 도구를 사용합니다.
...도구는 방금 만들었으므로 Task를 생성하고, 이 DYNAMIC_MAIL_TOOL을 호출하는 Agent를 작성합니다.

우선은 메일 전송만을 테스트하는 최소 구성으로 시작해 보겠습니다.

Task(태스크)를 생성하기 위해서는 앞서와 마찬가지로 DBMS_CLOUD_AI_AGENT 패키지의 CREATE_TASK 프로시저 (Procedure)를 이용합니다.

-- 기존 것이 있는 경우 삭제
BEGIN
DBMS_CLOUD_AI_AGENT.DROP_TOOL(
...
-- 생성
BEGIN
DBMS_CLOUD_AI_AGENT.CREATE_TASK(
...

생성한 후 확인합니다.

SELECT
task_id,
task_name,
...

Agent(에이전트)를 생성합니다.

Agent는 LLM을 사용하므로 프로파일 (Profile)이 필요합니다.

먼저 프로파일을 만듭니다.

BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'DYNAMIC_MAIL_AGENT_PROFILE',
...

다음으로 Agent를 생성합니다. LLM이 올바르게 동작하도록 role(역할)을 확실하게 기재합시다.

BEGIN
DBMS_CLOUD_AI_AGENT.CREATE_AGENT(
agent_name => 'DYNAMIC_MAIL_AGENT',
...

완료되면 확인합니다.

SELECT
agent_id,
agent_name,
...

마지막으로 Agent Team(에이전트 팀)을 생성합니다.

지금까지 생성한 AgentTask를 지정합니다.

BEGIN
DBMS_CLOUD_AI_AGENT.CREATE_TEAM(
team_name => 'DYNAMIC_MAIL_TEAM',
...

완료되면 확인해 봅시다.

SELECT
team_id,
status,
...

우선 생성한 Agent Team을 활성화합니다.

EXEC DBMS_CLOUD_AI_AGENT.SET_TEAM('DYNAMIC_MAIL_TEAM');

그럼 Agent를 통해 메일을 보내보겠습니다.

SQL> SELECT AI AGENT
'xxx@gmail.com 宛に、件名「テスト」、本文「お疲れ様でした」でメールを送信してください。';
RESPONSE
...

image.png

제 이메일 주소로 메일이 제대로 도착했습니다.

'수고하셨습니다'라고만 하기에는 조금 마음이 울리지 않네요. 조금 더 격려받고 싶습니다.

SQL> SELECT AI AGENT
'xxx@gmail.com 宛に、件名「テスト」、本文は私の環境構築への労いの言葉を考えて
メールを送信してください。';
...

이번에는 메일 전송용 Agent Tool을 직접 제작하여, 그것을 사용해 In-Database Agent를 통한 메일 전송을 시도해 보았습니다.

이 방식이라면 수신처를 고정하지 않고 프롬프트 (Prompt)로 지정하거나, DB에서 취득한 정보를 바탕으로 메일을 보내는 등의 작업이 가능합니다.

다음 회차에는 DB 검색용 Agent와 이번 메일 전송 Agent를 조합하여,

  • DB에서 이메일 주소를 취득
  • DB 정보를 바탕으로 메일 본문을 작성
  • 메일을 전송

하는 기능을 구현해 보고자 합니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0