Workshop · Step 9

프롬프트 도구 활용법

[리뉴얼] Copilot Studio 기본 기능 살펴보기 - AI Prompt 도구로 일관된 HTML 응답 설계

Step 9: 프롬프트 도구 활용법

AI Prompt 도구 추가 및 HTML 응답 설계

AI Prompt 도구(Generative Actions)란?

코드 작성, HTML 형식으로 메일 발송의 경우 기본적으로 Agent가 코드를 생성하여 처리할 수 있지만, 이 경우 작업이 수행될 때 마다 항상 새로운 스타일의 코드가 작성됩니다.

이 경우, 오케스트레이션을 위해 할당된 지침의 컨텍스트에 코드 패턴을 입력하는데 많은 토큰이 소모되고, 생성된 코드의 일관성도 보장하기 어렵습니다.

AI Prompt 도구 는 Copilot Studio에서 사전에 정의한 프롬프트를 에이전트의 도구로 등록하는 기능입니다.

이 도구를 통해 에이전트는 사용자 요청에 따라 이 도구를 호출하여, 고정된 형식의 AI 생성 출력(텍스트·HTML 등)을 얻을 수 있습니다.

항목 설명
등록 위치 에이전트 → 도구 → AI Prompt
입력 프롬프트 템플릿 + 런타임 변수
출력 AI가 생성한 텍스트 (HTML, Markdown, JSON 등 포맷 자유롭게 지정 가능)
활용 예시 제품 비교표 HTML 생성, 보고서 초안 작성, 요약 카드 생성 등



1. AI Prompt 도구 추가

1-1. 도구 추가 시작

에이전트 개요 화면 도구 섹션 → + 도구 추가 를 클릭합니다.
도구 유형 목록에서 프롬프트 를 선택합니다. 1


1-2. 프롬프트 편집기 구성

프롬프트 편집기가 열리면 아래 항목을 입력합니다.

도구 이름:

HTML_Response_Generator

1-3. 입력 변수 정의

프롬프트에서 사용할 입력 변수를 추가합니다. 변수는 / 를 입력하거나 지침 하단 입력 변수 추가 버튼을 클릭하여 생성할 수 있습니다.

변수명 유형 설명
content 텍스트 HTML로 변환할 원본 응답 내용
card_type 텍스트 카드 유형 (info / warning / product / report)

2


1-4. 프롬프트 작성

아래 프롬프트를 입력합니다.

당신은 HTML 카드 생성 전문가입니다. 메일 주제에 따라 적절한 스타일의 Microsoft Teams 적응형 카드 형식으로 HTML을 생성해 주세요.


## 입력 정보
- 카드 유형: 
- 내용: <h2 id="step-8-트리거-추가">Step 8: 트리거 추가</h2>

<h1 id="에이전트에-트리거자동-실행-추가">에이전트에 트리거(자동 실행) 추가</h1>

<h2 id="-트리거trigger란">⏰ 트리거(Trigger)란?</h2>

<p><strong>트리거(Trigger)</strong> 는 사용자의 직접적인 채팅 입력 없이도, <strong>특정 이벤트가 발생했을 때 에이전트(또는 플로우)가 자동으로 실행</strong>되도록 하는 진입점입니다.</p>

<table>
  <thead>
    <tr>
      <th>트리거 유형</th>
      <th>설명</th>
      <th>예시</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>일정/타이머</td>
      <td>정해진 시간/주기에 자동 실행</td>
      <td>매일 오전 9시 업무 브리핑</td>
    </tr>
    <tr>
      <td>이벤트 기반</td>
      <td>메일 수신, SharePoint 항목 추가 등 이벤트 발생 시 실행</td>
      <td>새 메일 수신 시 분류·요약</td>
    </tr>
    <tr>
      <td>폼/워크플로</td>
      <td>폼 제출, 승인 요청 등에서 호출</td>
      <td>휴가 신청 폼 제출</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>트리거는 일반적으로 <strong>Power Automate 흐름의 첫 번째 액션</strong>으로 정의되며, 에이전트의 <strong>Flow 도구</strong>에 연결해 사용됩니다.</p>
</blockquote>

<hr />

<h2 id="실습-시나리오">실습 시나리오</h2>

<p>이전 단계에서 만든 <strong>메일보내기 및 알림 흐름</strong> 을 확장하여,<br />
사용자가 직접 호출하지 않아도 <strong>특정 이벤트(예: 새 메일 수신, 일정 시각 도달)</strong> 가 발생하면 자동으로 메일을 보내고 팀즈 채널에 알림을 게시하는 흐름을 구성합니다.</p>

<blockquote>
  <p>본 단계는 <a href="/Agent_Blog/chapters/ws5-7-tool-flow/">Step 7. 커넥터 연결 중심 플로우</a> 에서 만든 흐름을 기반으로 진행합니다.</p>
</blockquote>

<hr />

<h2 id="1-새-트리거-흐름-생성">1. 새 트리거 흐름 생성</h2>

<p>플로우 디자이너로 이동하여 새로운 흐름을 추가합니다.<br />
<strong>[개요]</strong> → <strong>[+도구 추가]</strong> → <strong>[+새로운 도구]</strong> → <strong>[에이전트 흐름]</strong> 또는 Power Automate 포털에서 새 자동화된 클라우드 흐름을 선택합니다.</p>

<p><img width="1063" height="783" alt="image" src="https://github.com/user-attachments/assets/605cccab-5010-442e-9b80-7d7d8c786b70" /></p>

<p><br /></p>

<hr />

<h2 id="2-트리거-선택">2. 트리거 선택</h2>

<p>플로우의 <strong>첫 번째 액션을 트리거로 변경</strong>합니다.<br />
대표적인 트리거 예시는 다음과 같습니다.</p>

<table>
  <thead>
    <tr>
      <th>트리거</th>
      <th>커넥터</th>
      <th>설명</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>새 메일 도착(V3)</strong></td>
      <td>Office 365 Outlook</td>
      <td>받은 편지함에 새 메일이 들어오면 실행</td>
    </tr>
    <tr>
      <td><strong>반복(Recurrence)</strong></td>
      <td>Schedule</td>
      <td>정해진 주기(일/시/분)로 실행</td>
    </tr>
    <tr>
      <td><strong>항목 만들 때</strong></td>
      <td>SharePoint</td>
      <td>특정 라이브러리에 새 항목 추가 시 실행</td>
    </tr>
    <tr>
      <td><strong>새 메시지 수신 시</strong></td>
      <td>Microsoft Teams</td>
      <td>채널/채팅에 메시지 수신 시 실행</td>
    </tr>
  </tbody>
</table>

<p>이번 실습에서는 <strong>반복(Recurrence)</strong> 트리거를 사용하여 매일 정해진 시각에 흐름이 자동으로 실행되도록 구성합니다.</p>

<table>
  <thead>
    <tr>
      <th>항목</th>
      <th>값</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>빈도(Frequency)</td>
      <td>Day</td>
    </tr>
    <tr>
      <td>간격(Interval)</td>
      <td>1</td>
    </tr>
    <tr>
      <td>시작 시간</td>
      <td>원하는 시각 (예: 09:00)</td>
    </tr>
    <tr>
      <td>시간대</td>
      <td>(UTC+09:00) Seoul</td>
    </tr>
  </tbody>
</table>

<p><br /></p>

<hr />

<h2 id="3-후속-액션-구성">3. 후속 액션 구성</h2>

<p>트리거 다음 액션으로, 이전 단계에서 사용한 <strong>메일 보내기(V2)</strong> 와 <strong>Microsoft Teams - 채팅 또는 채널에서 메세지 게시</strong> 액션을 동일한 방식으로 추가합니다.<br />
입력 변수를 동적으로 채워넣어, 트리거 발생 시 자동으로 메일과 팀즈 메시지가 게시되도록 합니다.</p>

<blockquote>
  <p>변수 매핑·CC·HTML 본문 적용 방식은 <a href="/Agent_Blog/chapters/ws5-7-tool-flow/">Step 7. 커넥터 연결 중심 플로우</a> 에서 다룬 절차와 동일합니다.</p>
</blockquote>

<table>
  <thead>
    <tr>
      <th>파라미터</th>
      <th>값</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>이름</td>
      <td>일일 업무 알림 트리거 흐름</td>
    </tr>
    <tr>
      <td>설명</td>
      <td>매일 정해진 시각에 자동으로 실행되어, 업무 알림 메일과 팀즈 채널 게시물을 등록합니다.</td>
    </tr>
    <tr>
      <td>To</td>
      <td>업무 담당자 메일 주소</td>
    </tr>
    <tr>
      <td>Subject</td>
      <td>[일일 업무 알림]</td>
    </tr>
    <tr>
      <td>Body</td>
      <td>HTML 형식의 일일 업무 요약</td>
    </tr>
    <tr>
      <td>Channel Message</td>
      <td>“오늘의 업무 알림이 도착했습니다.” + Body 일부</td>
    </tr>
  </tbody>
</table>

<p><br /></p>

<hr />

<h2 id="4-게시-및-활성화">4. 게시 및 활성화</h2>

<p>플로우 디자이너 상단의 <strong>게시(Publish)</strong> 또는 <strong>저장(Save)</strong> 버튼을 눌러 흐름을 활성화합니다.<br />
활성화된 시점부터 트리거 조건이 충족될 때마다 흐름이 자동으로 실행됩니다.</p>

<blockquote>
  <p>⚠️ 트리거 흐름은 게시 후 <strong>활성(On)</strong> 상태인지 반드시 확인하세요. 비활성 상태에서는 트리거가 발동하지 않습니다.</p>
</blockquote>

<p><br /></p>

<hr />

<h2 id="5-동작-확인">5. 동작 확인</h2>

<ul>
  <li><strong>반복 트리거</strong>: 다음 실행 예정 시각까지 대기 후, Power Automate <strong>실행 기록(Run history)</strong> 에서 정상 실행 여부를 확인합니다.</li>
  <li><strong>이벤트 트리거(메일/SharePoint 등)</strong>: 테스트용 메일 발송 또는 항목 추가를 통해 트리거가 즉시 발동하는지 확인합니다.</li>
</ul>

<p><img width="1278" height="1169" alt="image" src="https://github.com/user-attachments/assets/fbcf1326-89f0-4f7b-b3d9-bf84977d0f43" />
<br />
<img width="1803" height="526" alt="image" src="https://github.com/user-attachments/assets/a7341ff1-eb08-4bb1-a339-3fbd029d338d" /></p>

<p><br /></p>

<hr />

<blockquote>
  <p><strong>학습 포인트:</strong> 트리거는 <strong>사용자 호출 없이도 에이전트/플로우가 자동으로 동작</strong>하게 하는 진입점입니다.<br />
에이전트의 도구로 등록된 흐름의 첫 번째 액션을 트리거로 변경하면, 동일한 자동화 로직을 <strong>수동 + 자동</strong> 양쪽에서 활용할 수 있습니다.</p>
</blockquote>

<p><br /></p>

<hr />

<table>
  <tbody>
    <tr>
      <td>← <a href="/Agent_Blog/chapters/ws5-7-tool-flow/">이전: Step 7. 커넥터 연결 중심 플로우</a></td>
      <td><a href="/Agent_Blog/chapters/ws5-9-ai-prompt/">다음: Step 9. 프롬프트 도구 활용법</a> →</td>
    </tr>
  </tbody>
</table>


## 카드 유형별 스타일 규칙
- info: 파란색 헤더 (#0078D4), 일반 정보 표시
- warning: 주황색 헤더 (#F7630C), 주의사항 강조
- product: 초록색 헤더 (#107C10), 제품 정보 카드
- report: 회색 헤더 (#605E5C), 업무 보고서 형식

## 출력 규칙
- 반드시 완성된 HTML 코드만 출력합니다. 설명 텍스트는 포함하지 않습니다.
- 최대 너비 600px, 내부 패딩 16px 적용
- 제목은 굵은 흰색 텍스트로 헤더에 표시
- 내용의 목록은 <ul><li> 태그로 변환
- 표 데이터는 <table> 태그로 변환, 줄무늬 스타일 적용
- 모든 인라인 스타일 사용 (외부 CSS 금지)

## 출력 HTML 구조#1 - 업무 현황 보고서 유형 예시

<div style="font-family: 'Segoe UI', Arial, sans-serif; max-width: 700px; margin: 0 auto; padding: 20px; background-color: #f8f9fa; color: #000000;">
  <!-- 헤더 -->
  <div style="background-color: #e3f2fd; padding: 25px; border-radius: 10px; margin-bottom: 20px; border-left: 5px solid #1976d2;">
    <h1 style="color: #1565c0; margin: 0; font-size: 24px;">📊 </h1>
    <p style="color: #424242; margin: 10px 0 0 0; font-size: 14px;">보고일: </p>
  </div>
  <!-- 인사말 -->
  <div style="padding: 15px; margin-bottom: 20px;">
    <p style="color: #212121; font-size: 15px; line-height: 1.6;">안녕하세요,  👋</p>
    <p style="color: #212121; font-size: 15px; line-height: 1.6;"></p>
  </div>
  <!-- 우선순위 요약 -->
  <div style="background-color: #fff9c4; padding: 20px; border-radius: 8px; margin-bottom: 20px; border-left: 5px solid #f57f17;">
    <h2 style="color: #f57f17; font-size: 18px; margin: 0 0 15px 0;">📌 이번 주 우선순위</h2>
    <table style="width: 100%; border-collapse: collapse; color: #212121; font-size: 14px;">
      <thead>
        <tr style="background-color: #fff59d;">
          <th style="padding: 10px; text-align: left; border: 1px solid #f9a825;">순위</th>
          <th style="padding: 10px; text-align: left; border: 1px solid #f9a825;">업무</th>
          <th style="padding: 10px; text-align: center; border: 1px solid #f9a825;">마감</th>
          <th style="padding: 10px; text-align: center; border: 1px solid #f9a825;">상태</th>
        </tr>
      </thead>
      <tbody>
        
        <tr>
          <td style="padding: 10px; border: 1px solid #f9a825;"></td>
          <td style="padding: 10px; border: 1px solid #f9a825;"></td>
          <td style="padding: 10px; text-align: center; border: 1px solid #f9a825;"><strong></strong></td>
          <td style="padding: 10px; text-align: center; border: 1px solid #f9a825;"></td>
        </tr>
        
      </tbody>
    </table>
  </div>
  <!-- 서명 -->
  <div style="padding: 15px; border-top: 2px solid #e0e0e0; margin-top: 20px;">
    <p style="color: #212121; font-size: 14px;">감사합니다. 😊</p>
    <p style="color: #616161; font-size: 13px;"></p>
  </div>
</div>

## 출력 HTML 구조#2 - 데이터 리포트 유형 예시 (info)

<div style="max-width: 800px; margin: 0 auto; padding: 20px; background-color: #f8f9fa; border-radius: 10px;">
  <div style="background-color: #ffffff; padding: 30px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.1);">
    <h1 style="color: #2c3e50; text-align: center;">📊 </h1>
    <p style="color: #7f8c8d; text-align: center; font-size: 14px;">조회 기간:  ~ </p>
    <div style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 25px; border-radius: 8px; margin-bottom: 30px;">
      <h2 style="color: #fff; font-size: 18px;">요약 정보</h2>
      <table style="width: 100%; border-collapse: collapse;">
        <tr><td style="padding: 10px; color: #fff;">총합:</td><td style="padding: 10px; color: #fff; text-align: right;"></td></tr>
        <tr><td style="padding: 10px; color: #fff;">평균:</td><td style="padding: 10px; color: #fff; text-align: right;"></td></tr>
      </table>
    </div>
    <table style="width: 100%; border-collapse: collapse; margin-top: 20px;">
      <thead>
        <tr style="background-color: #3498db;">
          <th style="padding: 12px; color: #fff; border: 1px solid #ddd;">기간</th>
          <th style="padding: 12px; color: #fff; border: 1px solid #ddd;">값</th>
          <th style="padding: 12px; color: #fff; border: 1px solid #ddd;">상태</th>
        </tr>
      </thead>
      <tbody>
        
        <tr>
          <td style="padding: 10px; border: 1px solid #ddd;"></td>
          <td style="padding: 10px; border: 1px solid #ddd; text-align: right;"></td>
          <td style="padding: 10px; border: 1px solid #ddd; text-align: center;"></td>
        </tr>
        
      </tbody>
    </table>
  </div>
</div>


1-5. 저장

프롬프트 작성 완료 스크롤을 내려 저장 버튼을 클릭하고 추가 및 구성 버튼을 눌러 도구 등록을 완료합니다. 3

1-6. 도구 입력 변수 설명 추가

도구 추가가 완료 되었다면, 스크롤을 내려 입력 탭에 각 입력 변수에 대한 설명을 추가합니다. 기본적으로 AI로 동적으로 채우기가 되어있으며, 값 부분에 사용자 지정 을 선택하여 아래 설명으로 업데이트 하고 저장해 줍니다.

변수명 유형 설명
content 텍스트 HTML로 변환할 원본 응답 내용입니다.
card_type 텍스트 카드 유형 입니다. (info / report) info는 데이터 리포트일 경우, report는 일반 업무 브리핑일 경우 사용됩니다.

4


2. 지침 업데이트

에이전트 지침의 #메일 작성 규칙 섹션을 아래와 같이 수정합니다.

#메일 작성 규칙
HTML 결과물 생성을 위해 /HTML_Response_Generator 를 호출하여 반환된 HTML 코드를 기반으로 메일 발송을 합니다.
도구에 들어가야할 내용은 다음과 같습니다.
- content : 데이터 조회를 통해 받은 원본 값 입니다
- card_type: content의 내용에 따라 report | info 둘 중 하나를 입력 합니다.  
-- 업무 브리핑 → card_type: "report"
-- 일반 안내 → card_type: "info"

지침에서 / 를 입력하면 도구 호출을 위한 프롬프트 템플릿이 자동으로 삽입됩니다. 5 6



3. 동작 확인

테스트 패널에서 아래 질문을 입력합니다.

데이터 리포트 HTML 카드 테스트:

이번 주 주요 이슈를 정리해서 "메일 주소"로 보내줘

→ 에이전트가 데이터 조회 후 → HTML_Response_Generator를 호출하여 HTML 카드 형식으로 메일을 발송합니다.

7 8

업무 브리핑 HTML 카드 테스트:

오늘 업무 현황을 정리해서 나에게 보내줘

→ Work IQ 등 데이터 조회 후 → report 유형 HTML 카드로 메일을 발송해야 합니다. 9


💡 팁: 에이전트 테스트 화면에서는 HTML이 렌더링되지 않고 코드로 보일 수 있습니다.
실제 메일을 수신하였을 때에는 HTML이 정상 렌더링되어 카드 형태로 표시됩니다.



이전: Step 8. 트리거 추가 다음: Step 10. Excel 기반 데이터 활용법