ai-agents-for-beginners

. 위키피디아에 따르면, 액터(actor)는 동시 계산의 기본 구성 요소입니다. 수신한 메시지에 응답하여 액터는 로컬 결정을 내리고, 더 많은 액터를 생성하며, 더 많은 메시지를 보내고, 다음에 수신할 메시지에 어떻게 응답할지 결정할 수 있습니다.

사용 사례: 코드 생성 자동화, 데이터 분석 작업, 계획 및 연구 기능을 위한 맞춤형 에이전트 구축.

AutoGen의 중요한 핵심 개념은 다음과 같습니다:

애플리케이션 스택

*에이전트는 런타임을 통해 메시지로 통신하며, 런타임은 에이전트의 수명 주기를 관리합니다*

Semantic Kernel + Agent Framework

Semantic Kernel은 엔터프라이즈용 AI 오케스트레이션 SDK입니다. AI 및 메모리 커넥터와 에이전트 프레임워크로 구성되어 있습니다.

먼저 핵심 구성 요소부터 살펴보겠습니다:

이상이 Semantic Kernel 프레임워크의 기본 내용이며, 에이전트 프레임워크는 어떤가요?

Azure AI Agent Service

Azure AI Agent Service는 Microsoft Ignite 2024에서 소개된 최신 서비스입니다. Llama 3, Mistral, Cohere 같은 오픈 소스 LLM을 직접 호출하는 등 더 유연한 모델로 AI 에이전트를 개발 및 배포할 수 있습니다.

엔터프라이즈 보안 메커니즘과 데이터 저장 방식을 강화하여 기업용 애플리케이션에 적합합니다.

AutoGen, Semantic Kernel 같은 다중 에이전트 오케스트레이션 프레임워크와 즉시 연동됩니다.

현재 퍼블릭 프리뷰 상태이며 Python과 C#을 지원하여 에이전트를 구축할 수 있습니다.

Semantic Kernel Python을 사용해 사용자 정의 플러그인으로 Azure AI 에이전트를 생성하는 예:

import asyncio
from typing import Annotated

from azure.identity.aio import DefaultAzureCredential

from semantic_kernel.agents import AzureAIAgent, AzureAIAgentSettings, AzureAIAgentThread
from semantic_kernel.contents import ChatMessageContent
from semantic_kernel.contents import AuthorRole
from semantic_kernel.functions import kernel_function


# Define a sample plugin for the sample
class MenuPlugin:
    """A sample Menu Plugin used for the concept sample."""

    @kernel_function(description="Provides a list of specials from the menu.")
    def get_specials(self) -> Annotated[str, "Returns the specials from the menu."]:
        return """
        Special Soup: Clam Chowder
        Special Salad: Cobb Salad
        Special Drink: Chai Tea
        """

    @kernel_function(description="Provides the price of the requested menu item.")
    def get_item_price(
        self, menu_item: Annotated[str, "The name of the menu item."]
    ) -> Annotated[str, "Returns the price of the menu item."]:
        return "$9.99"


async def main() -> None:
    ai_agent_settings = AzureAIAgentSettings.create()

    async with (
        DefaultAzureCredential() as creds,
        AzureAIAgent.create_client(
            credential=creds,
            conn_str=ai_agent_settings.project_connection_string.get_secret_value(),
        ) as client,
    ):
        # Create agent definition
        agent_definition = await client.agents.create_agent(
            model=ai_agent_settings.model_deployment_name,
            name="Host",
            instructions="Answer questions about the menu.",
        )

        # Create the AzureAI Agent using the defined client and agent definition
        agent = AzureAIAgent(
            client=client,
            definition=agent_definition,
            plugins=[MenuPlugin()],
        )

        # Create a thread to hold the conversation
        # If no thread is provided, a new thread will be
        # created and returned with the initial response
        thread: AzureAIAgentThread | None = None

        user_inputs = [
            "Hello",
            "What is the special soup?",
            "How much does that cost?",
            "Thank you",
        ]

        try:
            for user_input in user_inputs:
                print(f"# User: '{user_input}'")
                # Invoke the agent for the specified thread
                response = await agent.get_response(
                    messages=user_input,
                    thread_id=thread,
                )
                print(f"# {response.name}: {response.content}")
                thread = response.thread
        finally:
            await thread.delete() if thread else None
            await client.agents.delete_agent(agent.id)


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

핵심 개념

Azure AI Agent Service의 핵심 개념은 다음과 같습니다:

사용 사례: Azure AI Agent Service는 보안성, 확장성, 유연한 AI 에이전트 배포가 필요한 엔터프라이즈 애플리케이션을 위해 설계되었습니다.

이 프레임워크들의 차이점은 무엇인가요?

이 프레임워크들은 겹치는 부분이 많지만, 설계, 기능, 대상 사용 사례 측면에서 몇 가지 핵심 차이가 있습니다:

AutoGen

AutoGen은 Microsoft Research AI Frontiers Lab에서 개발한 오픈 소스 프레임워크입니다. 이벤트 기반, 분산 에이전틱(agentic) 애플리케이션에 중점을 두어 여러 LLM과 SLM, 도구, 고급 다중 에이전트 설계 패턴을 지원합니다.

AutoGen은 환경을 인지하고, 결정을 내리며, 특정 목표를 달성하기 위해 행동하는 자율적 엔티티인 에이전트를 핵심 개념으로 합니다. 에이전트는 비동기 메시지를 통해 통신하여 독립적이고 병렬로 작업할 수 있어 시스템 확장성과 응답성을 향상시킵니다.

위키피디아에 따르면 액터는 동시 계산의 기본 단위로, 받은 메시지에 대해 로컬 결정을 내리고, 더 많은 액터를 생성하며, 메시지를 보내고 다음 메시지에 어떻게 응답할지 결정할 수 있습니다.

사용 사례: 코드 생성 자동화, 데이터 분석 작업, 계획 및 연구 기능을 위한 맞춤형 에이전트 구축.

AutoGen의 핵심 개념은 다음과 같습니다:

Semantic Kernel + Agent Framework

Semantic Kernel은 엔터프라이즈용 AI 오케스트레이션 SDK로, AI 및 메모리 커넥터와 에이전트 프레임워크로 구성됩니다.

에이전트 프레임워크는 모듈식 구성 요소, 협업 도구, 실시간 학습을 지원하여 빠른 프로토타입 제작과 반복 개선을 가능하게 합니다.

Azure AI Agent Service

Azure AI Agent Service는 Azure Foundry 내 플랫폼 및 배포 서비스로, Llama 3, Mistral, Cohere 등 다양한 모델과 강력한 엔터프라이즈 보안, 데이터 저장 기능을 제공합니다.

AutoGen, Semantic Kernel과 같은 다중 에이전트 오케스트레이션 프레임워크와 원활하게 연동되며, Python과 C#을 지원합니다.

에이전트는 Azure AI Foundry에서 “스마트” 마이크로서비스로 동작하며, 스레드와 메시지 개념을 통해 대화 및 작업 상태를 관리합니다.

어떤 프레임워크를 선택해야 할까요?

사용 사례별 가이드

Q: 실험, 학습, 개념 증명용 에이전트 애플리케이션을 빠르게 빌드하고 실험하고 싶습니다.

A: AutoGen이 좋은 선택입니다. 이벤트 기반 분산 에이전틱 애플리케이션에 중점을 두고 고급 다중 에이전트 설계 패턴을 지원합니다.

Q: 이 경우 AutoGen이 Semantic Kernel이나 Azure AI Agent Service보다 나은 이유는 무엇인가요?

A: AutoGen은 이벤트 기반 분산 에이전틱 애플리케이션에 특화되어 있어 코드 생성과 데이터 분석 작업 자동화에 적합한 도구와 기능을 제공합니다.

Q: Azure AI Agent Service도 코드 생성 도구를 제공하니 적합하지 않을까요?

A: 네, Azure AI Agent Service는 여러 모델, Azure AI Search, Bing Search, Azure Functions 등을 지원하는 플랫폼 서비스로, Foundry 포털에서 에이전트를 쉽게 구축하고 대규모로 배포할 수 있습니다.

Q: 아직도 헷갈리는데 한 가지 옵션만 추천해 주세요.

A: Semantic Kernel에서 애플리케이션을 먼저 구축하고 Azure AI Agent Service를 통해 배포하는 것이 좋은 접근법입니다. 이렇게 하면 에이전트를 쉽게 지속시키면서 Semantic Kernel의 다중 에이전트 시스템 구축 역량을 활용할 수 있습니다. 또한 Semantic Kernel은 AutoGen과의 커넥터를 제공해 두 프레임워크를 함께 사용하기 쉽습니다.

다음 표는 주요 차이점을 요약한 것입니다:

| 프레임워크 | 초점 | 핵심 개념 | 사용 사례 | |———————|———————————-|————————————-|——————————| | AutoGen | 이벤트 기반, 분산 에이전틱 애플리케이션 | 에이전트, 페르소나, 함수, 데이터 | 코드 생성, 데이터 분석 작업 | | Semantic Kernel | 인간과 유사한 텍스트 이해 및 생성 | 에이전트, 모듈식 구성 요소, 협업 | 자연어 이해, 콘텐츠 생성 | | Azure AI Agent Service | 유연한 모델, 엔터프라이즈 보안, 코드 생성, 도구 호출 | 에이전트, 스레드, 메시지, 통합 서비스 | 엔터프라이즈용 에이전트 배포 |

이전 강의

AI 에이전트 및 에이전트 사용 사례 소개

다음 강의

에이전트 디자인 패턴 이해하기

면책 조항:
이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있으나, 자동 번역은 오류나 부정확성이 포함될 수 있음을 유의해 주시기 바랍니다. 원본 문서는 해당 언어의 원문이 권위 있는 출처로 간주되어야 합니다. 중요한 정보의 경우, 전문 인간 번역을 권장합니다. 본 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.