Copilot Studio를 이용한 AI 에이전트 구축 및 운영을 위한 종합 가이드입니다.
이 문서는 Docusaurus를 사용하여 구축되었습니다.
npm installnpm start브라우저에서 http://localhost:3000이 자동으로 열립니다. 대부분의 변경사항은 서버를 재시작하지 않고도 실시간으로 반영됩니다.
npm run build이 명령어는 정적 콘텐츠를 build 디렉터리에 생성합니다. 정적 호스팅 서비스를 사용하여 배포할 수 있습니다.
docs/- 메인 가이드 문서- SharePoint 통합 (문서 검색 및 목록 조회)
- Azure AI Search 벡터 검색
- Application Insights 모니터링
- Go-Live 체크리스트
docs/go-live/- 프로덕션 배포 가이드 (10단계)static/- 정적 파일 (이미지, 파일 등)
| 제목 | 설명 |
|---|---|
| SharePoint 문서 검색 | SharePoint에 등록된 문서를 Copilot에서 검색하기 위한 앱 등록 및 권한 구성 |
| SharePoint 목록 조회 | Power Automate 또는 Dataverse Table을 이용한 SharePoint 목록 조회 방법 |
| Azure AI Search | Azure AI Search를 이용한 벡터 검색 구성 방법 |
| 모니터링 설정 | Application Insights를 통한 대화 이력 추적 및 모니터링 |
| Go-Live 고려 사항 | 프로덕션 배포 전 평가 항목 및 Best Practices (10단계 가이드) |
![]() |
- Copilot Studio
- Microsoft Learn - Copilot Studio
- Copilot Studio의 새로운 기능
- Copilot Studio 릴리즈 플래너
- Open AI Tokenizer
- Docusaurus 문서
이 프로젝트는 오픈소스이며 자유롭게 사용할 수 있습니다.
첫 페이지의 풍력발전의 역사에 대해 문서를 업로드 하기전 상태에서 코파일럿에게 질문
**질문: 풍력발전기로 한 해 동안 몇 가구에 전기를 공급할 수 있어?**
- 참조 자료를 비활성화 한 상태에서는 다음처럼 답변을 하지 못함.


- 참조 자료를 활성화 하여 공개된 지식을 참조 하면 다음과 같이 공개된 내용에 대해 답변

-
SharePoint 사이트에 문서 등록 또는 등록된 문서가 있는 사이트 URL 복사
테스트용 url 에서는 https://...도메인/sites/CopilotDocSharing/Shared Documents 가 사용됨.

-
로그인한 사용자에 대해서만 문서 검색이 허용되어야 하므로
수동으로 인증과사용자가 로그인해야 함을 체크 앱등록 화면에서리디렉션 URL이 사용되므로 복사 클릭
-
Entra 관리센터 에서
애플리케이션-앱 등록화면에서 생성한 Copilot 선택
복사 해둔 리디렉션 URL 붙여넣고, 권한 부여에
액세스 토큰,ID 토큰체크 후구성클릭
OpenID권한 중, openid, profile 선택
이 상태에서
권한 선택에files로 검색하여Files.Read.All선택
sites로 검색하여Sites.Read.All선택 후권한 추가버튼 클릭
API 표시메뉴에서범위 추가클릭 후저장 후 계속클릭
범위 이름 및 필수 항목을 적절히 등록 후
범위 추가클릭,관리자 및 사용자가 동의 되어야 함- 인증서 및 암호 설정
인증서 및 암호-클라이언트 비밀-새 클라이언트 암호선택 후 임의 이름secret또는key등을 입력 후추가
주의: 키는 생성할때만 보여지므로 값을 복사해 두어야 함
본 키는 Copilot Studio 인증에서
클라이언트 암호가 됨.클라이언트 ID 는
개요에서애플리케이션(클라이언트ID)를 사용하므로- Copilot Studio 로 돌아와서 클라이언트 ID, 클라이언트 암호 입력 후 저장
범위에 Files.Read.All Sites.Read.All 추가 후 저장 및 닫기
-
테스트를 위해 Copilot 테스트에서 새로고침을 하면 로그인 요청
- 로그인 버튼을 클릭하여 로그인 하면 유효성 검사 코드 복사 후 채팅창에 입력
- 로그인 된 상태이므로 Welcome 메시지 노출됨.
풍력발전기로 한 해 동안 몇 가구에 전기를 공급할 수 있어?질문을 통해 문서에서 검색된 결과가 노출됨을 확인
게시를 통해 코파일럿 공유
-
목록이 검색을 위해서 Power Automate 로 호출을 하기위해 다음과 같이
자산관리목록에 데이터가 있다고 가정하고 -
토픽추가에서 트리거 구문을 지정(생성형 AI 인 경우 능동형으로 작성)
-
작업호출-흐름만들기 선택
-
Power Automate 화면의 Copilot 프롬프트에 다음과 같이 입력하여 SharePoint 목록 조회하는 단계를 추가
get items from https://mngenvmcap132261.sharepoint.com/sites/TargetDLSite/Lists/List/AllItems.aspx -
Sharepoint 목록 확인 - 목록 이름으로 List Name 업데이트 및 Top count 지정
-
변수를 초기화
-
Apply to Each 추가 후 Append to string variable 에 Model 설정
-
응답을 위한 출력변수 지정
-
Publish 후 Test 및
Respond to Copilot을 클릭하여 테스트 결과 확인 -
Copilot Studio 에서 잠시 기다린 후 작업호출을 클릭하면 추가된 Flow 보이므로 클릭하여 추가
-
마지막 단계에서
메시지 보내기선택하여 변수를 다음처럼 설정 -
다음처럼 연결 설정이 필요한 경우 연결을 클릭 하여 연결관리에서 연결해 주면 됨.
-
Power Apps 의
테이블-SharePoint 목록으로 만들기선택
-
목록을 선택하고
다음 -
테이블의 이름을 확인한 후
만들기선택 -
만들어진 테이블의 열(Column) 을 확인 하기 위해
스키마-열선택하여 확인 -
Copilot Studio 에서
참조자료추가 -
생성된 테이블 선택
-
(옵션)동의어 추가로 인식 향상 가능하지만 지금 단계에서는 생략
-
추가된 테이블
작업현황에 대해 조회를 하기위해 토픽 생성 후 테스트 목적이므로 트리거 문구를작업현황추가 -
작업호출을 선택하고dataverse키워드로 검색 후선택한 환경에서 행 나열선택 -
입력값에 환경 선택, 테이블 선택
-
4단계에서 확인한 열 이름을 고급 입력의
Select Columns에 작성 -
출력에 변수를 설정
-
노드추가
메시지 보내기선택하고PowerFx 식 삽입을 클릭하여 -
테스트 시 연결이 필요한 경우 연결
-
연결 이후 다시 테스트 시 다음과 같이 Work Item 의 이름이 나열됨.
Azure AI Search 와 Storage Account를 사용한 벡터 검색 방법
- Azure OpenAI
- 임베딩 모델: text-embedding-ada-002
- Azure AI Search
- Azure Blob Storage
-
Azure OpenAI 리소스를 리소스 그룹내에 생성
-
Storage Account 생성
-
Azure AI Search 생성 구독당 하나의 Free 리소스 생성 가능
-
리소스 그룹에서 생성된 리소스 목록이 다음처럼 보여지면 준비가 된 상태
-
생성된
저장소 계정에서files라는 컨테이너 생성후 예제파일(풍력발전_오해와_진실.pdf)- 좋은 검색을 위해서 절적한 청크가 필요
- 예제파일은 pdf 뿐만 아니라 docx, pptx 등 가능
-
AI Search 에서 벡터 데이터 추가
-
Copilot Studio 에서 테스트를 위한 에이전트 생성
-
참조 자료메뉴에서 참조자료 추가고급선택하여 Azure AI Search 선택 -
이후 토픽을 추가하여 질문을 하면 다음과 같이 벡터 검색을 통해 응답 (검색이 안되는 경우 7단계부터 재 시도 필요)
- 참고
풍력발전토픽의 yaml 코드kind: AdaptiveDialog modelDescription: 풍력발전의 역사, 소음, 필요 부지에 대한 답 beginDialog: kind: OnRecognizedIntent id: main intent: {} actions: - kind: SearchAndSummarizeContent id: Cypahn userInput: =System.Activity.Text additionalInstructions: |- 너는 풍력발전에 대한 질문에 답을 할수 있다. \# 제약사항 답변은 반드시 한국어로만 해야한다. fileSearchDataSource: searchFilesMode: kind: DoNotSearchFiles knowledgeSources: kind: SearchSpecificKnowledgeSources knowledgeSources: - cr687_agentVectorSearchDemo.knowledge.agentvectorsearchdemoAzureAI_rY18gjJhBPlmdzJ8z08vA
- 참고
-
Application Insights 리소스 생성
- workspace 는 Log Analytics workspace 로써, 공용으로 사용해도 되며 생성된 리소스가 존재하지 않는 경우 새롭게 생성됩니다.
-
생성된 Application Insights 리소스의
개요화면의 우측에 Connection String 을 복사 -
복사해둔 Connection String 을 Copilot Studio 의 [설정]-[고급] 화면에서 Application Insights 를 선택하고
연결 문자열에 붙여 넣습니다. 연결까지 약 5분 소요. -
연결한 Copilot Studio 에서 질문을 하여 테스트를 진행(약 5분 뒤에 로그가 application insights 로 저장)
-
Azure Application Insights 의 [Monitoring]-[Log] 에서
customEvents테이블을 더블클릭 하면 쿼리 편집기에 추가가 되며Run버튼을 클릭하여 실행 -
다음처럼 로그가 보임
-
다음과 같이 Kusto 쿼리를 통해서 필요한 데이터 조회
customEvents | extend Message = iif(customDimensions["Message"] <> "", customDimensions["Message"], customDimensions["text"]) | order by timestamp asc













































































