AI 에이전트 프레임워크는 AI 에이전트의 생성, 배포 및 관리를 간소화하도록 설계된 소프트웨어 플랫폼입니다. 이러한 프레임워크는 개발자에게 사전 구축된 구성 요소, 추상화 및 도구를 제공하여 복잡한 AI 시스템 개발을 간소화할 수 있도록 합니다.
이러한 프레임워크는 AI 에이전트 개발의 일반적인 문제에 대한 표준화된 접근 방식을 제공함으로써 개발자가 애플리케이션의 고유한 측면에 집중할 수 있도록 도와줍니다. 또한 AI 시스템 구축의 확장성, 접근성, 효율성을 향상시킵니다.
개요
이 과정에서는 다음과 같은 내용을 다룹니다:
- AI 에이전트 프레임워크는 무엇이며 개발자는 이를 통해 무엇을 할 수 있나요?
- 팀이 이러한 프레임워크를 사용하여 에이전트의 기능을 빠르게 프로토타이핑, 반복 및 개선하려면 어떻게 해야 할까요?
- Microsoft AutoGen, 시맨틱 커널 및 Azure AI 에이전트에서 만든 프레임워크와 도구의 차이점은 무엇인가요?
- 기존 Azure 에코시스템 도구와 직접 통합할 수 있나요, 아니면 독립 실행형 솔루션이 필요한가요?
- Azure AI 에이전트 서비스란 무엇이며 어떤 도움을 받을 수 있나요?
학습 목표
이 과정의 목표는 이해를 돕는 것입니다:
- AI 개발에서 AI 에이전트 프레임워크의 역할.
- AI 에이전트 프레임워크로 지능형 에이전트를 구축하는 방법.
- AI 에이전트 프레임워크가 구현하는 주요 기능.
- AutoGen, 시맨틱 커널 및 Azure AI 에이전트 서비스의 차이점.
AI 에이전트 프레임워크는 무엇이며 개발자는 이를 통해 무엇을 할 수 있나요?
기존의 AI 프레임워크는 애플리케이션에 AI를 통합하고 애플리케이션을 개선하는 데 도움이 될 수 있습니다:
- 개인화AI는 사용자 행동과 선호도를 분석하여 개인화된 추천, 콘텐츠 및 경험을 제공할 수 있습니다. 예를 들어, 넷플릭스와 같은 스트리밍 서비스는 시청 기록을 기반으로 영화와 프로그램을 추천하여 사용자 참여도와 만족도를 높이기 위해 AI를 사용합니다.
- 자동화 및 효율성AI는 반복적인 작업을 자동화하고 워크플로우를 간소화하며 운영 효율성을 개선할 수 있습니다. 예를 들어, 고객 서비스 애플리케이션은 AI 기반 챗봇을 사용하여 일반적인 쿼리를 처리함으로써 응답 시간을 단축하고 인간 상담원이 더 복잡한 문제를 처리할 수 있도록 합니다.
- 향상된 사용자 경험AI는 음성 인식, 자연어 처리, 예측 텍스트와 같은 지능형 기능을 제공하여 전반적인 사용자 경험을 향상시킬 수 있습니다. 예를 들어 Siri 및 Google 어시스턴트와 같은 가상 비서는 AI를 사용하여 음성 명령을 이해하고 응답하므로 사용자가 더 쉽게 디바이스와 상호 작용할 수 있습니다.
이 모든 것이 멋지게 들리죠? 그렇다면 왜 AI 에이전트 프레임워크가 필요할까요?
AI 에이전트 프레임워크는 단순한 AI 프레임워크 그 이상입니다. 사용자, 다른 에이전트 및 환경과 상호 작용하여 특정 목표를 달성하고 자율적으로 행동하고 결정을 내리고 변화하는 상황에 적응할 수 있는 지능형 에이전트를 만들 수 있도록 설계되었습니다. AI 에이전트 프레임워크가 구현하는 몇 가지 주요 기능을 살펴보겠습니다:
- 상담원 협업 및 조정복잡한 작업을 해결하기 위해 함께 작업하고, 소통하고, 조정할 수 있는 여러 AI 에이전트 생성을 지원합니다.
- 작업 자동화 및 관리다단계 워크플로우 자동화, 작업 위임, 상담원 간의 동적 작업 관리를 위한 메커니즘을 제공합니다.
- 상황별 이해 및 적응에이전트가 컨텍스트를 이해하고 변화하는 환경에 적응하며 실시간 정보를 기반으로 의사 결정을 내릴 수 있도록 지원합니다.
요컨대, 에이전트를 사용하면 더 많은 작업을 수행하고 자동화를 한 단계 더 발전시키며 환경에 적응하고 학습할 수 있는 더 스마트한 시스템을 만들 수 있습니다.
에이전트의 기능을 빠르게 프로토타이핑하고 반복하며 개선하려면 어떻게 해야 하나요?
빠르게 진화하는 분야이지만 대부분의 AI 에이전트 프레임워크에는 모듈식 구성 요소, 협업 도구, 실시간 학습 등 프로토타입을 빠르게 제작하고 반복하는 데 도움이 되는 몇 가지 공통점이 있습니다. 이에 대해 자세히 알아보겠습니다:
- 모듈형 컴포넌트 사용AI 프레임워크는 힌트, 파서 및 메모리 관리와 같은 사전 구축된 구성 요소를 제공합니다.
- 협업 도구 사용특정 역할과 작업을 가진 에이전트를 설계하여 협업 워크플로를 테스트하고 개선할 수 있도록 합니다.
- 실시간 학습피드백 루프는 에이전트가 상호 작용을 통해 학습하고 행동을 동적으로 조정하는 방식으로 이루어집니다.
모듈형 컴포넌트 사용
LangChain 및 Microsoft Semantic Kernel과 같은 프레임워크는 힌트, 파서 및 메모리 관리와 같은 사전 구축된 구성 요소를 제공합니다.
팀에서 이를 사용하는 방법팀은 이러한 구성 요소를 빠르게 조립하여 처음부터 다시 시작할 필요 없이 기능적인 프로토타입을 만들 수 있으므로 빠른 실험과 반복이 가능합니다.
실제 작동 방식사용자 입력에서 정보를 추출하는 사전 구축된 파서, 데이터를 저장 및 검색하는 인메모리 모듈, 사용자와 상호 작용하는 프롬프트 생성기를 사용하여 이러한 구성 요소를 처음부터 빌드할 필요 없이 모두 사용할 수 있습니다.
샘플 코드(컴퓨팅). 미리 빌드된 구문 분석기를 사용하여 사용자 입력에서 정보를 추출하는 방법의 예를 살펴 보겠습니다:
// Semantic Kernel 示例
ChatHistory chatHistory = [];
chatHistory.AddUserMessage("I'd like to go To New York");
// 定义一个包含预订旅行功能的插件
public class BookTravelPlugin(
IPizzaService pizzaService,
IUserContext userContext,
IPaymentService paymentService)
{
[KernelFunction("book_flight")]
[Description("Book travel given location and date")]
public async Task<Booking> BookFlight(
DateTime date,
string location,
)
{
// 根据日期、地点预订旅行
}
}
IKernelBuilder kernelBuilder = new KernelBuilder();
kernelBuilder..AddAzureOpenAIChatCompletion(
deploymentName: "NAME_OF_YOUR_DEPLOYMENT",
apiKey: "YOUR_API_KEY",
endpoint: "YOUR_AZURE_ENDPOINT"
);
kernelBuilder.Plugins.AddFromType<BookTravelPlugin>("BookTravel");
Kernel kernel = kernelBuilder.Build();
/*
在后台,它识别要调用的工具、它已经具有的参数 (location) 和它需要的参数 (date)
{
"tool_calls": [
{
"id": "call_abc123",
"type": "function",
"function": {
"name": "BookTravelPlugin-book_flight",
"arguments": "{\n\"location\": \"New York\",\n\"date\": \"\"\n}"
}
}
]
*/
ChatResponse response = await chatCompletion.GetChatMessageContentAsync(
chatHistory,
executionSettings: openAIPromptExecutionSettings,
kernel: kernel)
Console.WriteLine(response);
chatHistory.AddAssistantMessage(response);
// AI 响应:"Before I can book your flight, I need to know your departure date. When are you planning to travel?"
// 也就是说,在前面的代码中,它找出了要调用的工具,它已经拥有的参数 (location) 以及它从用户输入中需要的参数 (date),此时它最终会向用户询问缺失的信息
이 예제에서는 사전 구축된 파서를 사용하여 항공편 예약 요청의 출발지, 목적지, 날짜 등 사용자 입력에서 주요 정보를 추출하는 방법을 확인할 수 있습니다. 이 모듈식 접근 방식을 사용하면 높은 수준의 로직에 집중할 수 있습니다.
협업 도구 사용
CrewAI 및 Microsoft 자동 생성 이와 같은 프레임워크는 함께 작업할 수 있는 여러 에이전트를 쉽게 만들 수 있습니다.
팀에서 이를 사용하는 방법팀은 특정 역할과 작업을 가진 에이전트를 설계하여 협업 워크플로를 테스트 및 개선하고 전반적인 시스템 효율성을 높일 수 있습니다.
실제 작동 방식데이터 검색, 분석 또는 의사 결정과 같은 전문 기능을 가진 에이전트 팀을 만들 수 있습니다. 이러한 에이전트는 사용자 쿼리에 응답하거나 작업을 완료하는 등의 공통 목표를 달성하기 위해 정보를 공유하고 소통할 수 있습니다.
샘플 코드(자동 생성)::
# 创建 Agent,然后创建一个循环调度,让他们可以协同工作,在本例中是按顺序
# 数据检索 Agent
# 数据分析 Agent
# 决策 Agent
agent_retrieve = AssistantAgent(
name="dataretrieval",
model_client=model_client,
tools=[retrieve_tool],
system_message="Use tools to solve tasks."
)
agent_analyze = AssistantAgent(
name="dataanalysis",
model_client=model_client,
tools=[analyze_tool],
system_message="Use tools to solve tasks."
)
# 当用户说 "APPROVE" 时,对话结束
termination = TextMentionTermination("APPROVE")
user_proxy = UserProxyAgent("user_proxy", input_func=input)
team = RoundRobinGroupChat([agent_retrieve, agent_analyze, user_proxy], termination_condition=termination)
stream = team.run_stream(task="Analyze data", max_turns=10)
# 在脚本中运行时使用 asyncio.run(...)。
await Console(stream)
앞의 코드에서 보신 것은 여러 에이전트가 함께 데이터를 분석하는 작업을 만드는 방법입니다. 각 에이전트는 특정 기능을 수행하고 원하는 결과를 얻기 위해 작업을 수행하도록 에이전트를 조정합니다. 전문화된 역할을 가진 전담 에이전트를 생성하면 작업의 효율성과 성능을 향상시킬 수 있습니다.
실시간 학습
고급 프레임워크는 실시간 상황 이해 및 적응 기능을 제공합니다.
팀이 이러한 프레임워크를 사용하는 방법팀은 상담원이 상호작용을 통해 학습하고 동적으로 행동을 조정할 수 있는 피드백 루프를 구현하여 지속적인 기능 개선 및 개선으로 이어질 수 있습니다.
실제 적용상담원은 사용자 피드백, 환경 데이터 및 작업 결과를 분석하여 지식창고를 업데이트하고, 의사 결정 알고리즘을 조정하며, 시간이 지남에 따라 성능을 개선할 수 있습니다. 이러한 반복적인 학습 과정을 통해 상담원은 변화하는 조건과 사용자 선호도에 적응하여 전반적인 시스템 효율성을 개선할 수 있습니다.
AutoGen, 시맨틱 커널 및 Azure AI 에이전트 서비스 프레임워크의 차이점은 무엇인가요?
이러한 프레임워크를 비교하는 방법은 여러 가지가 있지만 디자인, 기능 및 대상 사용 사례 측면에서 몇 가지 주요 차이점을 살펴 보겠습니다:
자동 생성
Microsoft Research의 AI 프론티어 랩에서 개발한 오픈 소스 프레임워크입니다. 이벤트 중심의 분산형에 중점을 둡니다. 에이전트 여러 LLM(대규모 언어 모델) 및 SLM, 도구, 고급 다중 에이전트 디자인 패턴을 지원하는 애플리케이션입니다.
AutoGen의 핵심 개념은 환경을 감지하고, 결정을 내리고, 특정 목표를 달성하기 위한 조치를 취할 수 있는 자율적인 개체인 에이전트입니다. 에이전트는 비동기 메시징을 통해 통신하므로 독립적으로 병렬로 작업할 수 있어 시스템의 확장성과 응답성을 높일 수 있습니다.
에이전트는 배우 모델을 기반으로 합니다.. 위키백과에 따르면 배우는 동시 계산의 기본 구성 요소입니다. 수신 메시지에 대한 응답으로 액터는 로컬 의사 결정, 더 많은 액터 생성, 더 많은 메시지 전송, 다음 수신 메시지에 대한 응답 방법 결정 등의 작업을 수행할 수 있습니다..
사용 사례코드 생성, 데이터 분석 작업을 자동화하고 기획 및 연구 기능을 위한 맞춤형 인텔리전스(에이전트)를 구축하세요.
다음은 AutoGen의 중요한 핵심 개념 중 일부입니다:
- 상담원. 지능형 개체(에이전트)는 소프트웨어 엔티티입니다:
- 메시지를 통한 커뮤니케이션이러한 메시지는 동기식 또는 비동기식일 수 있습니다.
- 신분 유지이 상태는 수신 메시지에 의해 수정될 수 있습니다.
- 실행 가능한 작업 를 호출하여 수신된 메시지 또는 상태 변경에 대한 응답을 보낼 수 있습니다. 이러한 작업은 에이전트의 상태를 수정할 수 있으며 메시지 로그 업데이트, 새 메시지 보내기, 코드 실행 또는 API 호출과 같은 외부 효과를 가져올 수 있습니다.
다음은 채팅 기능이 있는 상담원을 만들 수 있는 짧은 코드 스니펫입니다:
from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.messages import TextMessage from autogen_ext.models.openai import OpenAIChatCompletionClient class MyAssistant(RoutedAgent): def __init__(self, name: str) -> None: super().__init__(name) model_client = OpenAIChatCompletionClient(model="gpt-4o") self._delegate = AssistantAgent(name, model_client=model_client) @message_handler async def handle_my_message_type(self, message: MyMessageType, ctx: MessageContext) -> None: print(f"{self.id.type} received message: {message.content}") response = await self._delegate.on_messages( [TextMessage(content=message.content, source="user")], ctx.cancellation_token ) print(f"{self.id.type} responded: {response.chat_message.content}")
앞의 코드에서
MyAssistant
에서 생성 및 상속되었습니다.RoutedAgent
. 메시지 내용을 인쇄하는 메시지 핸들러가 있으며, 메시지 내용을 인쇄한 다음AssistantAgent
응답 전송을 위임합니다. 응답 전송을 위임하는 방법에 특히 주의를 기울이세요.AssistantAgent
의 인스턴스는self._delegate
(수학.) 속AssistantAgent
는 채팅 보완을 처리할 수 있는 사전 구축된 인텔리전스(에이전트)입니다.
그런 다음 AutoGen에 에이전트 유형을 알려주고 프로그램을 시작합니다:# main.py runtime = SingleThreadedAgentRuntime() await MyAgent.register(runtime, "my_agent", lambda: MyAgent()) runtime.start() # Start processing messages in the background. await runtime.send_message(MyMessageType("Hello, World!"), AgentId("my_agent", "default"))
앞의 코드에서는 에이전트를 런타임에 등록한 다음 에이전트에 메시지를 전송하여 다음과 같은 출력을 생성합니다:
# Output from the console: my_agent received message: Hello, World! my_assistant received message: Hello, World! my_assistant responded: Hello! How can I assist you today?
- 멀티 에이전트AutoGen은 복잡한 작업을 수행하기 위해 함께 작업할 수 있는 여러 에이전트를 만들 수 있도록 지원합니다. 에이전트는 서로 소통하고, 정보를 공유하고, 작업을 조정하여 문제를 보다 효과적으로 해결할 수 있습니다. 다중 에이전트 시스템을 만들려면 데이터 검색, 분석, 의사 결정, 사용자 상호작용 등 특화된 기능과 역할을 가진 다양한 유형의 에이전트를 정의합니다. 이해를 돕기 위해 그러한 창작물이 어떻게 생겼는지 살펴보겠습니다:
editor_description = "Editor for planning and reviewing the content."
# Example of declaring an Agent
editor_agent_type = await EditorAgent.register(
runtime,
editor_topic_type, # Using topic type as the agent type.
lambda: EditorAgent(
description=editor_description,
group_chat_topic_type=group_chat_topic_type,
model_client=OpenAIChatCompletionClient(
model="gpt-4o-2024-08-06",
# api_key="YOUR_API_KEY",
),
),
)
# remaining declarations shortened for brevity
# Group chat
group_chat_manager_type = await GroupChatManager.register(
runtime,
"group_chat_manager",
lambda: GroupChatManager(
participant_topic_types=[writer_topic_type, illustrator_topic_type, editor_topic_type, user_topic_type],
model_client=OpenAIChatCompletionClient(
model="gpt-4o-2024-08-06",
# api_key="YOUR_API_KEY",
),
participant_descriptions=[
writer_description,
illustrator_description,
editor_description,
user_description
],
),
)
이전 코드에는 GroupChatManager
런타임에 등록됩니다. 이 관리자는 작가, 일러스트레이터, 편집자, 사용자 등 다양한 유형의 에이전트 간의 상호 작용을 조정하는 역할을 담당합니다.
- 에이전트 런타임이 프레임워크는 에이전트 간의 커뮤니케이션을 지원하고 보안 및 개인정보 보호 경계를 적용하는 런타임 환경을 제공합니다. 이 프레임워크는 에이전트 간의 커뮤니케이션을 지원하고, 신원 및 수명 주기를 관리하며, 보안 및 개인정보 보호 경계를 적용하는 런타임 환경을 제공합니다. 즉, 안전하고 통제된 환경에서 에이전트를 실행하여 안전하고 효율적으로 상호 작용할 수 있도록 보장할 수 있습니다. 두 가지 런타임이 있습니다:
- 독립 실행형 런타임. 이는 모든 에이전트가 동일한 프로그래밍 언어로 구현되고 동일한 프로세스에서 실행되는 단일 프로세스 애플리케이션에 적합한 선택입니다. 다음은 작동 방식에 대한 다이어그램입니다:
독립 실행형 런타임
애플리케이션 스택
에이전트는 에이전트의 수명 주기를 관리하는 런타임을 통해 메시지를 통해 커뮤니케이션합니다. - 분산 에이전트 런타임이는 에이전트를 서로 다른 프로그래밍 언어로 구현하고 서로 다른 컴퓨터에서 실행할 수 있는 다중 프로세스 애플리케이션에 적용할 수 있습니다. 다음은 작동 방식을 보여주는 그림입니다:
분산 런타임
- 독립 실행형 런타임. 이는 모든 에이전트가 동일한 프로그래밍 언어로 구현되고 동일한 프로세스에서 실행되는 단일 프로세스 애플리케이션에 적합한 선택입니다. 다음은 작동 방식에 대한 다이어그램입니다:
시맨틱 커널 + 에이전트 프레임워크
시맨틱 커널은 시맨틱 커널 에이전트 프레임워크와 시맨틱 커널 자체의 두 부분으로 구성됩니다.
시맨틱 커널에 대해 잠시 이야기해 보겠습니다. 시맨틱 커널의 핵심 개념은 다음과 같습니다:
- 연결외부 AI 서비스 및 데이터 소스에 대한 인터페이스입니다.
using Microsoft.SemanticKernel;
// Create kernel
var builder = Kernel.CreateBuilder();
// Add a chat completion service:
builder.Services.AddAzureOpenAIChatCompletion(
"your-resource-name",
"your-endpoint",
"your-resource-key",
"deployment-model");
var kernel = builder.Build();
다음은 커널을 만들고 채팅 완료 서비스를 추가하는 방법에 대한 간단한 예제입니다.Semantic Kernel은 외부 AI 서비스(이 경우 Azure OpenAI 채팅 완료)에 대한 연결을 생성합니다.
- 플러그인애플리케이션에서 사용할 수 있는 기능을 캡슐화합니다. 플러그인에는 기성 플러그인과 직접 만들 수 있는 플러그인이 있습니다. 시맨틱 함수라는 개념이 있습니다. 시맨틱 함수는 시맨틱 커널이 함수를 호출할 필요가 있는지 판단할 수 있도록 시맨틱 정보를 제공하기 때문입니다. 다음은 예시입니다:
var userInput = Console.ReadLine();
// Define semantic function inline.
string skPrompt = @"Summarize the provided unstructured text in a sentence that is easy to understand.
Text to summarize: {{$userInput}}";
// Register the function
kernel.CreateSemanticFunction(
promptTemplate: skPrompt,
functionName: "SummarizeText",
pluginName: "SemanticFunctions"
);
템플릿 팁부터 시작하겠습니다. skPrompt
사용자가 텍스트를 입력하도록 남겨 둡니다. $userInput
공간으로 이동합니다. 그런 다음 플러그인 SemanticFunctions
등록된 기능 SummarizeText
. 함수의 이름을 기록하면 시맨틱 커널이 함수의 기능과 호출 시기를 이해하는 데 도움이 됩니다.
- 기본 기능프레임워크가 직접 호출하여 작업을 수행할 수 있는 네이티브 함수도 있습니다. 다음은 파일에서 콘텐츠를 검색하는 이러한 함수의 예입니다:
public class NativeFunctions {
[SKFunction, Description("Retrieve content from local file")]
public async Task<string> RetrieveLocalFile(string fileName, int maxSize = 5000)
{
string content = await File.ReadAllTextAsync(fileName);
if (content.Length <= maxSize) return content;
return content.Substring(0, maxSize);
}
}
//Import native function
string plugInName = "NativeFunction";
string functionName = "RetrieveLocalFile";
var nativeFunctions = new NativeFunctions();
kernel.ImportFunctions(nativeFunctions, plugInName);
- 플래너플래너는 사용자 입력에 따라 실행 계획과 정책을 오케스트레이션합니다. 실행 방법을 표현한 다음 시맨틱 커널이 따라야 할 지침으로 만드는 것이 핵심입니다. 그런 다음 작업을 실행하는 데 필요한 함수를 호출합니다. 다음은 이러한 계획의 예시입니다:
string planDefinition = "Read content from a local file and summarize the content.";
SequentialPlanner sequentialPlanner = new SequentialPlanner(kernel);
string assetsFolder = @"../../assets";
string fileName = Path.Combine(assetsFolder,"docs","06_SemanticKernel", "aci_documentation.txt");
ContextVariables contextVariables = new ContextVariables();
contextVariables.Add("fileName", fileName);
var customPlan = await sequentialPlanner.CreatePlanAsync(planDefinition);
// Execute the plan
KernelResult kernelResult = await kernel.RunAsync(contextVariables, customPlan);
Console.WriteLine($"Summarization: {kernelResult.GetValue<string>()}");
특별 주의 planDefinition
를 입력하면 플래너가 뒤따르는 간단한 명령어입니다. 그런 다음 이 계획에 따라 적절한 함수(이 경우 시맨틱 함수)가 호출됩니다. SummarizeText
및 기본 함수 RetrieveLocalFile
.
- 메모리AI 애플리케이션의 컨텍스트 관리를 추상화하고 간소화하세요. 메모리라는 개념은 대규모 언어 모델(LLM)이 알아야 하는 정보입니다. 이 정보를 벡터 저장소에 저장하면 결국 인메모리 데이터베이스나 벡터 데이터베이스 또는 이와 유사한 것이 됩니다. 다음은 매우 간단한 시나리오의 예입니다. 사실 가 메모리에 추가됩니다:
var facts = new Dictionary<string,string>();
facts.Add(
"Azure Machine Learning; https://learn.microsoft.com/azure/machine-learning/",
@"Azure Machine Learning is a cloud service for accelerating and
managing the machine learning project lifecycle. Machine learning professionals,
data scientists, and engineers can use it in their day-to-day workflows"
);
facts.Add(
"Azure SQL Service; https://learn.microsoft.com/azure/azure-sql/",
@"Azure SQL is a family of managed, secure, and intelligent products
that use the SQL Server database engine in the Azure cloud."
);
string memoryCollectionName = "SummarizedAzureDocs";
foreach (var fact in facts) {
await memoryBuilder.SaveReferenceAsync(
collection: memoryCollectionName,
description: fact.Key.Split(";")[1].Trim(),
text: fact.Value,
externalId: fact.Key.Split(";")[2].Trim(),
externalSourceName: "Azure Documentation"
);
}
이러한 사실은 메모리 컬렉션에 저장됩니다. SummarizedAzureDocs
를 메모리에 저장합니다. 이것은 매우 간단한 예시이지만 대규모 언어 모델(LLM)에서 사용하기 위해 정보를 메모리에 저장하는 방법을 확인할 수 있습니다.
이것이 시맨틱 커널 프레임워크의 기본이라면 에이전트 프레임워크는 어떤가요?
Azure AI 에이전트 서비스
Azure AI 에이전트 서비스는 Microsoft Ignite 2024에 도입된 새로운 멤버입니다. 이를 통해 Llama 3, Mistral, Cohere와 같은 오픈 소스 LLM(대규모 언어 모델)을 직접 호출하는 등 보다 유연한 모델을 사용하여 AI 에이전트를 개발 및 배포할 수 있습니다.
Azure AI 에이전트 서비스는 엔터프라이즈 애플리케이션에 적합한 강력한 엔터프라이즈 보안 메커니즘과 데이터 저장 방법을 제공합니다.
자동 생성 및 시맨틱 커널과 같은 멀티 에이전트 오케스트레이션 프레임워크와 함께 바로 사용할 수 있습니다.
이 서비스는 현재 공개 프리뷰 중이며 에이전트 구축을 위해 Python 및 C#를 지원합니다.
핵심 개념
Azure AI 에이전트 서비스에는 다음과 같은 핵심 개념이 있습니다:
- 에이전트Azure AI 에이전트 서비스는 Azure AI Foundry와 통합됩니다. AI Foundry에서 AI 인텔리전스(에이전트)는 질문에 답하는 데 사용할 수 있는 "스마트" 마이크로서비스 역할을 합니다(RAG), 작업을 수행하거나 워크플로우를 완전히 자동화할 수 있습니다. 이는 생성형 AI 모델의 기능을 실제 데이터 소스에 액세스하고 상호 작용할 수 있는 도구와 결합하여 수행됩니다. 아래는 에이전트의 예시입니다:
agent = project_client.agents.create_agent(
model="gpt-4o-mini",
name="my-agent",
instructions="You are helpful agent",
tools=code_interpreter.definitions,
tool_resources=code_interpreter.resources,
)
이 예제에서는 모델을 사용하여 모델을 생성합니다. gpt-4o-mini
이름 my-agent
및 지시어 You are helpful agent
에이전트는 코드 해석 작업을 수행할 수 있는 도구와 리소스를 갖추고 있습니다. 에이전트는 코드 해석 작업을 수행할 수 있는 도구와 리소스를 갖추고 있습니다.
- 스레드 및 메시지. 스레드는 또 다른 중요한 개념입니다. 이는 상담원과 사용자 간의 대화 또는 상호작용을 나타냅니다. 스레드는 대화의 진행 상황을 추적하고, 상황에 맞는 정보를 저장하며, 상호작용의 상태를 관리하는 데 사용할 수 있습니다. 다음은 스레드의 예입니다:
thread = project_client.agents.create_thread()
message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content="Could you please create a bar chart for the operating profit using the following data and provide the file to me? Company A: $1.2 million, Company B: $2.5 million, Company C: $3.0 million, Company D: $1.8 million",
)
# Ask the agent to perform work on the thread
run = project_client.agents.create_and_process_run(thread_id=thread.id, agent_id=agent.id)
# Fetch and log all messages to see the agent's response
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")
이전 코드에서는 스레드가 생성되었습니다. 그 후 스레드로 메시지가 전송됩니다. 스레드에 메시지가 전송되는 방식은 create_and_process_run
상담원에게 스레드에서 작업을 수행하라는 요청을 받습니다. 마지막으로 상담원의 응답을 확인하기 위해 메시지가 캡처되고 기록됩니다. 메시지는 사용자와 상담원 간의 대화 진행 상황을 나타냅니다. 메시지는 텍스트, 이미지, 파일 등 다양한 유형이 될 수 있으며, 에이전트의 작업 결과 이미지나 텍스트 응답이 나올 수 있다는 점도 이해하는 것이 중요합니다. 개발자는 이 정보를 사용하여 응답을 추가로 처리하거나 사용자에게 표시할 수 있습니다.
- 다른 AI 프레임워크와의 통합Azure AI 에이전트 서비스는 AutoGen 및 시맨틱 커널과 같은 다른 프레임워크와 상호 작용할 수 있으므로 에이전트 서비스를 오케스트레이터로 사용하는 등 프레임워크 중 하나에서 애플리케이션의 일부를 빌드하거나 모든 것을 에이전트 서비스에서 빌드할 수 있습니다.
사용 사례Azure AI 에이전트 서비스: Azure AI 에이전트 서비스는 AI 인텔리전스(에이전트)를 안전하고 확장 가능하며 유연하게 배포해야 하는 엔터프라이즈 애플리케이션을 위해 설계되었습니다.
이 프레임워크의 차이점은 무엇인가요?
이러한 프레임워크 간에 많은 부분이 겹치는 것처럼 보이지만 디자인, 기능 및 대상 사용 사례에는 몇 가지 주요 차이점이 있습니다:
- 자동 생성여러 LLM(대규모 언어 모델) 및 SLM, 도구, 고급 멀티 에이전트 디자인 패턴을 지원하는 이벤트 중심의 분산 에이전트 애플리케이션에 중점을 둡니다.
- 시맨틱 커널더 깊은 의미적 의미를 파악하여 인간과 같은 텍스트 콘텐츠를 이해하고 생성하는 데 중점을 둡니다. 복잡한 워크플로를 자동화하고 프로젝트 목표에 따라 작업을 시작하도록 설계되었습니다.
- Azure AI 에이전트 서비스라마 3, 미스트랄, 코히어와 같은 오픈 소스 LLM(대규모 언어 모델)에 직접 호출하는 등 보다 유연한 모델을 제공하며, 보다 강력한 엔터프라이즈 보안 메커니즘과 데이터 저장 방법을 제공하므로 엔터프라이즈 애플리케이션에 적합합니다.
아직 어떤 것을 선택해야 할지 잘 모르시겠어요?
사용 사례
몇 가지 일반적인 사용 사례를 살펴보고 도움이 될 수 있는지 알아보세요:
질문: 저희 팀에서는 자동화된 코드 생성 및 데이터 분석 작업을 포함하는 프로젝트를 개발하고 있습니다. 어떤 프레임워크를 사용해야 하나요?
A: 이벤트 중심의 분산 에이전트 애플리케이션에 초점을 맞추고 고급 멀티 에이전트 디자인 패턴을 지원하기 때문에 이 경우 AutoGen이 좋은 선택입니다.
Q: 이 사용 사례에서 AutoGen이 Semantic Kernel 및 Azure AI 에이전트 서비스보다 나은 점은 무엇인가요?
A: AutoGen은 이벤트 중심의 분산 에이전트 애플리케이션을 위해 설계되었으므로 코드 생성 및 데이터 분석 작업을 자동화하는 데 이상적입니다. 복잡한 멀티 에이전트 시스템을 효율적으로 구축하는 데 필요한 도구와 기능을 제공합니다.
Q: Azure AI 에이전트 서비스가 여기에서도 작동하고 코드 생성 등을 위한 도구가 있는 것 같은데요?
A: 예, Azure AI 에이전트 서비스는 코드 생성 및 데이터 분석 작업도 지원하지만 안전하고 확장 가능하며 유연한 AI 에이전트 배포가 필요한 엔터프라이즈 애플리케이션에 더 적합할 수 있습니다. AutoGen은 이벤트 중심의 분산 에이전트 애플리케이션 및 고급 다중 에이전트 디자인 패턴에 더 중점을 두고 있습니다. AutoGen은 이벤트 중심의 분산 에이전트 애플리케이션과 고급 멀티 에이전트 설계 패턴에 더 중점을 두고 있습니다.
Q: 엔터프라이즈를 사용하려면 Azure AI 에이전트 서비스를 사용해야 한다는 건가요?
A: 예, Azure AI 에이전트 서비스는 AI 인텔리전스(에이전트)를 안전하고 확장 가능하며 유연하게 배포해야 하는 엔터프라이즈 애플리케이션을 위해 설계되었습니다. 이 서비스는 엔터프라이즈 사용 사례에 적합한 강력한 엔터프라이즈 보안 메커니즘과 데이터 저장 방법을 제공합니다.
주요 차이점을 표로 정리해 보겠습니다:
무화과 패턴 | 재검표(예: 선거 결과) | 핵심 개념 | 사용 사례 |
---|---|---|---|
자동 생성 | 이벤트 중심의 분산형 에이전트 애플리케이션 | 상담원, 페르소나, 함수, 데이터 | 코드 생성, 데이터 분석 작업 |
시맨틱 커널 | 휴머노이드 텍스트 콘텐츠의 이해 및 생성 | 에이전트, 모듈형 구성 요소, 협업 | 자연어 이해, 콘텐츠 생성 |
Azure AI 에이전트 서비스 | 유연한 모델링, 엔터프라이즈 보안, 코드 생성, 도구 호출 | 모듈성, 협업, 프로세스 오케스트레이션 | 안전하고 확장 가능하며 유연한 AI 인텔리전스(에이전트) 배포 |
이러한 각 프레임워크의 이상적인 사용 사례는 무엇인가요?
- 자동 생성이벤트 중심, 분산 에이전트 애플리케이션, 고급 멀티 에이전트 디자인 패턴. 자동화된 코드 생성, 데이터 분석 작업에 이상적입니다.
- 시맨틱 커널인간과 유사한 텍스트 콘텐츠를 이해 및 생성하고, 복잡한 워크플로를 자동화하고, 프로젝트 목표에 따라 작업을 시작할 수 있습니다. 자연어 이해, 콘텐츠 생성에 이상적입니다.
- Azure AI 에이전트 서비스유연한 모델, 엔터프라이즈 보안 메커니즘, 데이터 저장 방식. 엔터프라이즈 애플리케이션에서 안전하고 확장 가능하며 유연한 AI 인텔리전스(에이전트) 배포에 이상적입니다.
기존 Azure 에코시스템 도구와 직접 통합할 수 있나요, 아니면 독립 실행형 솔루션이 필요한가요?
대답은 '예'입니다. 특히 다른 Azure 서비스와 원활하게 작동하도록 설계되었기 때문에 기존 Azure 에코시스템 도구를 Azure AI 에이전트 서비스와 직접 통합할 수 있습니다. 예를 들어 Bing, Azure AI Search 및 Azure Functions를 통합할 수 있으며 Azure AI Foundry와도 긴밀하게 통합할 수 있습니다.
자동 생성 및 시맨틱 커널의 경우 Azure 서비스와 통합할 수도 있지만 이 경우 코드에서 Azure 서비스를 호출해야 할 수 있습니다. 또 다른 통합 방법은 Azure SDK를 사용하여 에이전트에서 Azure 서비스와 상호 작용하는 것입니다. 또한 앞서 언급했듯이 Azure AI 에이전트 서비스를 AutoGen 또는 시맨틱 커널에 빌드된 에이전트를 위한 오케스트레이터로 사용하면 Azure 에코시스템에 쉽게 액세스할 수 있습니다.
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...