![]()
Pelajaran ini akan meliputi:
Selepas menamatkan pelajaran ini, anda akan tahu bagaimana untuk:
Contoh kod untuk Rangka Kerja Ejen Microsoft (MAF) boleh didapati dalam repositori ini di bawah fail xx-python-agent-framework dan xx-dotnet-agent-framework.

Rangka Kerja Ejen Microsoft (MAF) adalah rangka kerja bersepadu Microsoft untuk membina ejen AI. Ia menawarkan fleksibiliti untuk menangani pelbagai kes penggunaan ejen yang dilihat di persekitaran pengeluaran dan penyelidikan termasuk:
Untuk memberikan Ejen AI dalam Pengeluaran, MAF juga telah memasukkan ciri untuk:
Rangka Kerja Ejen Microsoft juga memfokuskan pada kebolehoperasian dengan:
Mari lihat bagaimana ciri-ciri ini diterapkan pada beberapa konsep teras Rangka Kerja Ejen Microsoft.

Mencipta Ejen
Penciptaan ejen dilakukan dengan menentukan perkhidmatan inferens (Penyedia LLM), satu
set arahan untuk Ejen AI ikuti, dan nama yang diberikan:
agent = AzureOpenAIChatClient(credential=AzureCliCredential()).create_agent( instructions="You are good at recommending trips to customers based on their preferences.", name="TripRecommender" )
Di atas menggunakan Azure OpenAI tetapi ejen boleh dicipta menggunakan pelbagai perkhidmatan termasuk Microsoft Foundry Agent Service:
AzureAIAgentClient(async_credential=credential).create_agent( name="HelperAgent", instructions="You are a helpful assistant." ) as agent
API OpenAI Responses, ChatCompletion
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.", )
atau MiniMax, yang menyediakan API serasi OpenAI dengan tetingkap konteks besar (sehingga 204K token):
agent = OpenAIChatClient(base_url="https://api.minimax.io/v1", api_key=os.environ["MINIMAX_API_KEY"], model_id="MiniMax-M3").create_agent( name="HelpfulAssistant", instructions="You are a helpful assistant.", )
atau ejen jauh menggunakan protokol A2A:
agent = A2AAgent( name=agent_card.name, description=agent_card.description, agent_card=agent_card, url="https://your-a2a-agent-host" )
Menjalankan Ejen
Ejen dijalankan menggunakan kaedah .run atau .run_stream untuk respons bukan streaming atau streaming.
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)
Setiap larian ejen juga boleh mempunyai pilihan untuk menyesuaikan parameter seperti max_tokens yang digunakan oleh ejen, tools yang boleh dipanggil oleh ejen, malah model itu sendiri yang digunakan untuk ejen.
Ini berguna dalam kes model atau alat tertentu diperlukan untuk melengkapkan tugas pengguna.
Alat
Alat boleh ditakrifkan semasa menentukan ejen:
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."
# Apabila membuat ChatAgent secara langsung
agent = ChatAgent( chat_client=OpenAIChatClient(), instructions="You are a helpful assistant", tools=[get_attractions]
dan juga semasa menjalankan ejen:
result1 = await agent.run( "What's the best place to visit in Seattle?", tools=[get_attractions] # Alat disediakan hanya untuk larian ini )
Jejari Ejen
Jejari Ejen digunakan untuk mengendalikan perbualan multi-pusingan. Jejari boleh dicipta sama ada dengan:
get_new_thread() yang membolehkan jejari disimpan dari masa ke masaUntuk mencipta jejari, kodnya nampak seperti ini:
# Cipta benang baru.
thread = agent.get_new_thread() # Jalankan ejen dengan benang tersebut.
response = await agent.run("Hello, I am here to help you book travel. Where would you like to go?", thread=thread)
Anda kemudian boleh menyimpan secara bersiri jejari untuk disimpan bagi kegunaan kemudian:
# Cipta benang baru.
thread = agent.get_new_thread()
# Jalankan ejen dengan benang tersebut.
response = await agent.run("Hello, how are you?", thread=thread)
# Serealkan benang untuk penyimpanan.
serialized_thread = await thread.serialize()
# Deserialkan keadaan benang selepas dimuatkan dari penyimpanan.
resumed_thread = await agent.deserialize_thread(serialized_thread)
Perantara Ejen
Ejen berinteraksi dengan alat dan LLM untuk melengkapkan tugas pengguna. Dalam senario tertentu, kita mahu melaksanakan atau mengesan interaksi antara ini. Perantara ejen membolehkan kita melakukan ini melalui:
Perantara Fungsi
Perantara ini membolehkan kita melaksanakan tindakan antara ejen dan fungsi/alat yang akan dipanggil. Contoh bila ini digunakan ialah apabila anda mahu membuat log panggilan fungsi.
Dalam kod di bawah next mentakrifkan jika perantara seterusnya atau fungsi sebenar harus dipanggil.
async def logging_function_middleware(
context: FunctionInvocationContext,
next: Callable[[FunctionInvocationContext], Awaitable[None]],
) -> None:
"""Function middleware that logs function execution."""
# Pra-pemprosesan: Log sebelum pelaksanaan fungsi
print(f"[Function] Calling {context.function.name}")
# Teruskan ke middleware seterusnya atau pelaksanaan fungsi
await next(context)
# Pasca-pemprosesan: Log selepas pelaksanaan fungsi
print(f"[Function] {context.function.name} completed")
Perantara Sembang
Perantara ini membolehkan kita melaksanakan atau merekod tindakan antara ejen dan permintaan antara LLM .
Ini mengandungi maklumat penting seperti mesej yang dihantar ke perkhidmatan AI.
async def logging_chat_middleware(
context: ChatContext,
next: Callable[[ChatContext], Awaitable[None]],
) -> None:
"""Chat middleware that logs AI interactions."""
# Pra-pemprosesan: Log sebelum panggilan AI
print(f"[Chat] Sending {len(context.messages)} messages to AI")
# Teruskan ke middleware atau perkhidmatan AI seterusnya
await next(context)
# Pasca-pemprosesan: Log selepas respons AI
print("[Chat] AI response received")
Memori Ejen
Seperti yang dibincangkan dalam pelajaran Memori Ejenik, memori adalah unsur penting untuk membolehkan ejen beroperasi dalam konteks berbeza. MAF menawarkan beberapa jenis memori yang berbeza:
Penyimpanan Dalam Memori
Ini adalah memori yang disimpan dalam jejari semasa runtime aplikasi.
# Cipta benang baru.
thread = agent.get_new_thread() # Jalankan ejen dengan benang tersebut.
response = await agent.run("Hello, I am here to help you book travel. Where would you like to go?", thread=thread)
Mesej Kekal
Memori ini digunakan apabila menyimpan sejarah perbualan merentasi sesi berbeza. Ia ditakrifkan menggunakan chat_message_store_factory :
from agent_framework import ChatMessageStore
# Cipta stor mesej tersuai
def create_message_store():
return ChatMessageStore()
agent = ChatAgent(
chat_client=OpenAIChatClient(),
instructions="You are a Travel assistant.",
chat_message_store_factory=create_message_store
)
Memori Dinamik
Memori ini ditambah ke konteks sebelum ejen dijalankan. Memori ini boleh disimpan dalam perkhidmatan luaran seperti mem0:
from agent_framework.mem0 import Mem0Provider
# Menggunakan Mem0 untuk keupayaan memori lanjutan
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
)
Pemerhatian Ejen
Observabiliti adalah penting untuk membina sistem agentik yang boleh dipercayai dan mudah diselenggara. MAF berintegrasi dengan OpenTelemetry untuk menyediakan penjejakan dan meter bagi observabiliti yang lebih baik.
from agent_framework.observability import get_tracer, get_meter
tracer = get_tracer()
meter = get_meter()
with tracer.start_as_current_span("my_custom_span"):
# buat sesuatu
pass
counter = meter.create_counter("my_custom_counter")
counter.add(1, {"key": "value"})
MAF menawarkan aliran kerja yang merupakan langkah-langkah yang telah ditetapkan untuk menyelesaikan tugas dan termasuk agen AI sebagai komponen dalam langkah-langkah tersebut.
Aliran kerja terdiri daripada komponen yang berbeza yang membolehkan kawalan aliran yang lebih baik. Aliran kerja juga membenarkan orkestrasi multi-agen dan penanda checkpoint untuk menyimpan status aliran kerja.
Komponen teras aliran kerja adalah:
Pelaksana
Pelaksana menerima mesej input, melaksanakan tugas yang diberikan, dan kemudian menghasilkan mesej output. Ini menggerakkan aliran kerja ke hadapan ke arah menyelesaikan tugasan yang lebih besar. Pelaksana boleh jadi agen AI atau logik tersuai.
Sisi
Sisi digunakan untuk menentukan aliran mesej dalam aliran kerja. Ini boleh menjadi:
Sisi Langsung - Sambungan satu-ke-satu ringkas antara pelaksana:
from agent_framework import WorkflowBuilder
builder = WorkflowBuilder()
builder.add_edge(source_executor, target_executor)
builder.set_start_executor(source_executor)
workflow = builder.build()
Sisi Bersyarat - Diaktifkan selepas syarat tertentu dipenuhi. Contohnya, apabila bilik hotel tidak tersedia, pelaksana boleh mencadangkan pilihan lain.
Sisi Suis-kes - Menghala mesej kepada pelaksana berbeza berdasarkan syarat yang ditetapkan. Contohnya, jika pelanggan perjalanan mempunyai akses keutamaan dan tugas mereka akan dikendalikan melalui aliran kerja lain.
Sisi Fan-out - Hantar satu mesej kepada pelbagai sasaran.
Sisi Fan-in - Kumpul pelbagai mesej dari pelaksana berbeza dan hantar kepada satu sasaran.
Acara
Untuk menyediakan observabiliti yang lebih baik dalam aliran kerja, MAF menawarkan acara terbina dalam untuk pelaksanaan termasuk:
WorkflowStartedEvent - Pelaksanaan aliran kerja bermulaWorkflowOutputEvent - Aliran kerja menghasilkan outputWorkflowErrorEvent - Aliran kerja mengalami ralatExecutorInvokeEvent - Pelaksana mula memprosesExecutorCompleteEvent - Pelaksana selesai memprosesRequestInfoEvent - Permintaan dikeluarkanBahagian di atas merangkumi konsep utama Microsoft Agent Framework. Apabila anda membina agen yang lebih kompleks, berikut adalah beberapa corak lanjutan yang boleh dipertimbangkan:
Microsoft Agent Framework adalah rangka kerja-interoperasi — anda tidak terhad kepada agen yang ditulis dengan MAF. Jika anda sudah mempunyai agen yang dibina dengan LangChain atau LangGraph, anda boleh menjalankannya sebagai agen yang dihoskan Microsoft Foundry supaya Foundry menguruskan masa jalan, sesi, penskalaan, identiti, dan titik hujung protokol untuk anda, sementara logik agen anda kekal dalam LangGraph.
Ini dilakukan dengan pakej langchain_azure_ai.agents.hosting, yang mendedahkan graf LangGraph yang dikompilasi melalui protokol yang sama seperti agen yang dihoskan Foundry gunakan.
1. Pasang ekstra hosting:
pip install -U "langchain-azure-ai[hosting]>=1.2.4" azure-identity
Ekstra hosting memasang perpustakaan protokol Foundry: azure-ai-agentserver-responses (titik hujung /responses yang serasi OpenAI) dan azure-ai-agentserver-invocations (titik hujung /invocations generik).
2. Pilih protokol hosting:
| Protokol | Kelas Hos | Titik Hujung | Gunakan apabila |
|---|---|---|---|
| Respons | ResponsesHostServer |
/responses |
Anda mahukan sembang, penstriman, sejarah respons, dan penjejakan perbualan yang serasi OpenAI — lalai yang disyorkan untuk agen perbualan. |
| Panggilan | InvocationsHostServer |
/invocations |
Anda memerlukan bentuk JSON tersuai, titik hujung gaya webhook, atau pemprosesan bukan perbualan. |
Oleh kerana API Respons adalah API utama untuk pembangunan gaya agen dalam Foundry, mulakan dengan ResponsesHostServer untuk kebanyakan agen.
3. Konfigurasikan pembolehubah persekitaran (az login dahulu supaya DefaultAzureCredential boleh mengesahkan):
export FOUNDRY_PROJECT_ENDPOINT="https://<resource>.services.ai.azure.com/api/projects/<project>"
export FOUNDRY_MODEL_NAME="gpt-5-mini"
Apabila agen kemudian berjalan sebagai agen dihoskan di Foundry, platform secara automatik menyuntik FOUNDRY_PROJECT_ENDPOINT.
4. Dedahkan agen LangGraph melalui protokol Respons:
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI
from langchain_azure_ai.agents.hosting import ResponsesHostServer
_AZURE_AI_SCOPE = "https://ai.azure.com/.default"
def build_chat_model() -> ChatOpenAI:
project_endpoint = os.environ["FOUNDRY_PROJECT_ENDPOINT"].rstrip("/")
deployment = os.environ.get("FOUNDRY_MODEL_NAME", "gpt-5-mini")
credential = DefaultAzureCredential()
project = AIProjectClient(endpoint=project_endpoint, credential=credential)
openai_client = project.get_openai_client()
token_provider = get_bearer_token_provider(credential, _AZURE_AI_SCOPE)
# ChatOpenAI di sini menyasarkan titik hujung (Responses) yang serasi OpenAI dari projek Foundry.
return ChatOpenAI(
model=deployment,
base_url=str(openai_client.base_url),
api_key=token_provider,
)
def main() -> None:
graph = create_agent(build_chat_model(), tools=[])
port = int(os.environ.get("PORT", "8088"))
ResponsesHostServer(graph).run(port=port)
if __name__ == "__main__":
main()
Jalankan secara tempatan dengan python main.py, kemudian hantar permintaan Respons ke http://localhost:8088/responses.
Tingkah laku utama:
previous_response_id atau ID conversation. Jika graf anda dikompilasi dengan cekpoin LangGraph, Foundry mengikat status perbualan kepada checkpoint (gunakan cekpoin tahan lama dalam produksi; MemorySaver sesuai untuk ujian tempatan).interrupt(), ResponsesHostServer memaparkan interupsi yang sedang menunggu sebagai item function_call / mcp_approval_request Respons, dan pelanggan meneruskan dengan function_call_output / mcp_approval_response yang sepadan.azd ext install azure.ai.agents, azd ai agent init -m <manifest>, azd ai agent run (tempatan, memerlukan Docker), kemudian azd provision dan azd deploy. Pelaksanaan agen yang dihoskan memerlukan peranan Pengurus Projek Foundry.Versi boleh dijalankan bagi contoh ini terdapat dalam code-samples/14-langchain-hosted-agent.py. Untuk panduan lengkap (protokol Panggilan, skema permintaan tersuai, dan penyelesaian masalah), lihat Hoskan agen LangGraph sebagai agen dihoskan Foundry.
Contoh kod untuk Microsoft Agent Framework boleh didapati dalam repositori ini di bawah fail xx-python-agent-framework dan xx-dotnet-agent-framework.
Sertai Microsoft Foundry Discord untuk bertemu dengan pelajar lain, menghadiri waktu pejabat dan dapatkan jawapan bagi soalan AI Agents anda.
Membina Agen Penggunaan Komputer (CUA)
Penafian: Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.