![]()
हा धडा खालील गोष्टी कव्हर करेल:
हा धडा पूर्ण केल्यावर, आपण काय जाणून घेणार आहात:
Microsoft Agent Framework (MAF) साठीचे कोड नमुने या रिपॉझिटरीमध्ये xx-python-agent-framework आणि xx-dotnet-agent-framework फाइलांखाली आढळतील.

Microsoft Agent Framework (MAF) हे AI एजंट तयार करण्यासाठी Microsoft चे एकसंध फ्रेमवर्क आहे. हे उत्पादन आणि संशोधन वातावरणात दिसणाऱ्या विविध agentic उपयोग प्रकरणांना सामोरे जाण्यासाठी लवचिकता देते, ज्यामध्ये समाविष्ट आहेत:
प्रॉडक्शनमध्ये AI एजंट वितरीत करण्यासाठी, MAF मध्ये खालील वैशिष्ट्ये समाविष्ट आहेत:
Microsoft Agent Framework हा परस्पर-परिचालकीय (interoperable) असण्यावर देखील लक्ष केंद्रित करतो:
या वैशिष्ट्यांचा Microsoft Agent Framework च्या काही मुख्य संकल्पनांवर कसा वापर केला जातो ते पाहूया.

एजंट तयार करणे
एजंट तयार करणे हे inference सेवा (LLM Provider), AI एजंटने अनुसरण करण्यासाठी सूचना संच, आणि एक नियुक्त 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:
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.", )
किंवा A2A प्रोटोकॉल वापरून रिमोट एजंट्स:
agent = A2AAgent( name=agent_card.name, description=agent_card.description, agent_card=agent_card, url="https://your-a2a-agent-host" )
एजंट चालवणे
एजंट्स .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)
प्रत्येक एजंट रनमध्ये max_tokens, एजंट कॉल करू शकणारी tools, आणि अगदी एजंटसाठी वापरले जाणारे model सारखे पॅरामीटर्स सानुकूल करण्याचे पर्याय देखील असू शकतात.
हा उपयोगी असतो जेंव्हा विशिष्ट मॉडेल्स किंवा टूल्स वापरणे वापरकर्त्याच्या कामासाठी आवश्यक असते.
टूल्स
टूल्स एजंट परिभाषित करताना दोन्ही ठिकाणी परिभाषित केल्या जाऊ शकतात:
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]
आणि एजंट चालवताना देखील:
result1 = await agent.run( "What's the best place to visit in Seattle?", tools=[get_attractions] # हे साधन फक्त या रनसाठी प्रदान केले आहे )
एजंट थ्रेड्स
एजंट थ्रेड्स बहु-फेऱ्यांच्या संभाषणांना हाताळण्यासाठी वापरल्या जातात. थ्रेड्स तयार करता येतात:
get_new_thread() वापरून ज्यामुळे थ्रेड वेळोवेळी जतन केला जाऊ शकतोथ्रेड तयार करण्याचा कोड असा दिसतो:
# नवीन थ्रेड तयार करा.
thread = agent.get_new_thread() # एजंटला त्या थ्रेडसह चालवा.
response = await agent.run("Hello, I am here to help you book travel. Where would you like to go?", thread=thread)
नंतर आपण नंतर वापरण्यासाठी थ्रेड सिरीयलाईज़ करू शकता:
# नवीन थ्रेड तयार करा.
thread = agent.get_new_thread()
# थ्रेडसह एजंट चालवा.
response = await agent.run("Hello, how are you?", thread=thread)
# संग्रहणासाठी थ्रेड सीरिअलाइझ करा.
serialized_thread = await thread.serialize()
# संग्रहणातून लोड केल्यानंतर थ्रेडची स्थिती डीसीरिअलाइझ करा.
resumed_thread = await agent.deserialize_thread(serialized_thread)
एजंट मिडलवेअर
एजंट्स टूल्स आणि LLMs सह संवाद करून वापरकर्त्यांचे कार्य पूर्ण करतात. काही परिस्थितींमध्ये, या संवादांदरम्यान एखादी क्रिया कार्यान्वित करायची किंवा ट्रॅक करायची असते. एजंट मिडलवेअर आम्हाला हे करण्यास सक्षम करते:
फंक्शन मिडलवेअर
हे मिडलवेअर एजंट आणि कॉल केला जाणारा फंक्शन/टूल या दरम्यान एखादी क्रिया चालवण्याची परवानगी देते. उदाहरणार्थ, फंक्शन कॉलवर लॉगिंग करायचे असल्यास हे वापरले जाऊ शकते.
खालच्या कोडमध्ये next हे परिभाषित करते की पुढचे मिडलवेअर कॉल करायचे की प्रत्यक्ष फंक्शन.
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}")
# पुढील मिडलवेअर किंवा फंक्शनच्या अंमलबजावणीकडे पुढे जा
await next(context)
# पश्च-प्रक्रिया: फंक्शनच्या अंमलबजावणी नंतर लॉग करा
print(f"[Function] {context.function.name} completed")
चॅट मिडलवेअर
हे मिडलवेअर 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")
# पुढील मिडलवेअर किंवा AI सेवेकडे पुढे जा
await next(context)
# पोस्ट-प्रक्रिया: AI प्रतिसादानंतर नोंदी करा
print("[Chat] AI response received")
एजंट मेमरी
Agentic Memory धड्यात चर्चा केलेप्रमाणे, मेमरी ही एजंटला विविध संदर्भांवर कार्य करण्यास सक्षम करण्यासाठी एक महत्त्वाचा घटक आहे. MAF मध्ये अनेक प्रकारच्या मेमरी उपलब्ध आहेत:
इन-मेमरी स्टोरेज
ही मेमरी अनुप्रयोग रनटाइम दरम्यान थ्रेड्समध्ये साठवली जाते.
# नवीन थ्रेड तयार करा.
thread = agent.get_new_thread() # त्या थ्रेडसह एजंट चालवा.
response = await agent.run("Hello, I am here to help you book travel. Where would you like to go?", thread=thread)
स्थायी संदेश (Persistent Messages)
ही मेमरी वेगवेगळ्या सत्रांमध्ये संभाषण इतिहास साठवण्यासाठी वापरली जाते. हे 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
)
डायनॅमिक मेमरी
ही मेमरी एजंट सुरु होण्यापूर्वी संदर्भात जोडली जाते. या मेमरी बाह्य सेवांमध्ये जसे 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
)
एजंट ऑब्झर्वेबिलिटी
ऑब्झर्वेबिलिटी विश्वसनीय आणि देखभालयोग्य 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 एजंट घटक समाविष्ट करतात.
वर्कफ्लोज वेगवेगळ्या घटकांनी बनलेले असतात जे नियंत्रण प्रवाह सुधारतात. वर्कफ्लोज मल्टी-एजंट ऑर्केस्ट्रेशन आणि वर्कफ्लो स्थिती जतन करण्यासाठी चेकपॉइंटिंग सक्षम करतात.
वर्कफ्लोचे मुख्य घटक म्हणजे:
एक्झिक्युटर्स
एक्झिक्युटर्स इनपुट संदेश प्राप्त करतात, त्यांच्या दिलेल्या कामे पार पाडतात, आणि नंतर आउटपुट संदेश तयार करतात. हे वर्कफ्लोला मोठे कार्य पूर्ण करण्याच्या दिशेने पुढे नेते. एक्झिक्युटर्स AI एजंट किंवा कस्टम लॉजिक असू शकतात.
एज (Edges)
एज वर्कफ्लोतील संदेशांचा प्रवाह परिभाषित करण्यासाठी वापरले जातात. हे प्रकारचे असू शकतात:
डायरेक्ट एजेस - एक्झिक्युटर्समधील सोपे एक-ते-एक कनेक्शन्स:
from agent_framework import WorkflowBuilder
builder = WorkflowBuilder()
builder.add_edge(source_executor, target_executor)
builder.set_start_executor(source_executor)
workflow = builder.build()
कंडीशनल एजेस - विशिष्ट अट पूर्ण झाल्यानंतर सक्रिय होतात. उदाहरणार्थ, जेव्हा हॉटेलच्या खोल्या उपलब्ध नसतात, तेव्हा एक्झिक्युटर इतर पर्याय सुचवू शकतो.
स्विच-केस एजेस - परिभाषित अटींनुसार संदेश वेगळ्या एक्झिक्युटर्सकडे रूट करतात. उदाहरणार्थ, जर प्रवासी ग्राहकाला प्राधान्य प्रवेश असेल तर त्यांची कामं दुसऱ्या वर्कफ्लोद्वारे हाताळली जाऊ शकतात.
फॅन-आउट एजेस - एका संदेशाला अनेक लक्ष्योंकडे पाठवतात.
फॅन-इन एजेस - वेगवेगळ्या एक्झिक्युटर्समधून अनेक संदेश गोळा करून एका लक्ष्याकडे पाठवतात.
इव्हेंट्स
वर्कफ्लोज मध्ये चांगली ऑब्झर्वेबिलिटी प्रदान करण्यासाठी, MAF एक्झिक्युशनसाठी अंगभूत इव्हेंट्स देते ज्यात समाविष्ट आहे:
WorkflowStartedEvent - वर्कफ्लो एक्झिक्युशन सुरू होतेWorkflowOutputEvent - वर्कफ्लो आउटपुट तयार करतेWorkflowErrorEvent - वर्कफ्लोला त्रुटी येतेExecutorInvokeEvent - एक्झिक्युटर प्रक्रिया सुरू करतोExecutorCompleteEvent - एक्झिक्युटर प्रक्रिया पूर्ण करतोRequestInfoEvent - विनंती जारी केली जातेवरील विभाग Microsoft Agent Framework च्या मुख्य संकल्पनांवर प्रकाश टाकतात. जेव्हा आपण अधिक जटिल एजंट तयार करता, तेव्हा विचार करण्यासाठी काही प्रगत पॅटर्न:
Microsoft Agent Framework साठीचे कोड नमुने या रिपॉझिटरीमध्ये xx-python-agent-framework आणि xx-dotnet-agent-framework फाइलांखाली आढळतील.
इतर शिकणाऱ्यांशी भेटण्यासाठी, ऑफिस अवर्समध्ये सहभागी होण्यासाठी आणि आपल्या AI Agents संबंधित प्रश्नांची उत्तरे मिळवण्यासाठी Microsoft Foundry Discord मध्ये सामील व्हा.
अस्वीकरण: हे दस्तऐवज AI अनुवाद सेवा Co-op Translator वापरून अनुवादित केले आहे. आम्ही अचूकतेसाठी प्रयत्न करतो, परंतु कृपया लक्षात घ्या की स्वयंचलित अनुवादांमध्ये चुका किंवा अचूकतेची कमतरता असू शकते. मूळ दस्तऐवज त्याच्या मूळ भाषेत अधिकृत स्रोत म्हणून मानले पाहिजे. महत्वाच्या माहितीसाठी व्यावसायिक मानवी अनुवाद करण्याची शिफारस केली जाते. या अनुवादाच्या वापरामुळे उद्भवणाऱ्या कोणत्याही गैरसमजांसाठी किंवा चुकीच्या अर्थलागीसाठी आम्ही जबाबदार नाही.