Skip to content

dotnetpower/CopilotStudio

Repository files navigation

Copilot Studio 가이드 문서

🌐 문서 사이트 바로가기

Copilot Studio를 이용한 AI 에이전트 구축 및 운영을 위한 종합 가이드입니다.

시작하기

이 문서는 Docusaurus를 사용하여 구축되었습니다.

설치

npm install

로컬 개발 서버

npm 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단계 가이드)
  1. 이름을 지정하고 만들기 버튼 클릭

참고 자료

라이선스

이 프로젝트는 오픈소스이며 자유롭게 사용할 수 있습니다.

첫 페이지의 풍력발전의 역사에 대해 문서를 업로드 하기전 상태에서 코파일럿에게 질문

**질문: 풍력발전기로 한 해 동안 몇 가구에 전기를 공급할 수 있어?**

- 참조 자료를 비활성화 한 상태에서는 다음처럼 답변을 하지 못함.
![](images/2024-06-26-18-04-31.png)
![](images/2024-06-26-18-16-51.png)

- 참조 자료를 활성화 하여 공개된 지식을 참조 하면 다음과 같이 공개된 내용에 대해 답변
![](images/2024-06-26-18-16-12.png)
  1. SharePoint 사이트에 문서 등록 또는 등록된 문서가 있는 사이트 URL 복사 테스트용 url 에서는 https://...도메인/sites/CopilotDocSharing/Shared Documents 가 사용됨.

  2. Copilot Studio 에서 참조 자료 추가

    SharePoint 및 OneDrive 선택

    이전에 복사해둔 SharePoint URL 붙여넣기

  3. Copilot 설정에서 인증 변경

    로그인한 사용자에 대해서만 문서 검색이 허용되어야 하므로 수동으로 인증사용자가 로그인해야 함 을 체크 앱등록 화면에서 리디렉션 URL 이 사용되므로 복사 클릭

  4. Entra 관리센터 에서 애플리케이션-앱 등록 화면에서 생성한 Copilot 선택

    1. 인증 선택하고 플랫폼 추가-웹 선택

    복사 해둔 리디렉션 URL 붙여넣고, 권한 부여에 액세스 토큰, ID 토큰 체크 후 구성 클릭

    1. API 사용 권한 에서 Microsoft Graph 에 대한 권한 추가

    위임된 권한 선택

    OpenID 권한 중, openid, profile 선택

    이 상태에서 권한 선택files로 검색하여 Files.Read.All 선택

    sites로 검색하여 Sites.Read.All 선택 후 권한 추가 버튼 클릭

    xxx에 대한 관리자 동의 사용 클릭

    권한 설정 완료된 상태 alt text

    1. API 표시 메뉴에서 범위 추가 클릭 후 저장 후 계속 클릭

    범위 이름 및 필수 항목을 적절히 등록 후 범위 추가 클릭, 관리자 및 사용자 가 동의 되어야 함

    1. 인증서 및 암호 설정 인증서 및 암호-클라이언트 비밀-새 클라이언트 암호 선택 후 임의 이름 secret 또는 key 등을 입력 후 추가

    주의: 키는 생성할때만 보여지므로 값을 복사해 두어야 함

    본 키는 Copilot Studio 인증에서 클라이언트 암호가 됨.

    클라이언트 ID 는 개요에서 애플리케이션(클라이언트ID) 를 사용하므로

    1. Copilot Studio 로 돌아와서 클라이언트 ID, 클라이언트 암호 입력 후 저장

    범위에 Files.Read.All Sites.Read.All 추가 후 저장 및 닫기

  5. 테스트를 위해 Copilot 테스트에서 새로고침을 하면 로그인 요청

  1. 로그인 버튼을 클릭하여 로그인 하면 유효성 검사 코드 복사 후 채팅창에 입력

  1. 로그인 된 상태이므로 Welcome 메시지 노출됨.

  1. 풍력발전기로 한 해 동안 몇 가구에 전기를 공급할 수 있어? 질문을 통해 문서에서 검색된 결과가 노출됨을 확인

  1. 게시를 통해 코파일럿 공유

SharePoint 목록을 조회하기 위한 절차(Power Automate)

  1. 목록이 검색을 위해서 Power Automate 로 호출을 하기위해 다음과 같이 자산관리 목록에 데이터가 있다고 가정하고

  2. 토픽추가에서 트리거 구문을 지정(생성형 AI 인 경우 능동형으로 작성)

  3. 작업호출-흐름만들기 선택

  4. Power Automate 화면의 Copilot 프롬프트에 다음과 같이 입력하여 SharePoint 목록 조회하는 단계를 추가

    get items from https://mngenvmcap132261.sharepoint.com/sites/TargetDLSite/Lists/List/AllItems.aspx
    
  5. Sharepoint 목록 확인 - 목록 이름으로 List Name 업데이트 및 Top count 지정

  6. 변수를 초기화

  7. Apply to Each 추가 후 Append to string variable 에 Model 설정

  8. 응답을 위한 출력변수 지정

  9. Publish 후 Test 및 Respond to Copilot 을 클릭하여 테스트 결과 확인

  10. Copilot Studio 에서 잠시 기다린 후 작업호출을 클릭하면 추가된 Flow 보이므로 클릭하여 추가

  11. 마지막 단계에서 메시지 보내기 선택하여 변수를 다음처럼 설정

  12. 다음처럼 연결 설정이 필요한 경우 연결을 클릭 하여 연결관리에서 연결해 주면 됨.

SharePoint 목록을 조회하기 위한 절차(Dataverse Table)

  1. Power Apps테이블-SharePoint 목록으로 만들기 선택

  2. 목록을 선택하고 다음

  3. 테이블의 이름을 확인한 후 만들기 선택

  4. 만들어진 테이블의 열(Column) 을 확인 하기 위해 스키마-열 선택하여 확인

  5. Copilot Studio 에서 참조자료 추가

  6. 생성된 테이블 선택

  7. (옵션)동의어 추가로 인식 향상 가능하지만 지금 단계에서는 생략

  8. 추가된 테이블 작업현황에 대해 조회를 하기위해 토픽 생성 후 테스트 목적이므로 트리거 문구를 작업현황 추가

  9. 작업호출을 선택하고 dataverse 키워드로 검색 후 선택한 환경에서 행 나열 선택

  10. 입력값에 환경 선택, 테이블 선택

  11. 4단계에서 확인한 열 이름을 고급 입력의 Select Columns 에 작성

  12. 출력에 변수를 설정

  13. 노드추가 메시지 보내기 선택하고 PowerFx 식 삽입을 클릭하여

  14. 다음처럼 Concat(Topic.model, cradb_title & ", ") 입력 후 토픽 저장

  15. 테스트 시 연결이 필요한 경우 연결

  16. 연결 이후 다시 테스트 시 다음과 같이 Work Item 의 이름이 나열됨.

Azure AI Search

Azure AI Search 와 Storage Account를 사용한 벡터 검색 방법

출처: Azure AI Search의 벡터

벡터 검색을 위해 필요한 사항

  1. Azure 에 리소스그룹 생성

  2. Azure OpenAI 리소스를 리소스 그룹내에 생성

    • 모델 배포를 위해서 OpenAI 리소스 개요 화면에서 Explorer AI Foundry portal 버튼을 클릭하여 이동
    • AI Foundry 사이트에서 Deployments 메뉴로 이동하고 Deploy model 을 선택하여 text-embedding-ada-002 모델 선택
  3. Storage Account 생성

  4. Azure AI Search 생성 구독당 하나의 Free 리소스 생성 가능

  5. 리소스 그룹에서 생성된 리소스 목록이 다음처럼 보여지면 준비가 된 상태

  6. 생성된 저장소 계정에서 files라는 컨테이너 생성후 예제파일(풍력발전_오해와_진실.pdf)

    • 좋은 검색을 위해서 절적한 청크가 필요
    • 예제파일은 pdf 뿐만 아니라 docx, pptx 등 가능

  7. AI Search 에서 벡터 데이터 추가

    • data connection 은 Azure Blob Storage 이고 storage account 를 3단계에서 생성한 이름으로 다음 그림과 같이 설정
    • 임베딩 모델을 선택 (보이지 않으면 2단계에서 모델 배포 필요)
    • Vectorize and enrich your images 단계는 필요시 설정
    • Review 단계 예시
    • 완료 후 벡터 검색 테스트 검색어 소음
  8. Copilot Studio 에서 테스트를 위한 에이전트 생성

    • 생성형 오케스트레이션 활성화를 위해 설정 에서 생성형 AI 에서 Generative(preview) 로 변경
  9. 참조 자료 메뉴에서 참조자료 추가 고급 선택하여 Azure AI Search 선택

  10. 이후 토픽을 추가하여 질문을 하면 다음과 같이 벡터 검색을 통해 응답 (검색이 안되는 경우 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        

모니터링을 위한 APM 설정 방법(Application Insights)

  1. Application Insights 리소스 생성

    • workspace 는 Log Analytics workspace 로써, 공용으로 사용해도 되며 생성된 리소스가 존재하지 않는 경우 새롭게 생성됩니다.
  2. 생성된 Application Insights 리소스의 개요 화면의 우측에 Connection String 을 복사

  3. 복사해둔 Connection String 을 Copilot Studio 의 [설정]-[고급] 화면에서 Application Insights 를 선택하고 연결 문자열에 붙여 넣습니다. 연결까지 약 5분 소요.

  4. 연결한 Copilot Studio 에서 질문을 하여 테스트를 진행(약 5분 뒤에 로그가 application insights 로 저장)

  5. Azure Application Insights 의 [Monitoring]-[Log] 에서 customEvents 테이블을 더블클릭 하면 쿼리 편집기에 추가가 되며 Run 버튼을 클릭하여 실행

  6. 다음처럼 로그가 보임

  7. 다음과 같이 Kusto 쿼리를 통해서 필요한 데이터 조회

    customEvents 
    | extend Message = iif(customDimensions["Message"] <> "", customDimensions["Message"], customDimensions["text"])
    | order by timestamp asc     

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published