선언적 에이전트를 사용하면 프로그래밍 코드를 작성하는 대신 YAML 또는 JSON 파일을 사용하여 에이전트 구성을 정의할 수 있습니다. 이 접근 방식을 사용하면 에이전트가 팀 간에 보다 쉽게 정의, 수정 및 공유할 수 있습니다.
다음 예제에서는 YAML 구성에서 선언적 에이전트를 만드는 방법을 보여줍니다.
using System;
using System.IO;
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
// Load agent configuration from a YAML file
var yamlContent = File.ReadAllText("agent-config.yaml");
// Create the agent from the YAML definition
AIAgent agent = AgentFactory.CreateFromYaml(
yamlContent,
new AzureOpenAIClient(
new Uri("https://<myresource>.openai.azure.com"),
new AzureCliCredential()));
// Run the declarative agent
Console.WriteLine(await agent.RunAsync("Why is the sky blue?"));
YAML을 사용하여 에이전트 인라인 정의
전체 YAML 사양을 코드에서 직접 문자열로 정의할 수 있습니다.
import asyncio
from agent_framework.declarative import AgentFactory
from azure.identity.aio import AzureCliCredential
async def main():
"""Create an agent from an inline YAML definition and run it."""
yaml_definition = """kind: Prompt
name: DiagnosticAgent
displayName: Diagnostic Assistant
instructions: Specialized diagnostic and issue detection agent for systems with critical error protocol and automatic handoff capabilities
description: An agent that performs diagnostics on systems and can escalate issues when critical errors are detected.
model:
id: =Env.AZURE_OPENAI_MODEL
connection:
kind: remote
endpoint: =Env.AZURE_AI_PROJECT_ENDPOINT
"""
async with (
AzureCliCredential() as credential,
AgentFactory(client_kwargs={"credential": credential}).create_agent_from_yaml(yaml_definition) as agent,
):
response = await agent.run("What can you do for me?")
print("Agent response:", response.text)
if __name__ == "__main__":
asyncio.run(main())
YAML 파일에서 에이전트 로드
파일에서 YAML 정의를 로드할 수도 있습니다.
import asyncio
from pathlib import Path
from agent_framework.declarative import AgentFactory
from azure.identity import AzureCliCredential
async def main():
"""Create an agent from a declarative YAML file and run it."""
yaml_path = Path(__file__).parent / "agent-config.yaml"
with yaml_path.open("r") as f:
yaml_str = f.read()
agent = AgentFactory(client_kwargs={"credential": AzureCliCredential()}).create_agent_from_yaml(yaml_str)
response = await agent.run("Why is the sky blue?")
print("Agent response:", response.text)
if __name__ == "__main__":
asyncio.run(main())