오픈 소스 프레임워크를 사용하여 에이전트 애플리케이션을 빌드하는 경우 일반적으로 컨테이너화, 웹 서버 설정, 보안 통합, 메모리 지속성, 인프라 크기 조정, 데이터 전송, 계측 및 버전 롤백을 관리합니다. 이러한 작업은 다른 유형의 클라우드 환경에서 훨씬 더 어려워집니다.
Microsoft Foundry 에이전트 서비스의 호스트된 에이전트는 이러한 문제를 해결합니다. 이 완전 관리형 플랫폼을 사용하면 AI 에이전트를 안전하고 대규모로 배포하고 운영할 수 있습니다. 원활한 배포 및 관리를 통해 사용자 지정 에이전트 코드 또는 기본 에이전트 프레임워크를 사용할 수 있습니다.
필수 조건
- Microsoft Foundry 프로젝트
- 컨테이너화 및 Docker에 대한 기본 이해
- Azure Container Registry에 대한 숙지
- 기본 설정 에이전트 프레임워크에 대한 지식(LangGraph, Microsoft Agent Framework 또는 사용자 지정 코드)
주요 개념 이해
호스팅된 에이전트
호스트된 에이전트는 Foundry 에이전트 서비스에서 실행되는 컨테이너화된 에이전트 AI 애플리케이션입니다. 프롬프트 기반 에이전트와 달리 호스트된 에이전트는 코드를 통해 빌드되고 Microsoft 관리 종량제 인프라에 컨테이너 이미지로 배포됩니다.
호스트된 에이전트는 만들기, 시작, 업데이트, 중지, 삭제 등의 표준 수명 주기를 따릅니다. 각 단계에서는 에이전트 배포를 효과적으로 관리하기 위한 특정 기능 및 상태 전환을 제공합니다.
비고
호스트된 에이전트는 현재 미리 보기로 제공됩니다. 미리 보기 중의 호스팅 가격 및 제한 사항에 대한 정보는 Microsoft Foundry 홈페이지를 참조하세요.
호스팅 어댑터
호스팅 어댑터는 인기 있는 에이전트 프레임워크를 Microsoft Foundry 호환 HTTP 서비스로 자동으로 변환하는 프레임워크 추상화 계층입니다. 이 어댑터는 REST API 및 메시지 처리를 수동으로 구현할 필요가 없습니다.
호스팅 어댑터는 개발자에게 다음과 같은 몇 가지 주요 이점을 제공합니다.
한 줄 배포: 복잡한 에이전트 배포를 필요한 모든 HTTP 엔드포인트, 스트리밍 지원 및 Foundry 프로토콜 준수를 사용하여 에이전트를 from_langgraph(my_agent).run() 즉시 호스트하는 단일 코드 줄(localhost:8088)로 변환합니다.
자동 프로토콜 변환: 어댑터는 Foundry 요청/응답 형식과 에이전트 프레임워크의 네이티브 데이터 구조 간의 모든 복잡한 변환을 처리합니다. 다음 활동이 포함됩니다.
- 대화 관리
- 메시지 직렬화
- 스트리밍 이벤트 생성
기본 제공 프로덕션 기능: 추가 구성 없이 다음과 같은 엔터프라이즈 지원 기능을 자동으로 가져옵니다.
- OpenTelemetry 추적
- CORS(원본 간 리소스 공유) 지원
- SSE(서버 전송 이벤트) 스트리밍
- 구조적 로깅
Seamless Foundry 통합: 로컬로 개발된 에이전트는 Foundry 응답 API, 대화 관리 및 인증 흐름에서 즉시 작동합니다. 이 통합은 개발 프레임워크와 Azure 프로덕션 AI 플랫폼 간의 격차를 해소합니다.
관리되는 서비스 기능
파운드리 에이전트 서비스 처리합니다:
- 에이전트의 프로비저닝 및 자동 스케일링
- 대화 조율 및 상태 관리.
- ID 관리.
- Microsoft Foundry 도구 및 모델과의 통합
- 기본 제공 관찰 기능 및 평가 기능.
- 엔터프라이즈급 보안, 규정 준수 및 거버넌스.
중요합니다
Foundry 에이전트 서비스를 사용하여 Microsoft가 아닌 서버 또는 에이전트와 상호 작용하는 에이전트를 호스트하는 경우 사용자 고유의 위험에 처하게 됩니다. Microsoft 이외의 서버 또는 에이전트와 공유하는 모든 데이터를 검토하고 데이터의 보존 및 위치에 대한 비 Microsoft 사례를 인식하는 것이 좋습니다. 관련 의미와 함께 데이터가 조직의 Azure 규정 준수 및 지리적 경계 외부로 흐르는지 여부를 관리하는 것은 사용자의 책임입니다.
프레임워크 및 언어 지원
| 프레임워크 | 파이썬 | C# |
|---|---|---|
| Microsoft 에이전트 프레임워크 | ✅ | ✅ |
| LangGraph | ✅ | ❌ |
| 사용자 지정 코드 | ✅ | ✅ |
공용 어댑터 패키지
- Python:
azure-ai-agentserver-core,azure-ai-agentserver-agentframeworkazure-ai-agentserver-langgraph - .NET:
Azure.AI.AgentServer.Core,Azure.AI.AgentServer.AgentFramework
코드 패키지하고 로컬에서 테스트하기
Microsoft Foundry에 배포하기 전에 에이전트를 로컬로 빌드하고 테스트할 수 있습니다.
- 에이전트를 로컬로 실행: 호스팅 어댑터를 사용하여 에이전트를 REST API로 자동으로 노출하는 로컬 웹 서버를 시작합니다.
-
REST 호출을 사용하여 테스트: 로컬 서버가 실행
localhost:8088되고 표준 HTTP 요청을 수락합니다. -
컨테이너 이미지 빌드: 패키지를 사용하여
azure-ai-agents-server-*원본 파일에서 컨테이너 이미지를 만들어 에이전트 코드를 래핑합니다. -
Azure 개발자 CLI 사용: 패키징 및 배포 프로세스를 간소화하는 데 사용합니다
azd.
REST API를 사용한 로컬 테스트
호스팅 어댑터를 사용하여 에이전트를 로컬로 실행하면 웹 서버 localhost:8088가 자동으로 시작됩니다. REST 클라이언트를 사용하여 에이전트를 테스트할 수 있습니다.
@baseUrl = http://localhost:8088
POST {{baseUrl}}/responses
Content-Type: application/json
{
"input": {
"messages": [
{
"role": "user",
"content": "Where is Seattle?"
}
]
}
}
이 로컬 테스트 방법을 사용하면 다음을 수행할 수 있습니다.
- 컨테이너화 전에 에이전트 동작의 유효성을 검사합니다.
- 개발 환경에서 문제를 디버그합니다.
- 다양한 입력 시나리오를 신속하게 테스트합니다.
- Foundry 응답 API와의 API 호환성을 확인합니다.
호스트된 에이전트 만들기
Azure Developer CLI를 사용하여 호스트된 에이전트 만들기
개발자는 Azure 개발자 CLIai agent 확장을 사용하여 Microsoft Foundry에서 에이전트 애플리케이션을 원활하고 신속하게 프로비전하고 배포할 수 있습니다.
이 확장은 Foundry 리소스, 모델, 도구 및 지식 리소스의 설정을 간소화합니다. 예를 들어 사용자 고유의 컨테이너를 가져오기 위한 Azure Container Registry 설정, 로깅 및 모니터링을 위한 Application Insights, 관리 ID 및 RBAC(역할 기반 액세스 제어)를 간소화합니다. 다시 말해 Foundry Agent Service는 호스팅된 에이전트 시작에 필요한 모든 기능을 제공합니다.
이 확장은 현재 미리 보기로 제공됩니다. 프로덕션용으로 사용하지 않는 것이 좋습니다.
시작하기:
디바이스에 Azure 개발자 CLI를 설치합니다.
Azure 개발자 CLI가 이미 설치되어 있는 경우 최신 버전
azd이 설치되어 있는지 확인합니다.azd version최신 버전으로 업그레이드하려면 Azure 개발자 CLI 설치 또는 업데이트를 참조하세요.
기존 Foundry 리소스를 사용하지 않고 필요한 모든 인프라 프로비저닝 및 RBAC를 간소화하려는 경우 Foundry 시작 템플릿을 다운로드합니다. 템플릿은 확장을 자동으로 설치합니다
ai agent. 메시지가 표시되면 환경 이름을 제공하여rg-<name-you-provide>라는 리소스 그룹을 만들 수 있습니다.azd init -t https://github.com/Azure-Samples/azd-ai-starter-basic설치된 모든 확장을 확인하려면 다음을 수행합니다.
azd ext list최신 버전의 Foundry
azd에이전트 확장이 설치되어 있는 것이 좋습니다.에이전트를 배포하려는 기존 Foundry 프로젝트가 있고 에이전트를 배포하는 데 필요한 추가 리소스만 프로비전하려는 경우 나중에 다음 명령을 실행합니다.
azd ai agent init --project-id /subscriptions/[SUBSCRIPTIONID]/resourceGroups/[RESOURCEGROUPNAME]/providers/Microsoft.CognitiveServices/accounts/[ACCOUNTNAME]/projects/[PROJECTNAME]에이전트 정의에서 매개 변수를 구성하여 템플릿을 초기화합니다.
azd ai agent init -m <repo-path-to-agent.yaml>Foundry에서 호스트하려는 에이전트에 대한 GitHub 리포지토리에는 애플리케이션 코드, 참조된 종속성, 컨테이너화용 Dockerfile 및
agent.yaml에이전트의 정의가 포함된 파일이 포함됩니다. 에이전트를 환경 설정하려면 요청받은 매개 변수의 값을 설정합니다. 다운로드한 템플릿을 바탕으로Services의 에이전트를azure.yaml에 등록하는 작업입니다. GitHub에서 샘플을 시작할 수 있습니다.azd기반 배포와 관련된 모든 Bicep 및 구성 파일을 열고 보려면 다음 명령을 사용합니다.code .Foundry에서 에이전트 코드를 관리되는 애플리케이션으로 패키지, 프로비전 및 배포합니다.
azd up이 명령은 명령의 기본 실행을 추상화합니다
azd infra generate.azd provisionazd deploy또한 Foundry 에이전트 서비스에 호스트된 에이전트 버전 및 배포를 만듭니다. 호스트된 에이전트의 버전이 이미 있는 경우 동일한 에이전트azd의 새 버전을 만듭니다. 호스트된 에이전트 배포 및 버전을 시작, 중지 및 삭제하는 방법과 함께 버전이 아닌 업데이트를 수행하는 방법에 대한 자세한 내용은 이 문서의 관리 섹션 을 참조하세요.
RBAC를 활성화했는지 확인하여, azd 가 서비스를 및 모델을 프로비전할 수 있도록 하십시오.
역할 및 권한
기존 Foundry 리소스가 있고 호스트된 에이전트를 배포하기 위해 새 Foundry 프로젝트를 만들어야 하는 경우 Azure AI 소유자 역할이 필요합니다.
기존 프로젝트가 있고 프로젝트에 모델 배포 및 컨테이너 레지스트리를 만들려면 Azure 구독의 기여자 역할 외에도 Foundry에서 Azure AI 소유자 역할이 필요합니다.
프로젝트에서 호스트된 에이전트를 배포하도록 모든 사항이 구성된 경우, Foundry 계정의 Reader 권한과 프로젝트의 Azure AI User 권한이 필요합니다.
리소스 정리
불필요한 요금을 방지하려면 애플리케이션 작업을 완료한 후 Azure 리소스를 정리하는 것이 중요합니다.
정리 시기:
- 애플리케이션 테스트 또는 시연을 완료한 후
- 애플리케이션이 더 이상 필요하지 않거나 다른 프로젝트 또는 환경으로 전환하는 경우
- 개발을 완료하고 애플리케이션을 서비스 해제할 준비가 되면
연결된 모든 리소스를 삭제하고 애플리케이션을 종료하려면 다음 명령을 실행합니다.
azd down
이 프로세스를 완료하는 데 최대 20분이 걸릴 수 있습니다.
에이전트를 만든 후 Foundry 포털에 표시됩니다.
호스트된 에이전트 관리
에이전트 업데이트
버전이 지정된 업데이트와 버전이 없는 업데이트의 두 가지 방법으로 에이전트를 업데이트할 수 있습니다.
버전이 지정된 업데이트
버전이 지정된 업데이트를 사용하여 에이전트에 대한 런타임 구성을 수정합니다. 이 프로세스는 에이전트의 새 버전을 만듭니다.
새 버전을 트리거하는 변경 내용은 다음과 같습니다.
- 컨테이너 이미지: 새 이미지 또는 태그로 업데이트합니다.
- 리소스 할당: CPU 또는 메모리 설정 변경
- 환경 변수: 환경 변수 추가, 제거 또는 수정
- 프로토콜 버전: 지원되는 프로토콜 버전을 업데이트합니다.
새 버전을 만들려면 생성 예제에 표시된 것과 동일한 client.agents.create_version() 메서드를 업데이트된 구성과 함께 사용합니다.
버전이 아닌 업데이트
버전이 지정되지 않은 업데이트를 사용하여 수평 크기 조정 구성(최소 및 최대 복제본) 또는 에이전트 메타데이터(예: 설명 및 태그)를 수정합니다. 이 프로세스는 새 버전을 만들지 않습니다.
az cognitiveservices agent update
이 코드의 인수는 다음과 같습니다.
| Argument | 필수 | Description |
|---|---|---|
--account-name -a |
✅ | Foundry Tools의 계정 이름입니다. |
--agent-version |
✅ | Foundry Tools 호스트된 에이전트 버전입니다. |
--name -n |
✅ | Foundry Tools 호스트된 에이전트 이름입니다. |
--project-name |
✅ | AI 프로젝트 이름입니다. |
--description |
❌ | 에이전트에 대한 설명입니다. |
--max-replicas |
❌ | 이는 수평적 크기 조정을 위해 필요한 최대 복제본 수를 나타냅니다. |
--min-replicas |
❌ | 이는 수평적 크기 조정을 위해 필요한 최소 복제본 수를 의미합니다. |
--tags |
❌ | 공백으로 구분된 태그: key[=value] [key[=value] ...]. 두 개의 작은따옴표('')를 사용하여 기존 태그를 지웁니다. |
예제는 다음과 같습니다.
az cognitiveservices agent update --account-name myAccount --project-name myProject --name myAgent --agent-version 1 --min-replicas 1 --max-replicas 2
에이전트 배포 시작
호스트된 에이전트 버전을 만든 후, CLI 확장을 사용하여 배포를 시작하고 요청에 사용할 수 있도록 활성화할 수 있습니다. 중지된 호스팅된 에이전트를 다시 시작할 수도 있습니다.
az cognitiveservices agent start
이 코드의 인수는 다음과 같습니다.
| Argument | 필수 | Description |
|---|---|---|
--account-name -a |
✅ | Foundry 도구 계정 이름 |
--agent-version |
✅ | Foundry Tools 호스트된 에이전트 버전 |
--name -n |
✅ | Foundry Tools 호스트된 에이전트 이름 |
--project-name |
✅ | AI 프로젝트 이름 |
--min-replicas |
❌ | 수평 크기 조정을 위한 최소 복제본 수 |
--max-replicas |
❌ | 수평 크기 조정을 위한 최대 복제본 수 |
에이전트 시작 작업 중에 최대 및 최소 복제본이 지정되지 않은 경우 사용된 기본값은 두 인수 모두에 대해 1입니다.
예제는 다음과 같습니다.
az cognitiveservices agent start --account-name myAccount --project-name myProject --name myAgent --agent-version 1
에이전트를 시작하는 경우:
- 현재 상태: 중지됨
- 허용되는 작업: 시작
- 일시적 상태: 시작
- 최종 상태: 시작됨 (성공한 경우) 또는 실패 (실패한 경우)
에이전트 배포 중지
에이전트 배포에 대해 구성된 최대 복제본을 0으로 설정하여 재정의하고 다음 명령을 사용하여 호스트된 에이전트를 강제로 중지할 수 있습니다.
az cognitiveservices agent stop
이 코드의 인수는 다음과 같습니다.
| Argument | 필수 | Description |
|---|---|---|
--account-name -a |
✅ | Foundry 도구 계정 이름 |
--agent-version |
✅ | Foundry Tools 호스트된 에이전트 버전 |
--name -n |
✅ | Foundry Tools 호스트된 에이전트 이름 |
--project-name |
✅ | AI 프로젝트 이름 |
예제는 다음과 같습니다.
az cognitiveservices agent stop --account-name myAccount --project-name myProject --name myAgent --agent-version 1
에이전트를 중지하는 경우:
- 현재 상태: 실행 중
- 허용되는 작업: 중지
- 일시적 상태: 중지
- 최종 상태: 중지됨 (성공한 경우) 또는 실행 중(실패한 경우)
에이전트 삭제
제거하려는 항목에 따라 다양한 수준에서 에이전트를 삭제할 수 있습니다.
배포 작업만 삭제
다음 명령은 실행 중인 에이전트를 중지하지만 나중에 사용할 에이전트 버전을 유지합니다. 에이전트를 일시적으로 중지하거나 다른 버전으로 전환하려는 경우 사용합니다.
az cognitiveservices agent delete-deployment
이 코드의 인수는 다음과 같습니다.
| Argument | 필수 | Description |
|---|---|---|
--account-name -a |
✅ | Foundry 도구 계정 이름 |
--agent-version |
✅ | Foundry Tools 호스트된 에이전트 버전 |
--name -n |
✅ | Foundry Tools 호스트된 에이전트 이름 |
--project-name |
✅ | AI 프로젝트 이름 |
에이전트 삭제
다음 명령은 에이전트에 대한 모든 버전 및 배포를 제거합니다. 에이전트가 더 이상 필요하지 않고 연결된 모든 리소스를 정리하려는 경우 사용합니다.
에이전트 배포를 제공하고 agent_version 삭제하면 해당 버전과 연결된 에이전트 정의가 삭제됩니다. 에이전트 배포가 실행 중인 경우 이 작업은 성공하지 못합니다.
제공하지 agent_version않으면 에이전트 이름과 연결된 모든 에이전트 버전이 삭제됩니다.
az cognitiveservices agent delete
이 코드의 인수는 다음과 같습니다.
| Argument | 필수 | Description |
|---|---|---|
--account-name -a |
✅ | Foundry Tools의 계정 이름입니다. |
--name -n |
✅ | Foundry Tools 호스트된 에이전트 이름입니다. |
--project-name |
✅ | AI 프로젝트 이름입니다. |
--agent-version |
❌ | Foundry Tools 호스트된 에이전트 버전입니다. 제공하지 않으면 명령은 모든 버전을 삭제합니다. |
호스트된 에이전트 나열
호스트된 에이전트의 모든 버전 나열
az cognitiveservices agent list-versions
이 코드의 인수는 다음과 같습니다.
| Argument | 필수 | Description |
|---|---|---|
--account-name -a |
✅ | Foundry 도구 계정 이름 |
--name -n |
✅ | Foundry Tools 호스트된 에이전트 이름 |
--project-name |
✅ | AI 프로젝트 이름 |
호스트된 에이전트의 세부 정보 표시
az cognitiveservices agent show
이 코드의 인수는 다음과 같습니다.
| Argument | 필수 | Description |
|---|---|---|
--account-name -a |
✅ | Foundry 도구 계정 이름 |
--name -n |
✅ | Foundry Tools 호스트된 에이전트 이름 |
--project-name |
✅ | AI 프로젝트 이름 |
호스트된 에이전트 호출
에이전트 플레이그라운드 UI에서 호스트된 에이전트를 보고 테스트할 수 있습니다. 호스트된 에이전트는 Azure AI Projects SDK를 사용하여 호출할 수 있는 OpenAI 응답 호환 API를 노출합니다.
#!/usr/bin/env python3
"""
Call a deployed Microsoft Foundry agent
"""
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import AgentReference
# Configuration
PROJECT_ENDPOINT = "https://your-project.services.ai.azure.com/api/projects/your-project"
AGENT_NAME = "your-agent-name"
AGENT_VERSION = "1" # Optional: specify version, or use latest
# Initialize the client and retrieve the agent
client = AIProjectClient(endpoint=PROJECT_ENDPOINT, credential=DefaultAzureCredential())
agent = client.agents.retrieve(agent_name=AGENT_NAME)
# Get the OpenAI client and send a message
openai_client = client.get_openai_client()
response = openai_client.responses.create(
input=[{"role": "user", "content": "Hello! What can you help me with?"}],
extra_body={"agent": AgentReference(name=agent.name, version=AGENT_VERSION).as_dict()}
)
print(f"Agent response: {response.output_text}")
호스트된 에이전트와 함께 도구 사용
호스트된 에이전트를 Foundry 도구로 실행하려면 Foundry에서 MCP(원격 모델 컨텍스트 프로토콜) 서버에 대한 연결을 만들어야 합니다.
연결은 RemoteMCPTool 다음 인증 메커니즘을 지원합니다.
- 저장된 자격 증명: 시스템에 저장된 미리 정의된 자격 증명을 사용합니다.
- 프로젝트 관리 ID: Foundry 프로젝트에 관리 ID를 사용합니다.
인증 방법을 선택합니다.
공유 ID의 경우: 에이전트의 모든 사용자가 동일한 ID를 사용해야 하는 경우 키 기반 또는 Foundry 프로젝트 관리 ID 인증을 사용합니다. 개별 사용자 ID 또는 컨텍스트는 이러한 메서드를 사용하여 유지되지 않습니다.
개별 사용자 컨텍스트의 경우: 에이전트의 모든 사용자가 자신의 계정을 사용하여 MCP 서버로 인증해야 하는 경우 OAuth ID 통과를 사용합니다. 이 방법은 개인 사용자 컨텍스트를 유지합니다.
연결을 만드는 RemoteMCPTool 방법을 알아보려면 모델 컨텍스트 프로토콜 서버에 연결을 참조하세요.
환경 변수를 사용하여 에이전트 코드 내의 원격 MCP 서버에 대한 Foundry 도구 연결 ID를 참조하고 로컬로 테스트하기 위해 호스팅 어댑터로 래핑합니다. Docker 이미지를 빌드 및 ACR(Azure Container Registry)에 푸시하고, ACR에 대한 이미지 끌어오기 권한을 구성하고, 위에서 설명한 지침에 따라 기능 호스트를 만들고, Foundry에 에이전트를 등록합니다.
Foundry SDK를 사용하여 도구 정의로 호스트된 에이전트 버전을 만듭니다.
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import ImageBasedHostedAgentDefinition, ProtocolVersionRecord, AgentProtocol
from azure.identity import DefaultAzureCredential
# Initialize the client
client = AIProjectClient(
endpoint="https://your-project.services.ai.azure.com/api/projects/project-name",
credential=DefaultAzureCredential()
)
# Create the agent from a container image
agent = client.agents.create_version(
agent_name="my-agent",
description="Coding agent expert in assisting with github issues",
definition=ImageBasedHostedAgentDefinition(
container_protocol_versions=[ProtocolVersionRecord(protocol=AgentProtocol.RESPONSES, version="v1")],
cpu="1",
memory="2Gi",
image="your-registry.azurecr.io/your-image:tag",
tools=[
{
"type": "code_interpreter"
},
{
"type": "mcp",
"project_connection_id": "github_connection_id"
}
],
environment_variables={
"AZURE_AI_PROJECT_ENDPOINT": "https://your-project.services.ai.azure.com/api/projects/project-name",
"API_KEY": "your-api-key",
"MODEL_NAME": "gpt-4",
"CUSTOM_SETTING": "value"
}
)
)
Azure CognitiveServices CLI를 사용하거나 새 Foundry UI의 에이전트 작성기 내에서 에이전트를 시작합니다.
현재 지원되는 기본 제공 Foundry 도구는 다음과 같습니다.
- 코드 인터프리터
- 이미지 생성
- Web Search
호스트된 에이전트를 사용하여 관찰성 관리
호스트된 에이전트는 Application Insights 또는 사용자가 지정한 OpenTelemetry 수집기 엔드포인트를 사용하여 기본 프레임워크에서 Microsoft Foundry로 OpenTelemetry 추적, 메트릭 및 로그를 노출하도록 지원합니다.
CLI 확장을 사용하는 azd ai agent 경우 Application Insights가 자동으로 프로비전되고 Foundry 프로젝트에 연결됩니다. 추적을 Application Insights로 내보낼 수 있도록 프로젝트의 관리 ID에 Foundry 리소스에 대한 Azure AI 사용자 역할이 부여됩니다.
Foundry SDK를 사용하는 경우 이러한 단계를 독립적으로 수행해야 합니다. 이 문서에서 자세히 알아보세요.
호스팅 어댑터는 다음을 제공합니다.
-
OpenTelemetry 설치 완료:
TracerProvider,MeterProvider.LoggerProvider - 자동 계측: HTTP 요청, 데이터베이스 호출, AI 모델 호출.
- Azure Monitor 통합: 내보내기, 서식 지정, 인증.
- 성능 최적화: 샘플링, 일괄 처리, 리소스 검색.
- 라이브 메트릭: Application Insights의 실시간 대시보드.
로컬 추적
AI 도구 키트의 추적에 따라 VS Code(Visual Studio Code)용 AI 도구 키트를 설치하고 설정합니다.
환경 변수
OTEL_EXPORTER_ENDPOINT를 설정하고 내보냅니다. 수집기 시작 단추를 선택한 후 VS Code용 AI 도구 키트에서 엔드포인트를 찾을 수 있습니다.AI 도구 키트에서 에이전트를 호출하고 추적을 찾습니다.
Foundry 포털에서의 추적
플레이그라운드의 추적 탭에서 호스트된 에이전트에 대한 추적 을 검토할 수도 있습니다.
OpenTelemetry 호환 서버로 추적 내보내기
고유한 OpenTelemetry 수집기 또는 호환되는 관찰성 플랫폼으로 추적을 보내려면 환경 변수 OTEL_EXPORTER_ENDPOINT를 사용합니다.
호스트된 에이전트를 사용하여 대화 관리
호스트된 에이전트는 Microsoft Foundry의 대화 관리 시스템과 원활하게 통합됩니다. 이 통합을 통해 수동 상태 관리 없이 상태 저장 다중 턴 상호 작용을 수행할 수 있습니다.
호스트된 에이전트와의 대화 작동 방식
대화 개체: Foundry는 여러 에이전트 상호 작용에 걸쳐 지속되는 고유 식별자를 사용하여 지속성 대화 개체를 자동으로 만듭니다. 사용자가 호스트된 에이전트와 대화를 시작하면 플랫폼은 이 대화 컨텍스트를 자동으로 유지 관리합니다.
상태 관리: 대화 기록을 수동으로 전달하는 기존 API와 달리 호스트된 에이전트는 자동으로 대화 컨텍스트를 받습니다. Foundry 런타임은 다음을 관리합니다.
- 이전 메시지 및 응답.
- 도구 호출 및 해당 출력
- 에이전트 지침 및 구성.
- 대화 메타데이터 및 타임스탬프를 제공합니다.
대화 항목: 각 대화에는 자동으로 유지 관리되는 구조화된 항목이 포함됩니다.
- 메시지: 타임스탬프를 사용하는 사용자 입력 및 에이전트 응답입니다.
- 도구 호출: 매개 변수 및 결과가 있는 함수 호출입니다.
- 도구 출력: 외부 서비스의 구조적 응답입니다.
- 시스템 메시지: 내부 상태 및 컨텍스트 정보입니다.
대화 지속성 및 재사용
세션 간 연속성: 대화는 개별 요청을 넘어 지속됩니다. 사용자는 전체 컨텍스트가 유지 관리된 이전 토론으로 돌아갈 수 있습니다.
대화 재사용: 사용자는 여러 채널 및 애플리케이션에서 동일한 대화에 액세스할 수 있습니다. 대화는 일관된 상태와 기록을 유지합니다.
자동 정리: Foundry는 프로젝트의 보존 정책에 따라 대화 수명 주기 및 정리를 관리합니다.
호스트된 에이전트 평가 및 테스트
Microsoft Foundry는 호스트된 에이전트용으로 설계된 포괄적인 평가 및 테스트 기능을 제공합니다. 이러한 기능을 사용하여 성능의 유효성을 검사하고, 버전을 비교하고, 배포 전에 품질을 보장할 수 있습니다.
기본 제공 평가 기능
에이전트 성능 평가: Foundry에는 호스트된 에이전트의 효율성을 평가하기 위한 기본 제공 평가 메트릭이 포함되어 있습니다.
- 응답 품질 및 관련성
- 작업 완료 정확도
- 도구 사용 효율성
- 대화 일관성 및 컨텍스트 보존
- 응답 시간 및 효율성 메트릭
에이전트별 평가: 에이전트 워크플로용으로 설계된 기본 제공 평가기와 함께 Azure AI Evaluation SDK를 사용하여 호스트된 에이전트를 평가합니다. SDK는 의도 확인, 작업 준수 및 도구 사용 정확도와 같은 주요 차원에서 에이전트 성능을 측정하기 위한 특수 평가자를 제공합니다.
호스트된 에이전트에 대한 워크플로 테스트
개발 테스트: 배포 전에 에이전트 플레이그라운드 및 로컬 테스트 도구를 사용하여 개발 중에 호스트된 에이전트를 로컬로 테스트합니다.
스테이징 유효성 검사: 프로덕션에서 격리를 유지하면서 실제 Foundry 인프라를 사용하여 동작의 유효성을 검사하기 위해 스테이징 환경에 배포합니다.
프로덕션 모니터링: 자동화된 평가 실행을 사용하여 배포된 호스트된 에이전트를 지속적으로 모니터링하여 성능 저하 또는 문제를 감지합니다.
구조적 평가 방법
테스트 데이터 세트 만들기: 다음을 다루는 포괄적인 테스트 데이터 세트를 만듭니다.
- 일반적인 사용자 상호 작용 패턴입니다.
- 에지 사례 및 오류 시나리오.
- 복수 회차 대화 흐름.
- 도구 사용 시나리오.
- 성능 스트레스 테스트.
지원되는 평가 메트릭: Azure AI 평가 SDK는 에이전트 워크플로에 대해 다음 평가자를 제공합니다.
- 의도 해결: 에이전트가 사용자 요청을 식별하고 이해하는 정도를 측정합니다.
- 작업 준수: 에이전트의 응답이 할당된 작업 및 시스템 지침을 준수하는지 여부를 평가합니다.
- 도구 호출 정확도: 에이전트가 사용자 요청에 대해 올바른 함수 도구를 호출하는지 여부를 평가합니다.
- 추가 품질 메트릭: 에이전트 메시지와 관련성, 일관성 및 유창성을 사용할 수 있습니다.
평가 모범 사례
대표 데이터로 테스트: 실제 사용자 상호 작용 및 사용 사례를 나타내는 평가 데이터 세트를 만듭니다.
에이전트 성능 모니터링: Foundry 포털을 사용하여 에이전트 성능을 추적하고 대화 추적을 검토합니다.
반복 평가 사용: 개발 중에 에이전트 버전을 정기적으로 평가하여 문제를 조기에 파악하고 개선 사항을 측정합니다.
에이전트 평가에 대한 자세한 내용은 AI 에이전트를 로컬로 평가 및 에이전트 평가기를 참조하세요.
호스트된 에이전트를 채널에 게시
게시는 전용 엔드포인트, 독립 ID 및 거버넌스 기능을 사용하여 개발 자산에서 관리되는 Azure 리소스로 호스트된 에이전트를 변환합니다. 호스트된 에이전트를 게시한 후 여러 채널 및 플랫폼에서 공유할 수 있습니다.
호스트된 에이전트에 대한 게시 프로세스
호스트된 에이전트를 게시하면 Microsoft Foundry가 자동으로 다음을 수행합니다.
- 전용 호출 URL을 사용하여 에이전트 애플리케이션 리소스를 만듭니다.
- 프로젝트의 공유 ID와는 별개의 고유한 에이전트 ID를 프로비전합니다.
- 검색 및 거버넌스를 위해 Microsoft Entra 에이전트 레지스트리에 에이전트를 등록합니다.
- 새 에이전트 버전을 배포할 때 일관성을 유지하는 안정적인 엔드포인트 액세스를 사용하도록 설정합니다.
포털에서 편집할 수 있는 프롬프트 기반 에이전트와 달리 호스트된 에이전트는 동일한 게시 및 공유 기능을 확보하면서 코드 기반 구현을 유지 관리합니다.
사용 가능한 게시 채널
웹 애플리케이션 미리 보기: 공유 가능한 즉시 웹 인터페이스를 가져와 관련자와 호스트된 에이전트를 시연하고 테스트합니다.
Microsoft 365 Copilot 및 Teams: 간소화된 코드 없는 게시 흐름을 통해 호스트된 에이전트를 Microsoft 365 Copilot 및 Microsoft Teams에 직접 통합합니다. 에이전트가 에이전트 스토어에 나타나 조직 또는 공유 범위로 배포될 수 있습니다.
안정적인 API 엔드포인트: 에이전트 버전을 업데이트할 때 변경되지 않은 일관된 REST API를 통해 프로그래밍 방식으로 호스트된 에이전트에 액세스합니다.
사용자 지정 애플리케이션: 안정적인 엔드포인트 및 SDK 통합을 사용하여 호스트된 에이전트를 기존 애플리케이션에 포함합니다.
호스트된 에이전트에 대한 게시 고려 사항
ID 관리: 게시된 호스트된 에이전트는 자체 에이전트 ID를 받으며, 이를 위해서는 에이전트가 액세스하는 모든 Azure 리소스에 대한 권한을 다시 구성해야 합니다. 공유 개발 ID에 대한 권한은 자동으로 전송되지 않습니다.
버전 제어: 게시는 현재 에이전트 버전을 참조하는 배포를 만듭니다. 퍼블릭 엔드포인트를 변경하지 않고 새 버전을 배포하여 게시된 에이전트를 업데이트할 수 있습니다.
인증: 게시된 에이전트는 기본적으로 RBAC 기반 인증을 지원합니다. 이 인증에는 Microsoft 365 채널에 게시할 때 Azure Bot Service 통합에 대한 자동 권한 처리가 포함됩니다.
자세한 게시 지침은 에이전트 게시 및 공유를 참조하세요.
호스트된 에이전트 엔드포인트 문제 해결
에이전트 배포가 실패하면 배포 로그 보기를 선택하여 오류 로그를 봅니다. 4xx 오류가 발생하면 다음 표를 사용하여 다음 단계를 확인합니다. 에이전트 엔드포인트가 5xx 상태 코드를 반환하는 경우 Microsoft 지원에 문의하세요.
| 오류 분류 | HTTP 상태 코드 | 해결 방법 |
|---|---|---|
SubscriptionIsNotRegistered |
400 | 기능 또는 구독 공급자를 등록합니다. |
InvalidAcrPullCredentials(AcrPullWithMSIFailed) |
401 | 관리 ID 또는 레지스트리 RBAC를 수정합니다. |
UnauthorizedAcrPull(AcrPullUnauthorized) |
403 | 올바른 자격 증명 또는 ID를 제공합니다. |
AcrImageNotFound |
404 | 이미지 이름/태그를 수정하거나 이미지를 게시합니다. |
RegistryNotFound |
400/404 | 레지스트리 DNS/서버 맞춤법 또는 네트워크 연결 가능성을 수정합니다. |
ValidationError |
400 | 잘못된 요청 필드를 수정합니다. |
UserError (제네릭) |
400 | 메시지를 검사하고 구성을 수정합니다. |
미리 보기 세부 정보 이해
미리 보기 중 제한 사항
| Dimension | 한계 |
|---|---|
| Azure 구독당 호스트된 에이전트가 있는 Microsoft Foundry 리소스 | 100 |
| Foundry 리소스당 호스트된 에이전트의 최대 수 | 200 |
에이전트 배포에 따른 최대 min_replica 수 |
2 |
에이전트 배포에 따른 최대 max_replica 수 |
5 |
호스팅 가격 책정
관리형 호스팅 런타임 요금은 프리뷰 기간이 종료되는 2026년 2월 1일부터 청구될 예정입니다. 가격 책정에 대한 업데이트는 Foundry 가격 책정 페이지를 확인하세요.
지역 가용성
현재 호스트된 에이전트는 미국 중북부에서만 지원됩니다.
프라이빗 네트워킹 지원
현재 호스트된 에이전트는 네트워크 격리 Foundry 리소스 내에서 표준 설정 으로 만들 수 없습니다.