Visual Studio Code 확장용 Microsoft Foundry 도구 키트에서 호스트된 에이전트 워크플로 만들기

Visual Studio Code용 Microsoft Foundry Toolkit 확장을 사용하여 호스팅된 Foundry Agent 워크플로를 만들고, 테스트하고, 배포합니다. 도구 키트는 템플릿에서 에이전트 만들기, 시각화 및 추적 지원을 위한 에이전트 검사기와의 로컬 테스트 및 디버깅, VS Code에서 Foundry 에이전트 서비스로 직접 배포를 지원합니다. 호스트된 워크플로를 사용하면 여러 에이전트가 각각 고유한 모델, 도구 및 지침을 사용하여 순차적으로 공동 작업할 수 있습니다.

시작하기 전에 확장을 사용하여 Foundry 에이전트 서비스에서 에이전트를 빌드 합니다. 그런 다음 호스트된 워크플로를 해당 에이전트에 추가할 수 있습니다.

이 문서에서는 워크플로 프로젝트를 만들고, 로컬로 실행하고, 실행을 시각화하고, Foundry 작업 영역에 배포하는 방법을 설명합니다.

필수 구성 요소

  • 배포된 모델을 사용하는 Foundry 프로젝트 또는 Azure OpenAI 리소스입니다.

  • Visual Studio Code 확장용 Microsoft Foundry 도구 키트 설치되어 있습니다.

  • Foundry UserAcrPull 역할이 할당된 프로젝트의 관리형 ID입니다. 또한 Hosted agent를 배포하려는 Foundry 프로젝트의 관리형 ID에 acrPull 역할도 할당합니다.

    중요

    Foundry RBAC 역할의 이름이 최근에 바뀌었습니다. Foundry User, Foundry OwnerFoundry 계정 소유자Foundry Project Manager는 이전에 Azure AI 사용자, Azure AI 소유자, Azure AI 계정 소유자 및 Azure AI Project Manager로 이름이 지정되었습니다. 이름 바꾸기가 롤아웃되는 동안 일부 위치에서는 이전 이름이 계속 표시될 수 있습니다. 역할 ID 및 핵심 권한은 이름 바꾸기에 의해 변경되지 않습니다.

  • 호스트된 에이전트에 대해 지원되는 지역 입니다.

  • Python 3.13 이상.

호스트된 에이전트 워크플로 만들기

Visual Studio Code 확장용 Microsoft Foundry 도구 키트를 사용하여 호스트된 에이전트 워크플로를 만들 수 있습니다. 호스트된 에이전트 워크플로는 작업을 수행하기 위해 함께 작동하는 에이전트의 시퀀스입니다. 워크플로의 각 에이전트에는 고유한 모델, 도구 및 지침이 있을 수 있습니다.

  1. 명령 팔레트를 엽니다(Ctrl+Shift+P).

  2. 다음 명령을 실행합니다. >Foundry Toolkit: Create a New Hosted Agent.

  3. 프로그래밍 언어 선택

  4. Copilot SDK, Microsoft Agent Framework 또는 자체 프레임워크 사용 중 하나를 선택하세요.

  5. 응답 API 또는 호출 API 중 하나의 프로토콜을 선택합니다.

  6. 목록에서 템플릿을 선택합니다.

  7. "다음" 단추를 선택합니다.

  8. 새 호스티드 에이전트를 저장할 폴더를 선택합니다.

  9. 환경 설정의 경우 "지금 건너뛰기"를 선택하면 Foundry 프로젝트 및 모델 설정이 건너뜁니다. 그러면 나중에 코드에서 수동으로 구성해야 합니다. "Microsoft Foundry를 사용하여 구성"을 선택하면 기존 Foundry 프로젝트의 정보로 프로젝트와 모델 정보가 자동으로 채워집니다.

호스트된 에이전트 프로젝트의 파일은 시작하기 위해 선택한 프레임워크, 템플릿 및 언어를 기반으로 선택한 폴더에 생성됩니다. 필요에 따라 해당 코드를 제거하거나 수정할 수 있습니다.

종속성 설치

호스트된 에이전트 프로젝트에 필요한 종속성을 설치합니다. 종속성은 프로젝트를 만들 때 선택한 프로그래밍 언어에 따라 달라집니다.

  1. 가상 환경을 만듭니다.

     python -m venv .venv
    
  2. 가상 환경을 활성화합니다.

    # PowerShell
    ./.venv/Scripts/Activate.ps1
    
    # Windows cmd
    .venv\Scripts\activate.bat
    
    # Unix/MacOS
    source .venv/bin/activate
    
  3. 필요한 패키지를 설치합니다.

    pip install -r requirements.txt
    
  1. 프로젝트 디렉터리로 이동하여 이 명령을 실행하여 필요한 NuGet 패키지를 가져옵니다.

    dotnet restore
    

호스트된 워크플로를 로컬로 실행

샘플 워크플로 프로젝트는 필요한 환경 변수를 사용하여 .env 파일을 만듭니다. Foundry 자격 증명으로 .env 파일을 만들거나 업데이트합니다.

FOUNDRY_PROJECT_ENDPOINT=https://<your-resource-name>.services.ai.azure.com/api/projects/<your-project-name>

AZURE_AI_MODEL_DEPLOYMENT_NAME=<your-model-deployment-name>

중요

.env 파일을 절대 버전 제어에 커밋하지 마세요. 당신의 .gitignore 파일에 추가합니다.

호스팅된 에이전트를 인증하세요

호스트된 에이전트 샘플은 DefaultAzureCredential을 사용하여 인증합니다. 지원되는 원본 중 하나를 통해 자격 증명을 제공하도록 개발 환경을 구성합니다. 예를 들면 다음과 같습니다.

  • Azure CLI(az login)
  • Visual Studio Code 계정 로그인
  • Visual Studio 계정 로그인
  • 서비스 주체에 대한 환경 변수(AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET)

샘플을 실행하기 전에 Azure CLI az account show 또는 az account get-access-token 명령을 실행하여 로컬로 인증을 확인합니다.

호스트된 에이전트는 대화형 모드 또는 컨테이너 모드에서 실행할 수 있습니다.

에이전트 검사기에서 호스트된 에이전트 실행

F5 키를 눌러 디버깅을 사용하도록 설정된 로컬 HTTP 서버를 시작합니다. 대화형 테스트를 위해 Foundry 도구 키트 에이전트 검사기가 열리고 코드에서 중단점을 설정할 수 있습니다.

디버깅하지 않고 서버를 실행하려면 다음을 수행합니다.

python main.py

에이전트는 http://localhost:8088/에서 수신 대기합니다. curl(또는 HTTP 클라이언트)을 사용하여 테스트 프롬프트를 보냅니다.

curl -sS -H "Content-Type: application/json" -X POST http://localhost:8088/responses \
    -d '{"input": "Write a haiku about deploying cloud applications.", "stream": false}'

샘플 워크플로 프로젝트는 필요한 환경 변수를 사용하여 .env 파일을 만듭니다. Foundry 자격 증명으로 .env 파일을 만들거나 업데이트합니다.

  1. 운영 체제에 따라 환경 변수를 설정합니다.

    $env:FOUNDRY_PROJECT_ENDPOINT="https://<your-resource-name>.services.ai.azure.com/api/projects/<your-project-name>"
    $env:AZURE_AI_MODEL_DEPLOYMENT_NAME="your-deployment-name"
    

호스팅된 에이전트를 인증하세요

호스트된 에이전트 샘플은 DefaultAzureCredential을 사용하여 인증합니다. 지원되는 원본 중 하나를 통해 자격 증명을 제공하도록 개발 환경을 구성합니다. 예를 들면 다음과 같습니다.

  • Azure CLI(az login)
  • Visual Studio Code 계정 로그인
  • Visual Studio 계정 로그인
  • 서비스 주체에 대한 환경 변수(AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET)

샘플을 실행하기 전에 Azure CLI az account show 또는 az account get-access-token 명령을 실행하여 로컬로 인증을 확인합니다.

호스트된 에이전트는 대화형 모드 또는 컨테이너 모드에서 실행할 수 있습니다.

대화형 모드에서 호스트된 에이전트 실행

개발 및 테스트를 위해 호스트된 에이전트를 직접 실행합니다.

dotnet restore
dotnet build
dotnet run

컨테이너 모드에서 호스트된 에이전트 실행

컨테이너 에이전트를 시작하기 전에 로컬 플레이그라운드를 열어 시각화가 제대로 작동하는지 확인합니다.

컨테이너 모드에서 에이전트를 실행하려면 다음을 수행합니다.

  1. Visual Studio Code 명령 팔레트를 열고 Foundry Toolkit: Open Container Agent Playground Locally 명령을 실행합니다.
  2. 다음 명령을 사용하여 컨테이너화된 호스트 에이전트를 초기화합니다.
    dotnet restore
    dotnet build
    dotnet run
    
  3. 플레이그라운드 인터페이스를 통해 에이전트에 요청을 제출합니다. 예를 들어 "운전하기에 저렴하고 재미있는 새로운 전기 SUV를 위한 슬로건 만들기"와 같은 프롬프트를 입력합니다.
  4. 플레이그라운드 인터페이스에서 에이전트의 응답을 검토합니다.

호스트된 에이전트 워크플로 실행 시각화

Visual Studio Code 확장용 Microsoft Foundry 도구 키트는 워크플로의 에이전트가 상호 작용하고 공동 작업하는 방법을 보여주는 실시간 실행 그래프를 제공합니다. 프로젝트에서 이 시각화를 사용하기 위해 가시성을 활성화하세요.

csproj 파일에 다음 참조를 추가합니다.

<ItemGroup>
    <PackageReference Include="OpenTelemetry" Version="1.12.0" />
    <PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.12.0" />
    <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.12.0" />
    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="9.0.10" />
</ItemGroup>

다음 코드 조각을 포함하도록 프로그램을 업데이트합니다.

using System.Diagnostics;
using OpenTelemetry;
using OpenTelemetry.Logs;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;

var otlpEndpoint =
    Environment.GetEnvironmentVariable("OTLP_ENDPOINT") ?? "http://localhost:4319";

var resourceBuilder = OpenTelemetry
    .Resources.ResourceBuilder.CreateDefault()
    .AddService("WorkflowSample");

var s_tracerProvider = OpenTelemetry
    .Sdk.CreateTracerProviderBuilder()
    .SetResourceBuilder(resourceBuilder)
    .AddSource("Microsoft.Agents.AI.*") // All agent framework sources
    .SetSampler(new AlwaysOnSampler()) // Ensure all traces are sampled
    .AddOtlpExporter(options =>
    {
        options.Endpoint = new Uri(otlpEndpoint);
        options.Protocol = OpenTelemetry.Exporter.OtlpExportProtocol.Grpc;
    })
    .Build();

호스트된 에이전트 워크플로 모니터링 및 시각화

호스트된 에이전트 워크플로 실행을 실시간으로 모니터링하고 시각화하려면 다음을 수행합니다.

  1. 명령 팔레트를 엽니다(Ctrl+Shift+P).

  2. 다음 명령을 실행합니다. >Foundry Toolkit: Open Visualizer for Hosted Agents.

VS Code에서 실행 그래프를 표시하는 새 탭이 열립니다. 시각화는 워크플로가 진행됨에 따라 자동으로 업데이트되어 에이전트와 해당 상호 작용 간의 흐름을 표시합니다.

포트 충돌

포트 충돌의 경우 Visual Studio Code 확장 설정에 대한 Microsoft Foundry 도구 키트에서 시각화 포트를 설정하여 시각화 포트를 변경할 수 있습니다. 이렇게 하려면 다음 단계를 수행합니다.

  1. VS Code의 왼쪽 사이드바에서 기어 아이콘을 선택하여 설정 메뉴를 엽니다.
  2. Extensions > Microsoft Foundry Configuration 선택합니다.
  3. Hosted Agent Visualization Port 설정을 찾아 사용 가능한 포트 번호로 변경합니다.
  4. VS Code를 다시 시작하여 변경 내용을 적용합니다.

코드의 포트 변경

모든 포트 충돌의 경우 환경 변수를 설정하여 시각화 포트를 FOUNDRY_OTLP_PORT 변경합니다. 그에 따라 프로그램에서 OTLP 엔드포인트를 업데이트합니다.

예를 들어 포트를 4318로 변경하려면 다음 명령을 사용합니다.

  $env:FOUNDRY_OTLP_PORT="4318"

프로그램에서 새 포트 번호를 사용하도록 OTLP 엔드포인트를 업데이트합니다.

var otlpEndpoint =
    Environment.GetEnvironmentVariable("OTLP_ENDPOINT") ?? "http://localhost:4318";

호스트된 에이전트를 배포하십시오

호스트된 에이전트를 로컬로 테스트한 후 다른 팀 구성원과 애플리케이션에서 사용할 수 있도록 Foundry 작업 영역에 배포합니다.

중요

필수 구성 요소에 설명된 대로 Foundry 작업 영역에 호스트된 에이전트를 배포하는 데 필요한 권한을 부여해야 합니다. 필요한 역할 할당을 얻으려면 Azure 관리자와 협력해야 할 수 있습니다.

  1. 명령 팔레트를 열고 Foundry 도구 키트: 호스트된 에이전트 배포를 선택합니다. 배포 웹 보기가 열립니다.
  2. "배포 방법"에 대해 코드 또는 컨테이너를 선택합니다.
  3. "코드"를 사용하여 배포하는 경우 "패키지 모드"에 대해 원격 또는 로컬을 선택합니다.
  4. "컨테이너"를 사용하여 배포하는 경우 기본 ACR, 사용자 지정 ACR 또는 고객 ACR 이미지를 선택합니다.
  5. "에이전트 이름"이 자동으로 채워집니다.
  6. "다음" 단추를 선택합니다.
  7. 이 "검토 및 배포" 페이지는 모두 자동으로 채워집니다.
  8. "배포" 단추를 선택합니다.
  9. Visual Studio Code 명령 팔레트를 열고 Foundry Toolkit: Deploy Hosted Agent 명령을 실행합니다.
  1. Visual Studio Code 명령 팔레트를 열고 Foundry Toolkit: Deploy Hosted Agent 명령을 실행합니다.
  2. "배포 방법"에 대해 코드 또는 컨테이너를 선택합니다.
  3. "코드"를 사용하여 배포하는 경우 "패키지 모드"에 대해 원격 또는 로컬을 선택합니다.
  4. "컨테이너"를 사용하여 배포하는 경우 기본 ACR, 사용자 지정 ACR 또는 고객 ACR 이미지를 선택합니다.
  5. "에이전트 이름"이 자동으로 채워집니다.
  6. "다음" 단추를 선택합니다.
  7. 이 "검토 및 배포" 페이지는 모두 자동으로 채워집니다.
  8. "배포" 단추를 선택합니다.