![]()
ဒီသင်ခန်းစာမှာ ဖော်ပြမှာတွေကတော့ -
ဒီသင်ခန်းစာပြီးဆုံးပြီးနောက်မှာ သင်သည် -
Microsoft Agent Framework (MAF) အတွက် ကုဒ် နမူနာများကို ဒီ repository ၏ xx-python-agent-framework နှင့် xx-dotnet-agent-framework ဖိုင်များအောက်တွင် တွေ့နိုင်ပါသည်။

Microsoft Agent Framework (MAF) သည် AI agents များ တည်ဆောက်ရန် Microsoft ၏ စုပေါင်း framework ဖြစ်သည်။ ထုတ်လုပ်မှုနှင့် သုတေသနပတ်ဝန်းကျင်များတွင် တွေ့ရသော agentic အသုံးတော် မျိုးစုံကို ဖြေရှင်းနိုင်ရန် အလွယ်တကူညှိနှိုင်းနိုင်မှုကို ပံ့ပိုးပေးသည်၊ အထူးသဖြင့် -
ထုတ်လုပ်မှု AI Agents ပေးဆောင်ရာတွင် MAF သည် -
Microsoft Agent Framework သည် interoperability အတွက်လည်း အာရုံစိုက်မှုရှိကာ -
ဒီတော့ Microsoft Agent Framework ၏ အဓိက အကြောင်းအရာများတွင် ဒီ လက္ခဏာများဘယ်လိုပါဝင်သလို် တင်ပြအကြောင်းကြည့်လိုက်မယ်။

အီးဂျင်များ ဖန်တီးခြင်း
Agent ဖန်တီးခြင်းမှာ inference service (LLM Provider), AI Agent အတွက် လိုက်နာရမည့် ညွှန်ကြားချက်များနှင့် ခန့်အပ်ထားသော name တန်ဖိုး တိုက်ရိုက် သတ်မှတ်ခြင်းဖြစ်သည်-
agent = AzureOpenAIChatClient(credential=AzureCliCredential()).create_agent( instructions="You are good at recommending trips to customers based on their preferences.", name="TripRecommender" )
အထက်ပါ ကုဒ်မှာ Azure OpenAI ဖြင့် အသုံးပြုထားသော်လည်း Microsoft Foundry Agent Service အပါအဝင် နောက်ထပ် ဝန်ဆောင်မှု မျိုးစုံမှ Devices များ ဖန်တီးနိုင်သည်-
AzureAIAgentClient(async_credential=credential).create_agent( name="HelperAgent", instructions="You are a helpful assistant." ) as agent
OpenAI ၏ Responses, ChatCompletion API များ
agent = OpenAIResponsesClient().create_agent( name="WeatherBot", instructions="You are a helpful weather assistant.", )
agent = OpenAIChatClient().create_agent( name="HelpfulAssistant", instructions="You are a helpful assistant.", )
သို့မဟုတ် A2A protocol အသုံးပြု၍ အဝေးမှ ထိန်းချုပ် agent များ -
agent = A2AAgent( name=agent_card.name, description=agent_card.description, agent_card=agent_card, url="https://your-a2a-agent-host" )
Agent များ လည်ပတ်ခြင်း
Agents များကို non-streaming သို့မဟုတ် streaming ဖြင့် .run သို့မဟုတ် .run_stream ပုံစံဖြင့် လည်ပတ်နိုင်သည်။
result = await agent.run("What are good places to visit in Amsterdam?")
print(result.text)
async for update in agent.run_stream("What are the good places to visit in Amsterdam?"):
if update.text:
print(update.text, end="", flush=True)
Agent တစ်ခုလည်ပတ်တိုင်းမှာ agent အသုံးပြုမည့် max_tokens, agent ခေါ်ဆိုမှု လုပ်နိုင်သော tools, ဖြင့် ဖန်တီးသုံးမည့် model တို့ စိတ်ကြိုက် ပြင်ဆင်နိုင်သည်။
အသုံးပြုသူ၏ တာဝန်နှင့် ကိုက်ညီသည့် အထူးပုံစံ မော်ဒယ်များ သို့ tools များ သတ်မှတ်လိုသည့် ရည်ရွယ်ချက်များတွင် အထူးအသုံးဝင်သည်။
Tools
Tools များကို agent ဖန်တီးစဉ်တွင် သတ်မှတ်နိုင်သည်-
def get_attractions( location: Annotated[str, Field(description="The location to get the top tourist attractions for")], ) -> str: """Get the top tourist attractions for a given location.""" return f"The top attractions for {location} are."
# ChatAgent ကိုတိုက်ရိုက်ဖန်တီးထားတဲ့အခါ
agent = ChatAgent( chat_client=OpenAIChatClient(), instructions="You are a helpful assistant", tools=[get_attractions]
နှင့် agent လည်ပတ်စဉ်တွင်လည်း သတ်မှတ်အသုံးပြုနိုင်သည်-
result1 = await agent.run( "What's the best place to visit in Seattle?", tools=[get_attractions] # ဤအလုပ်အတွက်သာ ပံ့ပိုးပေးထားသောကိရိယာ)
Agent Threads
Agent Threads သည် multi-turn စကားပြောဆိုမှုများကို ကိုင်တွယ်ရန် အသုံးပြုသည်။ Threads များကို အောက်ပါ နည်းလမ်းနှစ်မျိုးဖြင့် ဖန်တီးနိုင်သည်-
get_new_thread() ဖြင့် thread ကို အချိန်ကြာရှည်သိမ်းဆည်းထားရန်Thread ဖန်တီးရန် နမူနာ ကုဒ် -
# သစ် thread အသစ်တစ်ခုကို ဖန်တီးပါ။
thread = agent.get_new_thread() # thread နှင့်အတူ agent ကို ပြေးပါ။
response = await agent.run("Hello, I am here to help you book travel. Where would you like to go?", thread=thread)
Thread ကို သိမ်းဆည်းရန် serialization လုပ်နိုင်ပါသည်-
# သစ်တစ်ခုသော စကြည်ကို ဖန်တီးပါ။
thread = agent.get_new_thread()
# စကြည်နဲ့ အေးဂျင့်ကို အတူ လည်ပတ်ပါ။
response = await agent.run("Hello, how are you?", thread=thread)
# သိမ်းဆည်းရန် စကြည်ကို စီရင်လိုးတိုင်လုပ်ပါ။
serialized_thread = await thread.serialize()
# သိမ်းဆည်းထားမှုမှ ဒေတာ tải ချင်းပြီးနောက် စကြည်အခြေအနေကို အစီအစဉ်ချပါ။
resumed_thread = await agent.deserialize_thread(serialized_thread)
Agent Middleware
Agents များသည် tools နှင့် LLM များအား အသုံးပြု၍ အသုံးပြုသူ၏ တာဝန်များကို ပြီးမြောက်စေသည်။ အချို့ ဇာတ်ကြောင်းများတွင် နှစ်ဖက်စွပ်စွဲမှုများကို ကြားနားတွင် လုပ်ဆောင်ခြင်း သို့မဟုတ် မှတ်တမ်းတင်ခြင်း လိုအပ်သည်။ Agent middleware သည် အောက်ပါအတိုင်း ထောက်ပံ့ပေးသည်-
Function Middleware
Middleware သည် agent နှင့် ဖုန်းခေါ်ဆိုမည့် function/tool အကြား action ဆောင်ရွက်ရန် အသုံးပြုသည်။ ဥပမာ logging လုပ်ချင်သော function call များအတွက် အသုံးချနိုင်သည်။
ကုဒ်တွင် next သည် နောက်တစ်ခုသော middleware သို့မဟုတ် function ကိုခေါ်ရန် သတ်မှတ်သည်။
async def logging_function_middleware(
context: FunctionInvocationContext,
next: Callable[[FunctionInvocationContext], Awaitable[None]],
) -> None:
"""Function middleware that logs function execution."""
# ရှေ့ဆောင်လုပ်ငန်းစဉ်: လုပ်ဆောင်ချက်စတင်မတိုင်မှီ မှတ်တမ်းတင်ခြင်း
print(f"[Function] Calling {context.function.name}")
# နောက်ထပ် middleware သို့မဟုတ် လုပ်ဆောင်ချက်စဉ်ဆက်လုပ်ရန်
await next(context)
# နောက်ဆက်တွဲလုပ်ငန်းစဉ်: လုပ်ဆောင်ချက်ပြီးနောက်မှတ်တမ်းတင်ခြင်း
print(f"[Function] {context.function.name} completed")
Chat Middleware
Middleware သည် agent နှင့် LLM ကြား ပေးပို့သော စာတိုများအား လုပ်ဆောင်ခြင်း သို့မှတ်တမ်းတင်ခြင်းများ ဆောင်ရွက်သည်။
AI ဝန်ဆောင်မှုသို့ ပေးပို့သော messages အချက်အလက်များ ပါဝင်သည်။
async def logging_chat_middleware(
context: ChatContext,
next: Callable[[ChatContext], Awaitable[None]],
) -> None:
"""Chat middleware that logs AI interactions."""
# ပြင်ဆင်ခြင်းမပြုမီ: AI ခေါ်ဆိုမှုမပြုမီ မှတ်တမ်းတင်ခြင်း
print(f"[Chat] Sending {len(context.messages)} messages to AI")
# နောက်ထပ် middleware သို့မဟုတ် AI ဝန်ဆောင်မှုဆီသို့ ဆက်လက်သွားရန်
await next(context)
# ပြင်ဆင်ပြီးချိန်: AI ရဲ့တုံ့ပြန်ချက်အပြီး မှတ်တမ်းတင်ခြင်း
print("[Chat] AI response received")
Agent Memory
Agentic Memory သင်ခန်းစာတွင် ဖော်ပြသလို မှတ်ဉာဏ်သည် အီးဂျင်အား စကားဝိုင်း အမျိုးမျိုးအပေါ် အလုပ်လုပ်ဆောင်နိုင်ရန် အရေးကြီးသော အစိတ်အပိုင်းဖြစ်သည်။ MAF သည် မှတ်ဉာဏ်အမျိုးမျိုးကို ပံ့ပိုးပေးသည်။
In-Memory Storage
ဒီ memory သည် application runtime ခန္ဓာကိုယ်တွင် threads ထဲတွင် သိမ်းဆည်းထားသည်။
# Thread အသစ်တစ်ခု ဖန်တီးပါ။
thread = agent.get_new_thread() # Thread နဲ့အတူ agent ကို chạy ပါ။
response = await agent.run("Hello, I am here to help you book travel. Where would you like to go?", thread=thread)
Persistent Messages
ဒီ memory သည် ဆွေးနွေးမှုမှတ်တမ်းများကို မတူညီသော session များအတွင်း သိမ်းဆည်းရန် အသုံးပြုသည်။ chat_message_store_factory ဖြင့် သတ်မှတ်သည် -
from agent_framework import ChatMessageStore
# စိတ်ကြိုက်သတင်းစကားဒေတာစတိုးတည်ဆောက်ပါ
def create_message_store():
return ChatMessageStore()
agent = ChatAgent(
chat_client=OpenAIChatClient(),
instructions="You are a Travel assistant.",
chat_message_store_factory=create_message_store
)
Dynamic Memory
ဒီ memory သည် agents လည်ပတ်မည့် context မတိုင်မီ ထည့်သွင်းထားသော memory များဖြစ်သည်။ mem0 ကဲ့သို့သော ပြင်ပ ဝန်ဆောင်မှုများတွင် သိမ်းဆည်းနိုင်သည်။
from agent_framework.mem0 import Mem0Provider
# အဆင့်မြင့်မွန်းမာရေးစွမ်းရည်များအတွက် Mem0 ကိုသုံးခြင်း
memory_provider = Mem0Provider(
api_key="your-mem0-api-key",
user_id="user_123",
application_id="my_app"
)
agent = ChatAgent(
chat_client=OpenAIChatClient(),
instructions="You are a helpful assistant with memory.",
context_providers=memory_provider
)
Agent Observability
Observability သည် ယုံကြည် စိတ်ချရပြီး ထိန်းသိမ်းနိုင်သော agentic စနစ်များ အတွက် အရေးကြီးသည်။ MAF သည် OpenTelemetry နှင့် ပေါင်းစပ်၍ သတိထားကြည့်ရှုမှုနှင့် အတိုင်းအတာများ ပံ့ပိုးပေးသည်။
from agent_framework.observability import get_tracer, get_meter
tracer = get_tracer()
meter = get_meter()
with tracer.start_as_current_span("my_custom_span"):
# တစ်ခုခုလုပ်ပါ
pass
counter = meter.create_counter("my_custom_counter")
counter.add(1, {"key": "value"})
MAF သည် မှီဝဲတောင့်တင်းလိုအပ်သည့် အဆင့်များကို တွေ့ရှိပြီး တာဝန်ပြည့်စုံအောင် AI agents များ ပါဝင်သည့် workflows များကို ပံ့ပိုးပေးသည်။
Workflows သည် ဖွဲ့စည်းမှုအပိုင်းများ များစွာ ပါဝင်ပြီး ထိန်းချုပ်မှု ပိုမိုကောင်းမွန်စေသည်။ Workflows သည် multi-agent orchestration နှင့် checkpointing များဖြင့် workflow အခြေအနေများ သိမ်းဆည်းနိုင်သည်။
Workflow ၏ အဓိက အစိတ်အပိုင်းများမှာ -
Executors
Executors သည် input messages လက်ခံကာ ဖော်ပြထားသောလုပ်ဆောင်ချက်များ ပြီးမှ output message ထုတ်ပေးသည်။ ၎င်းသည် workflow ကို ပြီးမြောက်စေရန် ဆက်လက်ရွှေ့ဆိုင်းသည်။ Executors သည် AI agent သို့မဟုတ် စိတ်ကြိုက် logic ဖြစ်နိုင်သည်။
Edges
Edges များသည် workflow ၌ messages များ စီးဆင်းပုံကို သတ်မှတ်ရန် အသုံးပြုသည်။ ၎င်းများမှာ -
Direct Edges - Executor တစ်ခုမှ တစ်ခုသို့ တိုက်ရိုက်ချိတ်ဆက်ခြင်း -
from agent_framework import WorkflowBuilder
builder = WorkflowBuilder()
builder.add_edge(source_executor, target_executor)
builder.set_start_executor(source_executor)
workflow = builder.build()
Conditional Edges - သတ်မှတ်ထားသောအခြေအနေဖြစ်ပေါ်ပြီးမှ ဖွင့်လှစ်သည်။ ဥပမာ- စတိတ်ခန်းလွတ်ရှိမှုမရှိပါက အခြားရွေးချယ်စရာအကြံပြုခြင်း။
Switch-case Edges - သတ်မှတ်ထားသော အခြေအနေများအလိုက် messages များကို တိုင်းတာ၍ အခြား executors များသို့ ပေးပို့ခြင်း။ ဥပမာ- ခရီးသွားဖောက်သည်တွင် မြန်ဆန်ရုံးဝင်ခွင့်ရှိပြီး workflow အခြားဖြင့် စီမံမည်။
Fan-out Edges - တစ်စိတ်တစ်ပိုင်း message を 多数のターゲットに送信。
Fan-in Edges - 多数のexecutorsからのメッセージを集めて、一つのターゲットに送信。
Events
Workflows တွင် observation ပိုမိုတိကျစေရန် MAF သည် အောက်ပါ အမျိုးအစား built-in events များကို ပံ့ပိုးပေးသည် -
WorkflowStartedEvent - Workflow လည်ပတ်မှု စတင်သည်WorkflowOutputEvent - Workflow နှင့် တွက်ချက် ပြန်လည်ထုတ်ပေးသည့် outputWorkflowErrorEvent - Workflow သည် အမှားတက်သည်ExecutorInvokeEvent - Executor သည် ဖြေရှင်းရေး စတင်သည်ExecutorCompleteEvent - Executor ဖြေရှင်းရေး ပြီးမြောက်သည်RequestInfoEvent - တောင်းဆိုမှု တစ်ခု ထုတ်ပေးသည်အထက်ပါ အကြောင်းအရာများသည် Microsoft Agent Framework ၏ အဓိက မှတ်ချက်များ ဖြစ်သည်။ agents များ ပို၍ရှုပ်ထွေးလာသောအခါ - အောက်ပါ တိုးတက်သော ပုံစံများကို စဉ်းစားပါ-
Microsoft Agent Framework သော ကုဒ် နမူနာများကို ဒီ repository ၏ xx-python-agent-framework နှင့် xx-dotnet-agent-framework ဖိုင်များ အောက်တွင် တွေ့နိုင်ပါသည်။
အခြား တက်ကြွသူများနှင့် တွေ့ဆုံ၊ office hours တက်ရောက်ပြီး AI Agents သာမန်မေးခွန်း များကို ဖြေကြားပေးရန် Microsoft Foundry Discord တွင် ပါဝင်ဆွေးနွေးလိုက်ပါ။
အကြောင်းပြချက်
ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု Co-op Translator အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှုအတွက် ကြိုးစားဆောင်ရွက်သော်လည်း အလိုအလျောက်ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မှားယွင်းသည့်အချက်များ ပါရှိနိုင်ကြောင်း သတိပြု Awareness၊ မူလစာတမ်း၏ မူလဘာသာဖြင့် ရေးသားထားသည့် မူရင်းကို ကိုးကားသင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုအား အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသည့် တိတိကျကျမရှိမှုများ သို့မဟုတ် မှားယွင်းဖော်ပြချက်များအတွက် ကျွန်ုပ်တို့တာဝန်မရှိပါ။