![]()
Tatalakayin sa araling ito ang mga sumusunod:
Pagkatapos makumpleto ang araling ito, malalaman mo kung paano:
Makikita ang mga halimbawa ng code para sa Microsoft Agent Framework (MAF) sa repositoryong ito sa ilalim ng mga file na xx-python-agent-framework at xx-dotnet-agent-framework.

Ang Microsoft Agent Framework (MAF) ay pinag-isang framework ng Microsoft para sa paggawa ng mga AI agent. Nagbibigay ito ng kakayahang tugunan ang malawak na uri ng mga use case ng ahente na makikita sa parehong produksyon at mga environment ng pananaliksik kabilang ang:
Para maihatid ang mga AI Agent sa Produksyon, may mga katangian rin ang MAF para sa:
Nakatuon din ang Microsoft Agent Framework sa pagiging interoperable sa pamamagitan ng:
Suriin natin kung paano ina-apply ang mga katangiang ito sa ilang mga pangunahing konsepto ng Microsoft Agent Framework.

Paglikha ng mga Ahente
Ginagawa ang paglikha ng ahente sa pamamagitan ng pagtukoy ng inference service (LLM Provider), isang set ng mga instruksiyon na susundin ng AI Agent, at itinalagang name:
agent = AzureOpenAIChatClient(credential=AzureCliCredential()).create_agent( instructions="You are good at recommending trips to customers based on their preferences.", name="TripRecommender" )
Ang nasa itaas ay gumagamit ng Azure OpenAI pero maaaring lumikha ng mga ahente gamit ang iba’t ibang serbisyo kabilang ang Microsoft Foundry Agent Service:
AzureAIAgentClient(async_credential=credential).create_agent( name="HelperAgent", instructions="You are a helpful assistant." ) as agent
OpenAI Responses, ChatCompletion APIs
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.", )
o remote agents gamit ang A2A protocol:
agent = A2AAgent( name=agent_card.name, description=agent_card.description, agent_card=agent_card, url="https://your-a2a-agent-host" )
Pagpapatakbo ng mga Ahente
Pinapatakbo ang mga ahente gamit ang .run o .run_stream na mga pamamaraan para sa hindi streaming o streaming na mga sagot.
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)
Bawat pagpapatakbo ng ahente ay maaari ring magkaroon ng mga opsyon para i-customize ang mga parametro tulad ng max_tokens na ginagamit ng ahente, ang mga tools na maaaring tawagan ng ahente, at maging ang mismong model na ginagamit ng ahente.
Ito ay kapaki-pakinabang sa mga kaso kung saan kinakailangan ang partikular na mga modelo o mga tool para matapos ang gawain ng user.
Mga Tool
Maaaring tukuyin ang mga tool kapwa sa paggawa ng ahente:
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."
# Kapag direktang lumilikha ng ChatAgent
agent = ChatAgent( chat_client=OpenAIChatClient(), instructions="You are a helpful assistant", tools=[get_attractions]
at pati na rin kapag pinapatakbo ang ahente:
result1 = await agent.run( "What's the best place to visit in Seattle?", tools=[get_attractions] # Kagamitang ibinigay para lamang sa takbong ito )
Mga Thread ng Ahente
Ginagamit ang mga Thread ng Ahente upang hawakan ang mga pag-uusap na may maraming turn. Maaaring likhain ang mga thread sa alinman sa mga paraan na ito:
get_new_thread() na nagpapahintulot sa thread na mai-save sa paglipas ng panahonPara gumawa ng isang thread, ganito ang itsura ng code:
# Gumawa ng bagong thread.
thread = agent.get_new_thread() # Patakbuhin ang ahente gamit ang thread.
response = await agent.run("Hello, I am here to help you book travel. Where would you like to go?", thread=thread)
Maaari mo ring i-serialize ang thread upang maiimbak para sa hinaharap na paggamit:
# Lumikha ng bagong thread.
thread = agent.get_new_thread()
# Patakbuhin ang ahente gamit ang thread.
response = await agent.run("Hello, how are you?", thread=thread)
# Isalaysay ang thread para sa pag-iimbak.
serialized_thread = await thread.serialize()
# I-deserialize ang estado ng thread pagkatapos i-load mula sa imbakan.
resumed_thread = await agent.deserialize_thread(serialized_thread)
Middleware ng Ahente
Nakikipag-ugnayan ang mga ahente sa mga tool at LLM upang tapusin ang mga gawain ng user. Sa ilang mga scenario, gusto nating magsagawa o magtala sa pagitan ng mga interaksyong ito. Pinapahintulutan tayo ng middleware ng ahente na gawin ito sa pamamagitan ng:
Function Middleware
Pinapayagan tayo ng middleware na ito na magsagawa ng isang aksyon sa pagitan ng ahente at isang function/tool na tatawagin nito. Isang halimbawa ng paggamit nito ay kung nais mong mag-log ng mga pag-tawag sa function.
Sa code sa ibaba, tinutukoy ng next kung tatawagin ang susunod na middleware o ang aktwal na function.
async def logging_function_middleware(
context: FunctionInvocationContext,
next: Callable[[FunctionInvocationContext], Awaitable[None]],
) -> None:
"""Function middleware that logs function execution."""
# Paunang pagproseso: I-log bago ang pagpapatupad ng function
print(f"[Function] Calling {context.function.name}")
# Magpatuloy sa susunod na middleware o pagpapatupad ng function
await next(context)
# Pagkatapos ng pagproseso: I-log pagkatapos ng pagpapatupad ng function
print(f"[Function] {context.function.name} completed")
Chat Middleware
Pinapayagan tayo ng middleware na ito na magsagawa o mag-log ng aksyon sa pagitan ng ahente at ng mga request sa pagitan ng LLM.
Naglalaman ito ng mahahalagang impormasyon tulad ng mga messages na ipinapadala sa AI service.
async def logging_chat_middleware(
context: ChatContext,
next: Callable[[ChatContext], Awaitable[None]],
) -> None:
"""Chat middleware that logs AI interactions."""
# Paunang proseso: Mag-log bago ang tawag sa AI
print(f"[Chat] Sending {len(context.messages)} messages to AI")
# Magpatuloy sa susunod na middleware o serbisyo ng AI
await next(context)
# Pagkatapos ng proseso: Mag-log pagkatapos ng tugon ng AI
print("[Chat] AI response received")
Memorya ng Ahente
Tulad ng tinalakay sa araling Agentic Memory, ang memorya ay isang mahalagang elemento upang payagan ang ahente na mag-operate sa iba’t ibang mga konteksto. Nag-aalok ang MAF ng ilang magkakaibang uri ng mga memorya:
In-Memory Storage
Ito ang memorya na naka-imbak sa mga thread habang tumatakbo ang aplikasyon.
# Lumikha ng bagong thread.
thread = agent.get_new_thread() # Patakbuhin ang ahente gamit ang thread.
response = await agent.run("Hello, I am here to help you book travel. Where would you like to go?", thread=thread)
Matatagal na Mga Mensahe
Ginagamit ang memoryang ito kapag iniimbak ang kasaysayan ng pag-uusap sa iba’t ibang mga session. Tinukoy ito gamit ang chat_message_store_factory:
from agent_framework import ChatMessageStore
# Gumawa ng pasadyang imbakan ng mensahe
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
Idinagdag ang memoryang ito sa konteksto bago patakbuhin ang mga ahente. Maaaring itago ang mga memoryang ito sa mga panlabas na serbisyo tulad ng mem0:
from agent_framework.mem0 import Mem0Provider
# Paggamit ng Mem0 para sa mga advanced na kakayahan sa memorya
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
)
Obserbabilidad ng Ahente
Mahalaga ang obserbabilidad sa pagbuo ng mga maaasahan at madaling mapanatili na mga sistemang agentic. Nakikipag-integrate ang MAF sa OpenTelemetry upang magbigay ng tracing at meter para sa mas mahusay na obserbabilidad.
from agent_framework.observability import get_tracer, get_meter
tracer = get_tracer()
meter = get_meter()
with tracer.start_as_current_span("my_custom_span"):
# gumawa ng isang bagay
pass
counter = meter.create_counter("my_custom_counter")
counter.add(1, {"key": "value"})
Nag-aalok ang MAF ng mga workflow na mga paunang tukoy na mga hakbang upang tapusin ang isang gawain at kinabibilangan ang mga AI agent bilang bahagi ng mga hakbang na iyon.
Binubuo ang mga workflow ng iba’t ibang mga bahagi na nagpapahintulot ng mas mahusay na daloy ng kontrol. Pinapayagan din ng mga workflow ang multi-agent orchestration at checkpointing upang mai-save ang mga estado ng workflow.
Ang mga pangunahing bahagi ng workflow ay:
Executors
Tumatanggap ang mga executor ng mga input message, isinasagawa ang kanilang mga itinalagang gawain, at pagkatapos ay gumagawa ng output message. Ito ang nagtutulak sa workflow upang matapos ang mas malaking gawain. Maaaring AI agent o custom logic ang mga executor.
Edges
Ginagamit ang mga edge upang tukuyin ang daloy ng mga message sa workflow. Maaari itong maging:
Direct Edges - Simpleng one-to-one na koneksyon sa pagitan ng mga 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 - Na-activate kapag natugunan ang isang partikular na kondisyon. Halimbawa, kapag walang available na mga kuwarto sa hotel, maaaring magmungkahi ang executor ng ibang mga opsyon.
Switch-case Edges - Nagpapadala ng mga message sa iba’t ibang executor base sa mga tinukoy na kondisyon. Halimbawa, kung ang customer ng paglalakbay ay may priyoridad na access at ang kanilang mga gawain ay hahawakan sa ibang workflow.
Fan-out Edges - Nagpapadala ng isang message sa maraming target.
Fan-in Edges - Nangongolekta ng maraming message mula sa iba’t ibang executor at ipinapadala ito sa isang target.
Events
Upang magbigay ng mas mahusay na obserbabilidad sa mga workflow, nag-aalok ang MAF ng mga built-in na event para sa pagpapatupad kabilang ang:
WorkflowStartedEvent - Nagsisimula ang pagpapatupad ng workflowWorkflowOutputEvent - Gumagawa ng output ang workflowWorkflowErrorEvent - Nakakaranas ang workflow ng errorExecutorInvokeEvent - Nagsisimula ang executor sa pagprosesoExecutorCompleteEvent - Natatapos ng executor ang pagprosesoRequestInfoEvent - Isang request ang inilabasTinatalakay sa mga naunang seksyon ang mga pangunahing konsepto ng Microsoft Agent Framework. Habang gumagawa ka ng mas kumplikadong mga ahente, narito ang ilang mga advanced na pattern na maaaring isaalang-alang:
Makikita ang mga halimbawa ng code para sa Microsoft Agent Framework sa repositoryong ito sa ilalim ng mga file na xx-python-agent-framework at xx-dotnet-agent-framework.
Sumali sa Microsoft Foundry Discord upang makipagkita sa ibang mga nag-aaral, dumalo sa mga oras ng opisina, at masagot ang iyong mga tanong tungkol sa AI Agents.
Paunawa:
Ang dokumentong ito ay naisalin gamit ang AI translation service na Co-op Translator. Bagamat pinagsusumikapan naming maging tumpak ang salin, pakatandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang orihinal na wika ang dapat ituring na pinagtibay na sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng salin na ito.