1단계: 첫 번째 에이전트

단 몇 줄의 코드로 에이전트를 만들고 응답을 받습니다.

dotnet add package Microsoft.Agents.AI.Foundry --prerelease

에이전트를 만듭니다.

using System;
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;

var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")
    ?? throw new InvalidOperationException("Set AZURE_OPENAI_ENDPOINT");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-4o-mini";

AIAgent agent = new AIProjectClient(new Uri(endpoint), new DefaultAzureCredential())
    .AsAIAgent(
        model: deploymentName,
        instructions: "You are a friendly assistant. Keep your answers brief.",
        name: "HelloAgent");

Warning

DefaultAzureCredential 은 개발에 편리하지만 프로덕션 환경에서 신중하게 고려해야 합니다. 프로덕션 환경에서는 특정 자격 증명(예: ManagedIdentityCredential)을 사용하여 대기 시간 문제, 의도하지 않은 자격 증명 검색 및 대체 메커니즘의 잠재적인 보안 위험을 방지하는 것이 좋습니다.

다음을 실행합니다.

Console.WriteLine(await agent.RunAsync("What is the largest city in France?"));

또는 응답을 스트리밍합니다.

await foreach (var update in agent.RunStreamingAsync("Tell me a one-sentence fun fact."))
{
    Console.Write(update);
}

Tip

전체 실행 가능한 샘플 애플리케이션은 여기 를 참조하세요.

pip install agent-framework-foundry azure-identity

agent-framework-foundry 패키지는 Microsoft Foundry 통합과 함께 agent-framework-core를 설치합니다. agent-framework 메타패키지는 다른 많은 선택적 통합과 함께 agent-framework-core도 설치합니다.

az login을 실행하여 Azure CLI로 로그인합니다. 다음 예제에서는 model를 Microsoft Foundry 프로젝트 엔드포인트로, project_endpoint을 모델 배포 이름으로 바꿉니다.

전체 예제를 hello_agent.py로 저장하세요:

import asyncio

from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential


async def main() -> None:
    agent = Agent(
        client=FoundryChatClient(
            project_endpoint="https://your-account.services.ai.azure.com/api/projects/your-project",
            model="gpt-6-luna",
            credential=AzureCliCredential(),
        ),
        instructions="You are a friendly assistant. Keep your answers brief.",
    )
    print(await agent.run("What is the largest city of France?"))


if __name__ == "__main__":
    asyncio.run(main())

예제를 실행하세요:

python hello_agent.py

비고

에이전트 프레임워크는 파일을 자동으로 로드 .env 않습니다. 구성에 .env 파일을 사용하려면 스크립트 시작 시 다음을 호출 load_dotenv() 합니다.

from dotenv import load_dotenv
load_dotenv()

또는 셸 또는 IDE에서 직접 환경 변수를 설정합니다. 자세한 내용은 설정 마이그레이션 참고 를 참조하세요.

Tip

전체 실행 가능한 파일에 대한 전체 샘플을 참조하세요.

go get github.com/microsoft/agent-framework-go

에이전트를 만듭니다.

package main

import (
    "context"
    "fmt"
    "os"

    "github.com/microsoft/agent-framework-go/agent"
    "github.com/microsoft/agent-framework-go/provider/foundryprovider"

    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)

func main() {
    endpoint := os.Getenv("FOUNDRY_PROJECT_ENDPOINT")
    model := os.Getenv("FOUNDRY_MODEL")

    token, err := azidentity.NewDefaultAzureCredential(nil)
    if err != nil {
        panic(err)
    }

    a := foundryprovider.NewAgent(
        endpoint,
        token,
        foundryprovider.ModelDeployment(model),
        foundryprovider.AgentConfig{
            Instructions: "You are a friendly assistant. Keep your answers brief.",
            Config: agent.Config{
                Name: "HelloAgent",
            },
        },
    )

Warning

azidentity.NewDefaultAzureCredential 은 개발에 편리하지만 프로덕션 환경에서 신중하게 고려해야 합니다. 프로덕션 환경에서는 대기 시간 문제, 의도하지 않은 자격 증명 검색 및 대체 메커니즘의 잠재적인 보안 위험을 방지하기 위해 특정 자격 증명(예: azidentity.NewManagedIdentityCredential)을 사용하는 것이 좋습니다.

다음을 실행합니다.

    ctx := context.Background()

    resp, err := a.RunText(ctx, "What is the largest city in France?").Collect()
    fmt.Println(resp, err)

또는 응답을 스트리밍합니다.

    for update, err := range a.RunText(ctx, "Tell me a one-sentence fun fact.", agent.Stream(true)) {
        if err != nil {
            panic(err)
        }
        fmt.Print(update)
    }
}

Tip

전체 실행 가능한 파일에 대한 전체 샘플을 참조하세요.

다음 단계

더 자세히 살펴보기: