이 빠른 시작에서는 Azure 개발자 CLI(azd)를 사용하여 Azure Functions 서버리스 에이전트를 배포합니다. 샘플에는 다음 두 개의 에이전트가 포함됩니다.
- 브라우저에서 배포된 앱을 테스트하는 데 사용할 수 있는 채팅 에이전트입니다. 이 에이전트는 샌드박스 Python 코드 실행을 사용하고 웹을 찾아볼 수 있습니다.
- 최근 Microsoft 블로그 게시물을 수집하고 요약하며 관리되는 MCP 서버의 MCP 도구를 통해 Microsoft 365 Outlook 커넥터에 대한 다이제스트를 전자 메일로 보낼 수 있는 타이머 트리거 에이전트입니다.
이 프로젝트는 Azure Functions 서버리스 에이전트 런타임 사용합니다. Markdown 파일에서 에이전트를 정의하고, 앱 전체 런타임 기본값을 agents.config.yaml구성하고, 원격 MCP 서버를 연결 mcp.json하고, 다른 함수 앱과 마찬가지로 앱을 배포합니다.
템플릿은 Flex Consumption 함수 앱, 스토리지, 모니터링, Microsoft Foundry 프로젝트 및 모델 배포, Azure Container Apps 동적 세션 풀 및 필요한 ID 할당을 프로비전합니다. 전자 메일 배달을 사용하도록 설정하면 커넥터 네임스페이스, Microsoft 365 Outlook 연결 및 커넥터에 대한 관리형 MCP 서버도 프로비전합니다.
이 빠른 시작을 완료하면 앱이 Flex Consumption 계획 및 관련 Azure 리소스를 사용하기 때문에 Azure 계정에 약간의 비용이 발생할 수 있습니다.
사전 요구 사항
-
Azure 개발자 CLI (
azd). - Azure CLI. Azure Cloud Shell에서 Azure CLI 명령을 실행할 수도 있습니다.
- 활성 구독이 있는 Azure 계정. 무료로 계정을 만듭니다.
- 리소스 그룹, 함수 앱, 관리 ID, Microsoft Foundry 리소스, 모델 배포, Azure Container Apps 세션 풀, 커넥터 네임스페이스 및 구독의 연결을 만들 수 있는 권한입니다.
- 전자 메일 배달을 사용하도록 설정하려면 로그인할 수 있고, 전자 메일을 보낼 수 있으며, 받는 사람 주소로 사용하여 에이전트 출력을 확인할 수 있는 Microsoft 365 계정입니다.
프로젝트 시작
이 azd init 명령을 사용하여 샘플 리포지토리에서 로컬 프로젝트를 만듭니다.
Visual Studio Code에서 프로젝트를 만들고자 하는 폴더나 작업 영역을 엽니다.
터미널에서 다음
azd init명령을 실행합니다.azd init --template Azure-Samples/functions-quickstart-serverless-agents-azd -e serverless-agents이 명령은 serverless 에이전트 샘플 리포지토리 프로젝트 파일을 끌어와 현재 폴더에서 프로젝트를 초기화합니다.
-e플래그는 배포 상태를 추적하고 Azure 리소스 이름에 사용되는 현재azd환경의 이름을 지정합니다.타이머 에이전트에서 사용하는 받는 사람 전자 메일 주소를 설정하여 전자 메일 배달을 사용하도록 설정합니다. 이 빠른 시작의 뒷부분에서 Microsoft 365 계정에 로그인하여 전자 메일을 보내는 Microsoft 365 Outlook 연결에 권한을 부여해야 합니다.
azd env set TO_EMAIL <recipient@example.com><recipient@example.com>를 자신의 이메일 주소 또는 조직의 이메일 정책에서 허용하는 다른 받는 사람으로 바꾸세요. 일부 조직에서는 커넥터 기반 전자 메일을 내부 받는 사람에게 제한하거나 외부 받는 사람을 차단하므로 테스트 메시지를 자신에게 보내는 것이 가장 신뢰할 수 있는 옵션입니다.메모
이메일 배달은 샘플에서 선택 사항입니다. 이 설정을 건너뛰면
azd up커넥터 네임스페이스, Microsoft 365 Outlook 연결 또는 관리형 MCP 서버를 만들지 않습니다. 타이머 에이전트는 여전히 실행되고 최종 응답에서 다이제스트를 반환하므로 로그 또는 Application Insights에서 실행을 확인할 수 있습니다.
프로젝트 검토
배포하기 전에 서버리스 에이전트 앱을 정의하는 프로젝트 파일을 검토합니다.
| 파일 또는 폴더 | Purpose |
|---|---|
src/main.agent.md |
채팅 에이전트를 정의하고 디버그 채팅 UI에 대한 기본 제공 엔드포인트를 사용하도록 설정합니다. 이 에이전트는 샌드박스 Python 코드 실행을 사용할 수 있으며 Microsoft 365 Outlook 관리되는 MCP 서버를 사용하지 않습니다. |
src/daily_microsoft_blog_summary.agent.md |
타이머로 트리거되는 Microsoft 블로그 요약 에이전트를 정의합니다. YAML 프론트 매터는 타이머 트리거를 선언하고, Markdown 본문은 에이전트 지침을 포함합니다. |
src/agents.config.yaml |
앱의 에이전트에서 사용하는 모델 배포 및 Azure Container Apps 동적 세션 풀 엔드포인트를 포함하여 앱 전체 런타임 기본값을 정의합니다. |
src/mcp.json |
에이전트에서 사용할 수 있는 원격 MCP 서버를 나열합니다. 이 템플릿에서 src 함수 앱 프로젝트 루트이며, 이 파일에는 전자 메일 배달을 사용할 때 Microsoft 365 Outlook 관리되는 MCP 서버 엔드포인트가 포함됩니다. |
infra/ |
azd 함수 앱, 스토리지, 모니터링, Foundry 리소스, 모델 배포, 세션 풀, 선택적 커넥터 네임스페이스 리소스 및 ID 구성을 프로비전하는 데 사용하는 Bicep 파일을 포함합니다. |
src/function_app.py |
Functions 호스트에 필요한 부트스트랩 파일입니다. 일반적으로 이 파일을 편집할 필요가 없습니다. |
타이머 트리거 에이전트는 .에 정의되어 있습니다 daily_microsoft_blog_summary.agent.md. 앞의 문제는 타이머 일정을 선언하고, markdown 지침은 TO_EMAIL 구성되면 에이전트에게 최근 Microsoft 블로그 게시물을 수집하고, 다이제스트를 만들고, 이메일을 보내도록 지시합니다.
Azure에 배포하기
azd up 사용하여 Azure 리소스를 프로비전하고 함수 앱을 배포합니다.
터미널에서 초기화된 프로젝트의 루트에서 다음 명령을 실행합니다.
azd up메시지가 표시되면 리소스 그룹에 사용할 Azure 구독 및 위치를 선택합니다.
Bicep 매개 변수를 사용자 지정하지 않는 한 템플릿은 기본 Microsoft Foundry 모델 배포 설정을 사용합니다.
명령이 완료되면 앱이 Azure 새 함수 앱에 배포됩니다. 배포 출력에는 생성된 리소스에 대한 링크가 포함됩니다.
연결 권한 부여
TO_EMAIL 설정되면 배포는 Microsoft 365 Outlook 연결 및 관리되는 MCP 서버를 사용하여 커넥터 네임스페이스를 만듭니다. 이 설정을 통해 타이머 에이전트는 사용자 지정 Outlook API 코드 없이 커넥터 도구를 통해 이메일을 보낼 수 있습니다. 에이전트가 전자 메일을 보내기 전에 전자 메일을 보낼 수 있는 Microsoft 365 계정에 로그인하여 연결 권한을 부여합니다.
설정 TO_EMAIL하지 않은 경우 이 섹션을 건너뜁니다.
Azure 포털에서
Connector Namespace을 검색합니다.azd에서 생성한 커넥터 네임스페이스 리소스를 엽니다. 리소스는 사용자가 만든azd리소스 그룹에 있으며, 해당 이름은 예제 명령을 사용한 경우 사용자가 선택한rg-azd init환경 이름으로 시작하고serverless-agents포함됩니다.리소스를 선택하면 커넥터 네임스페이스 포털이 열리며, 네임스페이스에서 연결, 트리거 및 MCP 서버를 검색하고 관리하기 위한 별도의 환경이 열립니다.
커넥터 네임스페이스 포털에서 Microsoft 365 Outlook 커넥터를 찾은 다음 배포에서 만든 연결을 엽니다.
Authenticate 선택한 다음, 전자 메일을 보낼 수 있는 Microsoft 365 계정으로 로그인합니다.
인증이 성공하면 함수 앱의 관리 ID가 관리되는 MCP 서버를 호출할 수 있습니다. 이 서버는 권한 있는 연결을 사용하여 전자 메일을 보냅니다.
디버그 채팅 에이전트 사용
샘플에는 Azure Container Apps 동적 세션 풀을 통해 Python 코드 실행을 사용할 수 있는 채팅 에이전트가 포함되어 있습니다. 채팅 UI는 배포된 에이전트 앱을 테스트하기 위한 디버그 화면입니다.
azd up 완료되면 배포 출력에 표시된 함수 앱 엔드포인트를 열고 다음으로 /agents/main/이동합니다. 채팅 UI가 로드되면 에이전트의 채팅 엔드포인트를 호출할 수 있도록 함수 키를 묻는 메시지가 표시됩니다.
앱의 기본 함수 키를 가져옵니다.
az functionapp keys list \
--resource-group <RESOURCE_GROUP> \
--name <FUNCTION_APP_NAME> \
--query "functionKeys.default" \
--output tsv
반환된 키를 채팅 UI 프롬프트에 붙여넣습니다.
채팅 에이전트에게 현재 공개 정보 또는 코드 실행의 이점을 얻을 수 있는 질문을 해 보세요. 예를 들어 요청 What's the weather in Seattle right now? 또는 Compare the current weather in Seattle and New York.
채팅 에이전트는 Microsoft 365 Outlook 관리되는 MCP 서버를 사용하지 않습니다. 전자 메일 배달은 타이머 트리거 블로그 요약 에이전트에서만 사용됩니다.
요청 시 타이머 에이전트 실행
에이전트는 타이머 일정에 따라 자동으로 실행됩니다. 즉시 테스트하려면 Azure 포털에서 타이머 트리거 함수를 수동으로 실행합니다.
Azure portal에서
azd이(가) 만든 함수 앱을 엽니다.개요 블레이드에서 함수를 선택한 다음, 타이머 트리거 에이전트 함수를
daily_microsoft_blog_summary선택합니다.코드 + 테스트를 선택합니다.
로그를 선택하여 이 함수에 대한 로그 스트림을 엽니다.
테스트/실행을 선택하고 요청 본문을 그대로
{}두고 실행을 선택합니다.
요청은 수락된 응답을 반환하고 함수 실행은 백그라운드에서 시작됩니다.
실행 모니터링
타이머 트리거 함수에 대한 코드 + 테스트의 로그 창으로 돌아갑니다. 로그에는 함수 실행 및 런타임 메시지가 표시됩니다. 런타임 로그 수준에 따라 모델 및 도구 작업도 표시될 수 있습니다.
Application Insights를 사용하여 원격 분석이 수집된 후 실행을 검토할 수도 있습니다.
함수 앱 왼쪽 메뉴에서 Application Insights를 선택합니다.
연결된 Application Insights 리소스를 엽니다.
트랜잭션 검색 또는 로그를 사용하여 함수를 수동으로 실행할 때 시작된 실행을 찾습니다.
함수 실행이 성공적으로 완료되었음을 로그에 표시하면 실행이 완료됩니다. 전자 메일 배달을 사용하도록 설정하고 Microsoft 365 Outlook 연결에 권한이 부여된 경우 받는 사람 받은 편지함에서 Microsoft 블로그 다이제스트를 확인합니다. 그렇지 않으면 함수 로그 또는 Application Insights에서 에이전트의 최종 응답을 검토합니다.
자원을 정리하세요
완료되면 이 명령을 사용하여 Azure 함수 앱 및 관련 리소스를 삭제합니다.
azd down