यो पाठले समेट्नेछ:
यो पाठ पूरा गरेपछि, तपाईंले जान्नुहुनेछ:
माइक्रोसफ्ट एजेन्ट फ्रेमवर्क (MAF) का कोड नमूनाहरू यस रिपोजिटरीमा xx-python-agent-framework
र xx-dotnet-agent-framework
फाइलहरू अन्तर्गत उपलब्ध छन्।
माइक्रोसफ्ट एजेन्ट फ्रेमवर्क (MAF) ले सेमान्टिक कर्नेल र AutoGen बाट सिकाइ र अनुभवलाई आधार मानेर निर्माण गरिएको हो। यसले उत्पादन र अनुसन्धान वातावरणमा देखिने विभिन्न प्रकारका एजेन्टिक प्रयोगका केसहरूलाई सम्बोधन गर्न लचिलोपन प्रदान गर्दछ, जस्तै:
उत्पादनमा AI एजेन्टहरू प्रदान गर्न, MAF ले निम्न विशेषताहरू समावेश गरेको छ:
माइक्रोसफ्ट एजेन्ट फ्रेमवर्कले अन्तरसञ्चालनमा पनि ध्यान केन्द्रित गरेको छ:
अब, यी विशेषताहरू माइक्रोसफ्ट एजेन्ट फ्रेमवर्कका केही मुख्य अवधारणाहरूमा कसरी लागू गरिन्छन्, हेरौं।
एजेन्ट सिर्जना
एजेन्ट सिर्जना गर्दा, अनुमान सेवा (LLM प्रदायक), 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
प्रयोग गरिएको छ, तर एजेन्टहरू Azure AI 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."
# When creating a ChatAgent directly
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] # Tool provided for this run only )
एजेन्ट थ्रेडहरू
एजेन्ट थ्रेडहरू बहु-वार्ता सम्हाल्न प्रयोग गरिन्छ। थ्रेडहरू निम्न तरिकाहरूबाट सिर्जना गर्न सकिन्छ:
get_new_thread()
प्रयोग गरेर, जसले थ्रेडलाई समयसँगै सुरक्षित गर्न सक्षम बनाउँछ।थ्रेड सिर्जना गर्न, कोड यस प्रकार देखिन्छ:
# Create a new thread.
thread = agent.get_new_thread() # Run the agent with the thread.
response = await agent.run("Hello, I am here to help you book travel. Where would you like to go?", thread=thread)
पछि प्रयोगका लागि थ्रेडलाई सिरियलाइज गर्न सकिन्छ:
# Create a new thread.
thread = agent.get_new_thread()
# Run the agent with the thread.
response = await agent.run("Hello, how are you?", thread=thread)
# Serialize the thread for storage.
serialized_thread = await thread.serialize()
# Deserialize the thread state after loading from storage.
resumed_thread = await agent.deserialize_thread(serialized_thread)
एजेन्ट मिडलवेयर
एजेन्टहरूले प्रयोगकर्ताको कार्यहरू पूरा गर्न उपकरण र LLM हरूसँग अन्तरक्रिया गर्छन्। केही परिदृश्यहरूमा, यी अन्तरक्रियाहरूको बीचमा कार्यहरू कार्यान्वयन गर्न वा ट्र्याक गर्न चाहिन्छ। एजेन्ट मिडलवेयरले यसलाई सक्षम बनाउँछ:
फङ्सन मिडलवेयर
यो मिडलवेयरले एजेन्ट र उपकरण/फङ्सनको बीचमा कार्य कार्यान्वयन गर्न अनुमति दिन्छ। उदाहरणका लागि, तपाईं फङ्सन कलमा केही लगिङ गर्न चाहनुहुन्छ भने यो उपयोगी हुन्छ।
async def logging_function_middleware(
context: FunctionInvocationContext,
next: Callable[[FunctionInvocationContext], Awaitable[None]],
) -> None:
"""Function middleware that logs function execution."""
# Pre-processing: Log before function execution
print(f"[Function] Calling {context.function.name}")
# Continue to next middleware or function execution
await next(context)
# Post-processing: Log after function execution
print(f"[Function] {context.function.name} completed")
च्याट मिडलवेयर
यो मिडलवेयरले एजेन्ट र LLM बीचको अनुरोधहरूको बीचमा कार्य कार्यान्वयन गर्न वा लग गर्न अनुमति दिन्छ।
async def logging_chat_middleware(
context: ChatContext,
next: Callable[[ChatContext], Awaitable[None]],
) -> None:
"""Chat middleware that logs AI interactions."""
# Pre-processing: Log before AI call
print(f"[Chat] Sending {len(context.messages)} messages to AI")
# Continue to next middleware or AI service
await next(context)
# Post-processing: Log after AI response
print("[Chat] AI response received")
एजेन्ट मेमोरी
Agentic Memory
पाठमा समेटिएको जस्तै, मेमोरी एजेन्टलाई विभिन्न सन्दर्भहरूमा सञ्चालन गर्न सक्षम बनाउन महत्त्वपूर्ण तत्व हो। MAF ले विभिन्न प्रकारका मेमोरीहरू प्रदान गर्दछ:
इन-मेमोरी स्टोरेज
यो एप्लिकेसन रनटाइमको दौरान थ्रेडहरूमा भण्डारण गरिएको मेमोरी हो।
# Create a new thread.
thread = agent.get_new_thread() # Run the agent with the thread.
response = await agent.run("Hello, I am here to help you book travel. Where would you like to go?", thread=thread)
स्थायी सन्देशहरू
यो मेमोरी विभिन्न सत्रहरूमा वार्तालाप इतिहास भण्डारण गर्न प्रयोग गरिन्छ। यो chat_message_store_factory
प्रयोग गरेर परिभाषित गरिन्छ:
from agent_framework import ChatMessageStore
# Create a custom message store
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
# Using Mem0 for advanced memory capabilities
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
)
एजेन्ट अवलोकनीयता
एजेन्टिक प्रणालीहरू निर्माण गर्दा विश्वसनीयता र मर्मतयोग्यता महत्त्वपूर्ण हुन्छ। 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"):
# do something
pass
counter = meter.create_counter("my_custom_counter")
counter.add(1, {"key": "value"})
MAF ले कार्यप्रवाहहरू प्रदान गर्दछ, जसले कार्य पूरा गर्न पूर्व-परिभाषित चरणहरू समावेश गर्दछ र ती चरणहरूमा AI एजेन्टहरूलाई समावेश गर्दछ।
कार्यप्रवाहहरू विभिन्न कम्पोनेन्टहरूबाट बनेका हुन्छन्, जसले राम्रो नियन्त्रण प्रवाहलाई अनुमति दिन्छ। कार्यप्रवाहहरूले बहु-एजेन्ट व्यवस्थापन र चेकपोइन्टिङ लाई पनि सक्षम बनाउँछ, जसले कार्यप्रवाह अवस्थाहरू सुरक्षित गर्दछ।
कार्यप्रवाहका मुख्य कम्पोनेन्टहरू हुन्:
कार्यकारीहरू
कार्यकारीहरूले इनपुट सन्देशहरू प्राप्त गर्छन्, तिनीहरूलाई तोकिएको कार्यहरू पूरा गर्छन्, र त्यसपछि आउटपुट सन्देश उत्पादन गर्छन्। यसले कार्यप्रवाहलाई ठूलो कार्य पूरा गर्न अगाडि बढाउँछ। कार्यकारीहरू AI एजेन्ट वा अनुकूलन तर्क हुन सक्छन्।
एजहरू
एजहरू कार्यप्रवाहमा सन्देशहरूको प्रवाह परिभाषित गर्न प्रयोग गरिन्छ। यी निम्न प्रकारका हुन सक्छन्:
प्रत्यक्ष एजहरू - कार्यकारीहरू बीचको साधारण एक-देखि-एक जडानहरू:
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
- अनुरोध जारी गरिन्छसरल एजेन्ट सिर्जना
सेमान्टिक कर्नेलले प्रत्येक एजेन्टका लागि कर्नेल उदाहरण सिर्जना गर्न आवश्यक पर्छ। MAF ले मुख्य प्रदायकहरूको लागि एक्सटेन्सन प्रयोग गरेर सरल दृष्टिकोण अपनाउँछ।
agent = AzureOpenAIChatClient(credential=AzureCliCredential()).create_agent( instructions="You are good at reccomending trips to customers based on their preferences.", name="TripRecommender" )
एजेन्ट थ्रेड सिर्जना
सेमान्टिक कर्नेलमा थ्रेडहरू म्यानुअली सिर्जना गर्न आवश्यक पर्छ। MAF मा, एजेन्टलाई सिधै थ्रेड असाइन गरिन्छ।
thread = agent.get_new_thread() # Run the agent with the thread.
उपकरण दर्ता
सेमान्टिक कर्नेलमा, उपकरणहरू कर्नेलमा दर्ता गरिन्छ र त्यसपछि कर्नेल एजेन्टमा पास गरिन्छ। MAF मा, उपकरणहरू एजेन्ट सिर्जना प्रक्रियाको क्रममा सिधै दर्ता गरिन्छ।
agent = ChatAgent( chat_client=OpenAIChatClient(), instructions="You are a helpful assistant", tools=[get_attractions]
टीमहरू बनाम कार्यप्रवाहहरू
AutoGen मा टीमहरू
एजेन्टहरूसँग सम्बन्धित घटनाहरूको संरचना हो। MAF ले कार्यप्रवाहहरू
प्रयोग गर्दछ, जसले ग्राफ-आधारित आर्किटेक्चरमार्फत डाटालाई कार्यकारीहरूमा रुट गर्दछ।
उपकरण सिर्जना
AutoGen ले एजेन्टहरूले कल गर्नका लागि फङ्सनलाई र्याप गर्न FunctionTool
प्रयोग गर्दछ। MAF ले @ai_function प्रयोग गर्दछ, जसले प्रत्येक फङ्सनका लागि स्किमाहरू स्वचालित रूपमा अनुमान गर्छ।
एजेन्ट व्यवहार
AutoGen मा, एजेन्टहरू डिफल्ट रूपमा एक-टर्न एजेन्टहरू हुन्, जबसम्म max_tool_iterations
उच्च सेट गरिएको छैन। MAF मा, ChatAgent
डिफल्ट रूपमा बहु-टर्न हुन्छ, जसले प्रयोगकर्ताको कार्य पूरा नभएसम्म उपकरणहरू कल गर्न जारी राख्छ।
माइक्रोसफ्ट एजेन्ट फ्रेमवर्कका कोड नमूनाहरू यस रिपोजिटरीमा xx-python-agent-framework
र xx-dotnet-agent-framework
फाइलहरू अन्तर्गत उपलब्ध छन्।
Azure AI Foundry Discord मा सामेल हुनुहोस्, अन्य सिक्नेहरूसँग भेट्नुहोस्, अफिस आवरहरूमा सहभागी हुनुहोस् र आफ्नो AI एजेन्टसम्बन्धी प्रश्नहरूको उत्तर पाउनुहोस्।
अस्वीकरण:
यो दस्तावेज़ AI अनुवाद सेवा Co-op Translator प्रयोग गरेर अनुवाद गरिएको हो। हामी यथासम्भव शुद्धता सुनिश्चित गर्न प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। मूल दस्तावेज़ यसको मातृभाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।