---
title: 에이전트 플로우와 에이전트 결합하기: 함정, 오류, 그리고 패턴
description: Copilot Studio에서 에이전트와 에이전트 플로우를 결합할 때 자주 걸리는 표시 오류, 타임아웃, 스키마 불일치, 자격 증명, 공유 문제를 해결 패턴과 함께 정리했어요.
date: 2026-09-07
  tags: [Copilot Studio, 에이전트 플로우, 100초 타임아웃, 스키마 불일치, 자격 증명]
cards:
  - /cards/agent-flows-and-agents/card-01.png
  - /cards/agent-flows-and-agents/card-02.png
  - /cards/agent-flows-and-agents/card-03.png
  - /cards/agent-flows-and-agents/card-04.png
  - /cards/agent-flows-and-agents/card-05.png
  - /cards/agent-flows-and-agents/card-06.png
  - /cards/agent-flows-and-agents/card-07.png
  - /cards/agent-flows-and-agents/card-08.png
author: Lissa
source: https://interlinear.work/notes/agent-flows-and-agents/
---

> **원문:** [Combining Agent Flows with Agents: Gotchas, Errors, and Patterns](https://microsoft.github.io/mcscatblog/posts/combining-agent-flows-and-agents-gotchas-errors-and-patterns/)
> **게시일:** 2026-04-17 · **저자:** Petros Feleskouras

에이전트 플로우와 에이전트는 Copilot Studio에서 강력한 조합이에요. 대화형 프런트 엔드를 유지하면서 여러 단계로 이뤄진 비즈니스 프로세스를 자동화해야 하나요? 에이전트 플로우가 자동화의 근력을 맡고, 에이전트가 자연어 인터페이스를 담당해요. 이론적으로는 둘이 완벽하게 서로를 보완하죠.

하지만 실제로는 몇 가지 벽에 부딪히게 될 거예요. 그중 일부는 전혀 예상하지 못한 것들이고요.

이 가이드는 Copilot Studio에서 에이전트와 에이전트 플로우를 결합한 솔루션을 배포할 때 팀이 흔히 겪는 문제들을 다뤄요. 어떤 건 처음 마주치면 몇 시간 동안 머리를 긁적이게 만드는 함정이고, 어떤 건 잘못된 기반 위에 너무 많이 쌓아 올리기 전에 제대로 결정해야 할 아키텍처 선택이에요.

다루는 내용은 다음과 같아요. 필요한 섹션으로 바로 이동하세요.

| # | 주제 | 요약 답변 |
|---|-------|-------------|
| [1](#1-에이전트-플로우가-왜-표시되지-않을까요) | 에이전트에 에이전트 플로우가 표시되지 않음 | 트리거/작업 누락, 비동기 토글, 또는 솔루션에 없음 |
| [2](#2-100초의-벽-그리고-넘어서는-방법) | 100초 타임아웃(`FlowActionTimedOut`) | 비동기 연속 패턴 — 먼저 응답하고, 긴 로직은 백그라운드에서 실행 |
| [3](#3-스키마-동기화-유지하기-flowactionbadrequest) | 스키마 불일치(`FlowActionBadRequest`) | 에이전트 플로우 노드를 새로 고침하고, 지원되지 않는 매개 변수 형식 확인 |
| [4](#4-메이커-자격-증명으로-에이전트-플로우-작업-실행하기) | 에이전트 플로우 작업이 메이커 자격 증명을 사용하지 않음 | 도구 설정만이 아니라 개별 연결 참조를 업데이트 |
| [5](#5-에이전트와-에이전트-플로우에서-협업하기) | 다른 메이커와 에이전트 플로우 공유 | Power Automate에서 직접 공동 소유자 추가 |
| [6](#6-에이전트-플로우에서-이미지를-꺼내-채팅-창에-표시하기) | 에이전트 플로우의 이미지를 채팅에 표시 | 작은 이미지는 Base64 인라인, 큰 이미지는 클라우드 스토리지 + 링크 |
| [7](#7-에이전트-플로우-안에서-에이전트-호출하기) | 에이전트 플로우 내부에서 에이전트 호출 | 에이전트 플로우의 "에이전트 추가(Add an agent)" 단계 사용 |

---

## #1 에이전트 플로우가 왜 표시되지 않을까요?

다른 걸 트러블슈팅하기 전에, 먼저 에이전트 플로우가 에이전트의 도구로 실제로 표시되는지 확인하세요. 표시되지 않으면 다른 어떤 것도 할 수 없으니까요. 표시되지 않는 주요 원인은 다음과 같아요.

**올바른 트리거나 작업이 없는 경우.** 에이전트 플로우가 에이전트 도구로 표시되려면 두 가지가 필요해요. 시작 부분의 **"When an agent calls the flow"** 트리거와 끝부분의 **"Respond to the agent"** 작업이에요. 둘 중 하나라도 빠지면 에이전트 플로우는 에이전트 도구 선택기에 나타나지 않아요.

**비동기 응답 토글이 켜져 있는 경우.** "Respond to the agent" 작업 설정 아래에 **비동기 응답(Asynchronous response)** 토글이 있어요. 이 토글은 반드시 **끔(Off)** 으로 설정돼야 해요. 켜져 있으면 에이전트 플로우는 에이전트가 동기적으로 호출할 수 있는 도구로 나타나지 않아요.

**플로우가 솔루션 밖에 있는 경우.** Power Automate에서 직접 만들었지만 솔루션 안에 두지 않은 플로우는 에이전트에서 호출할 때 표시되지 않는 경우가 자주 있어요. Copilot Studio에서 쓰기 전에 항상 에이전트 플로우를 솔루션 안에 만들거나 솔루션으로 옮기세요.

**에이전트 플로우가 Copilot Studio 플랜으로 실행되지 않는 경우.** 에이전트 플로우가 Copilot Studio 플랜에서 실행되도록 설정돼 있는지 확인하세요. 그렇지 않으면 에이전트 도구로 표시되지 않아요.

---

## #2 100초의 벽 (그리고 넘어서는 방법)

팀이 가장 크게 허를 찔리는 부분이에요. Copilot Studio에서 에이전트가 트리거하는 에이전트 플로우에는 **100초라는 엄격한 동기 응답 제한**이 있어요. 에이전트 플로우가 이 시간 안에 에이전트에 응답을 반환하지 않으면 `FlowActionTimedOut` 오류가 발생해요.

> **참고:** Copilot Studio 오류 코드의 전체 목록은 [공식 오류 코드 참조 문서](https://learn.microsoft.com/troubleshoot/power-platform/copilot-studio/authoring/error-codes)를 확인하세요.

대부분의 에이전트 플로우에는 이 정도면 충분해요. 몇 번의 API 호출, 약간의 데이터 변환, 빠른 응답 정도라면 문제없어요. 하지만 에이전트 플로우의 가장 강력한 기능 두 가지는 본질적으로 100초 제한과 양립할 수 없어요.

- **다단계 및 AI 승인** — 관리자가 2분 만에 승인할 수도 있고 2일이 걸릴 수도 있어요.
- **휴먼 인 더 루프 정보 요청** — 마찬가지예요. 사람이 읽고, 생각하고, 응답하기에 100초는 거의 충분하지 않아요.

이 두 기능 모두 에이전트 플로우를 일시 중지하고 사람의 입력을 기다린 후에 계속 진행해요. 바로 그 점이 이 기능들을 유용하게 만드는 동시에, 채팅 창에서 동기적으로 트리거되면 항상 100초를 초과하는 이유이기도 해요.

즉, 현재로서는 동기적인 대화형 경험을 통해 "Run a multistage approval"이나 "Request for information"을 호출할 방법이 없어요. 이 기능들은 자율(autonomous) 시나리오에서만 쓸 수 있어요. 단, 아래에서 설명하는 비동기 패턴으로 에이전트 플로우를 재구성한다면 이야기가 달라져요.

### 비동기 연속(async continuation) 패턴

한번 이해하고 나면 우아하게 느껴지는 해법이에요. 에이전트 플로우를 두 단계 — 빠른 동기 부분과 느린 비동기 부분 — 로 나누고, 첫 번째 단계가 끝나는 즉시 에이전트를 해방시키는 방식이에요.

1. 에이전트가 도구 호출로 에이전트 플로우를 트리거해요.
2. 에이전트 플로우는 빠르고 짧게 실행되는 로직을 처리하고 100초 안에 에이전트에 응답해요.
3. 이제 에이전트와 에이전트 플로우는 **독립적으로** 계속 진행해요. 에이전트는 빠른 응답을 처리하고 대화를 이어가요. 에이전트 플로우는 승인, 휴먼 인 더 루프 단계 등 오래 걸리는 부분으로 넘어가요.
4. 장기 실행 작업이 완료되면 에이전트 플로우가 결과를 페이로드로 전달하며 비동기적으로 에이전트를 다시 호출해요.
5. 에이전트가 에이전트 플로우에 의해 트리거되어 결과를 받고, 거기서부터 실행을 이어가요.

에이전트 플로우의 모습은 다음과 같아요.

_"Respond to the agent" 이전의 빠른 동기 단계와 오래 실행되는 비동기 단계로 나뉜 에이전트 플로우, 마지막은 "Execute Agent" 콜백으로 마무리_

핵심 요소는 다음과 같아요.

- **"Respond to the agent" 작업에서 분리하세요.**<br>
  짧게 실행되는 로직은 그 앞에(100초 안에 완료되어야 함), 오래 실행되는 로직은 그 뒤에 두세요. 에이전트 플로우가 응답하는 순간 에이전트는 차단이 풀리고 양쪽 모두 각자 진행해요.
- **"Execute Agent" 작업을 사용하세요**(Microsoft Copilot Studio 커넥터 제공).<br>
  장기 실행 결과와 함께 에이전트를 비동기적으로 트리거해요. 이는 원래 에이전트 세션의 연속이 아니라 새로운 독립 호출이에요.
- **Conversation ID를 전달하세요.**<br>
  에이전트가 처음 에이전트 플로우를 호출할 때 `System.Conversation.Id`를 입력으로 전달하세요. 나중에 에이전트 플로우가 "Execute Agent"를 호출할 때 같은 Conversation ID를 쓰면 새 에이전트 세션을 원래 세션과 연관 지을 수 있어요. 추적과 일관된 사용자 경험을 위해 꼭 필요해요.
- **에이전트 지침을 업데이트하세요.**<br>
  최초의 에이전트 플로우 호출과 이후 결과를 담은 비동기 콜백을 모두 처리할 수 있어야 해요.

> **경비 승인 예시:** 사용자가 채팅으로 청구를 시작해요. 에이전트가 에이전트 플로우를 호출하고, 플로우는 즉시 요청을 접수했음을 확인하며 100초 안에 응답해요. 에이전트는 사용자에게 요청이 제출됐다고 알리고 다음으로 넘어가요. 그동안 에이전트 플로우는 관리자에게 승인 요청을 보내는데, 이는 며칠 뒤에 처리될 수도 있어요. 관리자가 승인하면 에이전트 플로우가 결과와 함께 에이전트를 비동기적으로 다시 트리거하고, 에이전트는 사용자에게 소식을 전하기 위해 다시 실행돼요.

> **팁:** Express 모드를 사용하면 에이전트 플로우의 동기 부분을 빠르게 만들 수 있어요. 자세한 내용은 [Express 모드 문서](https://learn.microsoft.com/microsoft-copilot-studio/agent-flow-express-mode)를 참고하세요.

### 선택지 요약

100초 타임아웃 문제를 겪고 있다면 세 가지 길이 있어요.

1. **플로우를 최적화**해서 제한 시간 안에 끝내기 — 느리긴 하지만 본질적으로 장기 실행이 아닌 플로우에 적합해요.
2. 위에서 설명한 **비동기 연속 패턴 사용하기** — 승인 및 휴먼 인 더 루프 시나리오에 맞는 올바른 접근이에요.
3. **플로우를 단순화하고 무거운 처리를 동기 작업 호출 밖으로 옮기기** — 때로는 재설계가 가장 깔끔한 해답이에요.

---

## #3 스키마 동기화 유지하기 (FlowActionBadRequest)

`FlowActionBadRequest`는 에이전트가 트리거하는 에이전트 플로우를 다룰 때 가장 흔히 만나는 런타임 오류예요. 거의 대부분 **스키마 불일치**를 뜻해요. 에이전트가 기대하는 입력 또는 출력 매개 변수가 에이전트 플로우가 실제로 제공하는 것과 일치하지 않는다는 거예요.

가장 흔한 발생 원인은 다음과 같아요.

- 에이전트에 이미 추가한 뒤에 에이전트 플로우의 입력 또는 출력 매개 변수를 수정했는데, Copilot Studio에서 도구 구성을 새로 고치지 않은 경우.
- 지원되지 않는 변수 형식을 전달하는 경우. 에이전트 플로우는 [기본적으로 **Text**, **Boolean**, **Number**만 지원](https://learn.microsoft.com/microsoft-copilot-studio/advanced-flow-input-output)해요. Table, Record 또는 복합 개체를 변환 없이 직접 전달하면 동작하지 않아요.

### 해결 방법

가장 흔한 해결책은 Copilot Studio에서 플로우를 새로 고치는 거예요.

1. 에이전트 플로우 작업이 포함된 토픽을 열어요.
2. Action 노드에서 **줄임표(...)** 를 선택한 다음 **새로 고침(Refresh)** 을 선택해요.

_에이전트 플로우 노드를 새로 고쳐 최신 입력/출력 스키마 가져오기_

3. Copilot Studio의 입력 및 출력 매개 변수가 이제 에이전트 플로우의 것과 일치하는지 확인해요.

새로 고침 후에도 오류가 계속되면, Copilot Studio에서 실제로 전달되는 값을 에이전트 플로우가 기대하는 값과 비교해 보세요.

_에이전트 쪽에서 입력 값 검토하기_

_에이전트 플로우에서 해당 입력 값 검토하기_

형식 불일치(예: 문자열이 필요한 곳에 숫자), 누락된 필수 매개 변수, 에이전트 플로우에 더 이상 존재하지 않는 불필요한 매개 변수가 있는지 살펴보세요.

---

## #4 메이커 자격 증명으로 에이전트 플로우 작업 실행하기

에이전트 플로우를 에이전트의 도구로 추가하고 메이커의 자격 증명으로 실행되게 하고 싶다면, 설정 자체는 금방 찾을 수 있어요. 도구 구성으로 이동해 **자격 증명(Credentials)** 을 펼치고 **메이커 제공 자격 증명(Maker-provided credentials)** 으로 설정하면 돼요.

_Copilot Studio에서 에이전트 플로우 도구에 메이커 제공 자격 증명 설정하기_

이제 끝났을까요?

아직이에요.

에이전트 쪽에서 자격 증명 설정을 바꾸면 에이전트가 에이전트 플로우를 호출하는 방식에는 영향을 주지만, 에이전트 플로우 *내부*의 작업들이 인증하는 방식은 바뀌지 않아요. 에이전트 플로우의 각 작업은 자체 **연결 참조(Connection Reference)** 를 쓰는데, 이는 에이전트 도구 구성과는 별개예요.

에이전트 플로우 내부의 작업이 실제로 메이커 자격 증명으로 실행되게 하려면, **에이전트 플로우 자체의 연결 참조를 업데이트**해서 메이커의 연결을 쓰도록 해야 해요.

_연결 참조를 메이커 본인의 연결로 업데이트하기_

---

## #5 에이전트와 에이전트 플로우에서 협업하기

공유 환경에서 작업을 시작하면 팀이 자주 헷갈리는 부분이 있어요. 에이전트와 에이전트 플로우의 공유·협업 동작이 서로 다르다는 점이에요.

**에이전트를 편집자 권한으로 공유하면 에이전트가 사용하는 에이전트 플로우도 함께 공유돼요.** Copilot Studio에서 다른 메이커를 에이전트의 편집자로 추가하면 연관된 에이전트 플로우에 대한 액세스 권한도 함께 부여돼요. 이 시나리오에서는 추가 단계가 필요 없어요.

**에이전트 플로우만 공유하는 건 다른 이야기예요. 그리고 유용한 이점도 있어요.** 현재 Copilot Studio에서 직접 할 수는 없어요. 에이전트 플로우를 다른 메이커와 독립적으로 공유하려면 다음과 같이 하면 돼요.

1. [make.powerautomate.com](https://make.powerautomate.com)으로 이동해요.
2. 해당 에이전트 플로우를 찾아요.
3. 플로우의 설정을 열고 다른 메이커를 **공동 소유자(co-owner)** 로 추가해요.

_Power Automate에서 직접 에이전트 플로우에 공동 소유자 추가하기_

이 접근 방식의 이점은 **범위가 제한된 액세스**예요. 공동 소유자는 에이전트 플로우에 대한 전체 편집 권한을 얻지만 에이전트에는 전혀 액세스할 수 없어요. 에이전트의 구성, 지침, 다른 도구를 노출하지 않으면서 특정 메이커가 자동화 로직을 소유하고 유지 관리하게 하고 싶을 때 유용해요.

---

## #6 에이전트 플로우에서 이미지를 꺼내 채팅 창에 표시하기

에이전트 플로우가 이미지를 생성하거나 가져왔고 이를 에이전트의 채팅 창에 표시하고 싶다면, 이미지 크기와 구성에 따라 두 가지 옵션이 있어요.

반대 시나리오 — 사용자가 에이전트 플로우로 파일을 전달하는 경우 — 는 [튜토리얼: Copilot Studio에서 에이전트 플로우, 커넥터, 도구로 파일 전달하기](https://microsoft.github.io/mcscatblog/posts/copilot-studio-passing-files-flows-connectors/)를 확인하세요.

### 옵션 1: Base64로 반환하고 인라인으로 표시하기

에이전트 플로우가 "Respond to the agent" 작업으로 이미지를 Base64로 인코딩된 문자열로 출력하게 해요. Text 출력 매개 변수를 구성하고 그 값을 파일의 Base64 표현으로 설정하세요.

_에이전트 플로우에서 Base64로 인코딩된 이미지를 Text 출력으로 반환하기_

에이전트는 Base64 문자열(`Topic.Base64output`)을 받아 두 가지 방법으로 인라인 표시할 수 있어요.

**메시지로 보내기.** 변수를 다음 Power Fx 식으로 설정하고 메시지로 전송하세요.

```text
$"<img src='data:image/png;base64,{Topic.Base64output}'/>"
```

_인라인 이미지가 포함된 간단한 메시지 보내기_

**Basic 카드가 포함된 메시지로 보내기.** Basic 카드의 이미지 URL로 다음 Power Fx 식을 사용하세요.

```text
"data:image/png;base64," & Topic.Base64output
```

_인라인 이미지가 포함된 Basic 카드 보내기_

### 옵션 2: 클라우드 스토리지에 저장하고 링크 반환하기 (큰 이미지에 권장)

Base64 인코딩은 파일 크기를 약 33% 부풀리고, 큰 Base64 문자열을 응답에 담으면 오버헤드가 커져요. 큰 이미지라면 다음 방식이 더 나아요.

1. 생성된 이미지를 클라우드 스토리지에 저장해요. Azure Blob, SharePoint, Dataverse File 열 모두 잘 동작해요.
2. 액세스 링크를 만들어요. Azure Blob Storage에는 공개 또는 SAS(Shared Access Signature) URL을, SharePoint에는 공유 링크를, Dataverse에는 인증된 API 엔드포인트(또는 프록시)를 사용해요.
3. 해당 URL을 에이전트에 반환하고 HTTPS를 통해 이미지를 렌더링해요.

이렇게 하면 응답 페이로드가 작게 유지되고 이미지에 대한 적절한 액세스 제어도 가능해요.

> **팁:** 두 옵션 모두 각기 다른 시나리오에서 잘 동작해요. Base64 방식은 구현이 더 간단하고 외부 스토리지 설정이 필요 없어요. 클라우드 스토리지 방식은 큰 이미지를 다루거나 솔루션에 이미 스토리지 계층이 있는 경우에 더 적합해요.

---

## #7 에이전트 플로우 안에서 에이전트 호출하기

구조화된 자동화를 수행하는 결정론적 에이전트 플로우가 있는데, 특정 한 지점에서만 AI 추론이 필요한 경우가 있어요. 에이전트 플로우를 에이전트로 재구축하거나 외부 API를 호출하는 대신, 에이전트 플로우 안에 에이전트 노드를 직접 넣을 수 있어요. 에이전트 플로우가 전체 흐름을 계속 주도하고 에이전트는 필요한 그 한 단계만 처리하므로, 구조화된 플로우의 안정성과 예측 가능성을 포기하지 않아도 돼요.

이 패턴은 다음과 같은 경우에 훌륭해요.

- 프로세스 대부분이 규칙 기반이며 에이전트 플로우로서 안정적인 경우
- 자연어 이해나 생성형 추론이 도움이 되는 단계가 하나 있는 경우
- 가능한 모든 곳에서 자동화를 결정론적으로 유지하고 싶은 경우

에이전트 플로우 *외부*에서 — 예를 들어 HTTP 호출이나 외부 시스템에서 — 에이전트를 트리거하는 방법을 알아보고 싶다면, 같은 아이디어를 다른 각도에서 다룬 [HTTP 호출로 Copilot Studio 에이전트 트리거하기](https://microsoft.github.io/mcscatblog/posts/triggering-copilot-studio-http/)를 확인하세요.

### 설정 방법

1. 에이전트 플로우에서 새 단계 [**에이전트 추가(Add an agent)**](https://learn.microsoft.com/microsoft-copilot-studio/agent-node-workflow)를 추가해요.
2. 호출할 Copilot Studio 에이전트를 선택해요.
3. 에이전트가 수행해야 할 지침이나 작업을 제공해요. 이전 에이전트 플로우 단계의 컨텍스트를 포함할 수 있고, 에이전트가 명확한 확인이 필요할 때 누구에게 연락해야 하는지도 지정할 수 있어요.
4. 에이전트 노드 뒤에 나머지 에이전트 플로우 단계를 추가해요.

에이전트 플로우가 실행되면 실행이 에이전트 노드에 도달하고, 에이전트에 제어를 넘긴 뒤 결과를 기다렸다가 다음 에이전트 플로우 단계로 자동으로 이어져요. 에이전트는 추론을 수행하고 구조화된 출력을 반환하며, 에이전트 플로우는 아무 일도 없었다는 듯 계속 진행해요.

_에이전트 플로우 안의 에이전트 노드 — 에이전트 플로우가 일시 중지하고, 에이전트가 추론하고, 에이전트 플로우가 결과와 함께 계속됨_

> **참고:** 이는 #2의 비동기 연속 패턴과는 달라요. 여기서는 *에이전트 플로우*가 *에이전트*를 호출해요. 제어 흐름이 반대인 거예요. 에이전트 플로우는 에이전트의 응답을 기다린 후에 계속 진행해요.

---

## 마무리

에이전트 플로우와 에이전트는 Copilot Studio에서 정말 강력한 자동화 패턴을 열어주지만, 통합 과정에는 날카로운 모서리가 몇 군데 있어요. 주의할 점을 간단히 요약하면 다음과 같아요.

- **플로우가 보이지 않나요?** "When an agent calls the flow" 트리거, "Respond to the agent" 작업, 비동기 토글, 솔루션 포함 여부, Copilot Studio 플랜으로 실행 중인지 확인하세요.
- **100초 타임아웃?** 비동기 연속 패턴으로 재구성하세요. 먼저 응답하고, 긴 로직은 백그라운드에서 실행한 뒤 "Execute Agent"로 다시 호출하세요.
- **FlowActionBadRequest?** Copilot Studio에서 에이전트 플로우 노드를 새로 고치고 매개 변수 형식이 Text, Boolean, Number인지 확인하세요.
- **작업이 잘못된 자격 증명으로 실행되나요?** Copilot Studio의 자격 증명 설정만이 아니라 에이전트 플로우 자체의 연결 참조를 업데이트하세요.
- **에이전트 플로우를 독립적으로 공유하고 싶나요?** Power Automate에서 직접 공동 소유자를 추가하세요. 에이전트를 건드리지 않고 에이전트 플로우 액세스만 부여돼요.
- **이미지를 표시해야 하나요?** 에이전트 플로우에서 Base64로 반환해 인라인 표시하거나, 클라우드 스토리지에 저장하고 링크를 반환하세요.
- **에이전트 플로우 안에서 AI 추론이 필요한가요?** "에이전트 추가(Add an agent)" 단계로 에이전트 노드를 에이전트 플로우에 바로 넣으세요.

이 중 어떤 걸 프로덕션에서 겪어 보셨나요? 어떤 문제가 가장 오래 걸렸나요? 아래에 댓글을 남겨 주세요. 특히 위의 방법보다 더 깔끔한 해결책을 찾으셨다면 꼭 공유해 주세요.