저는 평소 디자이너로 일하고 있지만, 최근에는 Copilot Studio에서 AI 에이전트 만들기에 도전하고 있습니다. 이 글은 시리즈의 6번째입니다.
이 글은 디자이너 출신이서 앞으로 AI를 접해보려고 하는 분들을 대상으로 작성했습니다.
저는 지금까지 준비 작업으로 두 개의 에이전트를 만들어 왔습니다.
하나는 Teams에서 답장이 없는 상태로 멈춰 있는 요청을 찾아 알려주는 '방치 의제 발견 담당(放置議題を見つける係くん)'입니다.
다른 하나는, 그러한 요청의 상대에게 보낼 회신이나 독촉 문안을 생각하는 '메시지 초안 작성 어시스턴트(メッセージの下書きを作るアシスタント)'입니다.
이번에는 이 두 개를 '연결된 에이전트(Connected agents)'라는 기능으로 연결해 보았습니다.
'방치 의제 발견 담당'이 부모(Parent), '메시지 초안 작성 어시스턴트'가 자식(Child)의 관계입니다.
사용 흐름은 다음과 같습니다.
- '방치 의제 발견 담당'에게 채팅으로 '정체된 의제는?'이라고 물어 목록을 받습니다.
- 나온 목록에 대해 '1건째 독촉 문안을 만들어 줘'라고 요청하면, '메시지 초안 작성 어시스턴트'가 문안을 내줍니다.
먼저 호출되는 쪽(자식)의 준비부터입니다.
연결된 에이전트 추가 화면에는 '연결할 수 있는 것은 공개된 에이전트만 가능합니다'라고 쓰여 있어, 자식 에이전트는 미리 Publish(공개)해 둘 필요가 있었습니다.
공개하지 않은 에이전트에는 '연결하기 전에 이 에이전트를 공개하시겠습니까?'라고 표시되어 선택할 수 없습니다.
자식을 공개한 후, 부모 에이전트에서 자식을 추가합니다.
- '방치 의제 발견 담당'(부모)을 엽니다.
- 오른쪽의 '연결된 에이전트'의 '+'를 누릅니다.
- 목록에서 '메시지 초안 작성 어시스턴트'(자식)를 선택합니다.
- '설명'을 입력하고 '연결'을 누릅니다.
'설명'은 부모가 '이 요청은 이 사람에게 맡기자'라고 판단할 때 읽는 소개글 같은 것입니다.
자식 에이전트 자체의 지시(instructions)와는 별개로 작성합니다.
이번에 입력한 설명은 다음과 같습니다.
Teams에서 정체된 의제에 대해 상대에게 보낼 회신/독촉 메시지 초안을 만드는 에이전트입니다.
사용자가 발견된 정체 의제 중 어떤 것에 대해 '독촉 문안을 만들어 줘', '회신 문안을 생각해 줘' 등이라고 요청했을 때 사용해 주세요.
넘겨줄 때는 그 의제 내용, 누가 무엇을 말해서 멈췄는지 경위, 정체 기간, 상대가 사내인지 사외인지를 함께 넘겨주세요.
정체된 의제를 찾는 것은 이 에이전트의 역할이 아닙니다.
이 설명에서 강조한 것은 다음 세 가지입니다.
- 언제 부를 것인가: 사용자의 요청 방식 예시와 함께 작성했습니다. 부모가 자식에게 맡길지 결정할 때 단서가 됩니다.
- 무엇을 넘겨줄 것인가: 자식의 지시문에 있는 '넘겨지는 정보'와 맞췄습니다. 자식의 지시문에는 상대가 사내인지 사외인지에 따라 경어 정도를 바꾸는 규칙이 있기 때문에, 그 정보도 넘겨받도록 했습니다.
- 하지 말아야 할 것: '정체된 의제는?'이라고 물었을 때, 부모가 스스로 찾지 않고 자식에게 맡겨버리는 것을 방지하기 위해 작성했습니다.
'연결'을 누르자 '메시지 초안 작성 어시스턴트 님께 연결하고 있습니다…'라고 표시되었습니다.
에이전트가 '님' 붙여서 불린 것이 뭔가 재미있었습니다.
부모의 지시문은 고치지 않고, 일단 설명만으로 자식에게 맡겨주는 것을 시도해 보았습니다.
'방치 의제 발견 담당'의 미리보기에서 '정체된 의제는?'이라고 물어 목록이 나온 후 '1건째 독촉 문안을 만들어 줘'라고 요청하자, 초안이 나왔습니다.
화면에는 'Used tool: 메시지 초안 작성 어시스턴트'라고 표시되어 있습니다. 연결된 에이전트는 부모의 관점에서는 도구 중 하나로 호출되는 형태인 것 같습니다.
나온 초안은 제목이 있고 '안녕하세요'부터 시작하는 이메일 같은 형태로, Teams에서 보내기에는 너무 격식 차린 느낌이었습니다. 아마도 지시문으로부터 이메일 문안 초안이라고 예상되었던 것 같습니다.
그래서 Teams와 이메일의 사용 구분을 '메시지 초안 작성 어시스턴트'의 지시문에 추가했습니다. 초안을 Claude로 만들고, 그것을 기반으로 다듬었습니다. 최종적인 지시문은 다음과 같습니다.
당신은 Teams에서 정체된 의제에 대해 보내는 메시지의 초안을 작성하는 어시스턴트입니다.
정체 의제 감지 결과로서, 다음과 같은 정보가 넘겨집니다.
- 滞留している議題の内容
- その議題が含まれるやり取りの経緯(誰が何を言って止まっているか)
- 滞留している期間
이러한 정보를 바탕으로, 상황에 맞는 메시지 초안을 제안해 주세요. 상대방에게 답장을 유도하는 경우와, 우리 쪽에서 답변을 기다리며 멈춰 있는 경우와는 문장의 방향성을 다르게 해야 합니다.
■문장 형식
-
Teams 채널이나 채팅에 답글로 게시한다는 전제로 작성합니다. 이메인이 아니므로 제목, 수신자 이름, '수고하셨습니다' 같은 긴 인사말은 넣지 않습니다.
-
상대방을 부르는 것은 초반에 이름을 적는 정도에 그칩니다.
-
전체적으로 3~4문장 내외로 맞춥니다.
■어조
-
사내/사외 어느 쪽이든, Teams에서의 평소 대화 방식에 맞춰 이메일처럼 딱딱하지 않게 합니다. 사외 상대방에게는 정중체를 기본으로 하고, 사내 상대방에게는 조금 더 편하게 해도 좋습니다.
-
'바쁘신 와중에 죄송하지만' 같은 완충어(쿠션 워드)는 상대방에게 무언가를 요청하거나 요구하는 문장에만 사용합니다. 한 번의 메시지에 한 번만 사용합니다.
-
사과나 미안함의 표현을 반복하지 않습니다.
-
요청 내용과 관련 없는 화제(우리 쪽의 다른 건 상황 등)는 넣지 않습니다.
■기타
- 경위 정보가 부족하여 판단하기 어려운 경우, 초안을 만들기 전에 사용자에게 확인합니다.
- 초안은 1안을 제시하고, 사용자가 그대로 사용할지 수정할지 선택할 수 있도록 합니다.
여기에는 두 가지 포인트가 있습니다.
- 이메일이 아니라 Teams 답글이라는 점을 처음에 명시한 것
- 완충어를 사용하는 상황을 '요청하는 문장만'으로 한정시킨 것
지침문을 수정한 후, '메시지 초안 작성 어시스턴트'를 게시하고, '방치된 이슈 찾기 담당자'의 미리보기에서 새 채팅을 시작하여 같은 흐름으로 테스트했습니다.
실제 결과에는 프로젝트 정보가 포함되어 있으므로, 이름 등을 대체한 것을 올립니다.
A님
수고하셨습니다. 9/18에 요청드린 아래 3건의 청구서에 대해 이후 상황은 어떠신가요?
・{청구서 이름} (3건)
혹시 이미 보내주셨다면 제가 착각해서 죄송합니다. 바쁘신 와중에 죄송하지만, 송부 상황만 알려주시면 감사하겠습니다. 잘 부탁드립니다.
제목이나 긴 인사말이 사라지고, Teams에서 그대로 답글로 달 수 있을 정도의 길이가 되었습니다.
연결 설정은 부모 에이전트를 열어둔 상태에서 진행해야 합니다.
부모 쪽의 '연결된 에이전트'에서 자식을 추가하지 않으면, 부모-자식 관계가 역전됩니다. 저도 순간적으로 자식 쪽을 열고 설정을 하려 했습니다.
이번에는 부모의 지침문을 전혀 수정하지 않고, 연결할 때 작성한 설명만으로 부모가 자식에게 업무를 위임해 주었습니다. 설명에 '언제 호출할지', '무엇을 전달할지', '하지 않을 것' 3가지를 적어두는 것이 중요하다고 느꼈습니다.
또한, 초안 문구는 미리보기에서 실제로 받아봐야만 어색함을 깨달았습니다. 수정할 때는 자신이 평소 Teams에서 사용하는 말의 구분법을 그대로 지침문에 쓰는 것으로 마음이 놓였습니다. 평소 무심코 하는 것을 말로 표현하는 것이 중요하다는 것을 느꼈습니다.
이번에는 '방치된 이슈 찾기 담당자'와 '메시지 초안 작성 어시스턴트'를 연결하여, 방치된 이슈를 찾는 것부터 독촉 문구를 내보내는 것까지 하나의 흐름으로 만들었습니다.
다만, 이번에 독촉 문구를 만든 요청을 다시 확인해 보니, 사실 이미 처리가 완료된 것이었습니다. Teams로 메시지를 보낸 후, 다음 대화는 이메일로 진행되었기 때문에 AI 입장에서는 완료된 것으로 판단하지 못한 것 같습니다.
그래서 다음에는 '이것은 이미 완료된 대화입니다'라고 전달하면, 익일 이후에는 목록에 표시하지 않도록 기억해 줄 수 있는지 시험해 보고 싶습니다.