ai-agents-for-beginners

Microsoft Agent Framework అన్వేషణ

Agent Framework

పరిచయం

ఈ పాఠం కవర్ చేస్తుంది:

నేర్చుకునే లక్ష్యాలు

ఈ పాఠాన్ని పూర్తిచేసిన తర్వాత, మీరు తెలుసు:

కోడ్ ఉదాహరణలు

Microsoft Agent Framework (MAF) కొరకు కోడ్ ఉదాహరణలు ఈ రిపాజిటరీలో xx-python-agent-framework మరియు xx-dotnet-agent-framework ఫైళ్ల క్రింద అందుబాటులో ఉన్నాయి.

Microsoft Agent Framework అర్థం చేసుకోవడం

Framework Intro

Microsoft Agent Framework (MAF) Microsoft యొక్క ఏఐ ఏజెంట్లను నిర్మించడానికి ఐక్యపరిచిన ఫ్రేమ్‌వర్క్. ఇది ప్రొడక్షన్ మరియు పరిశోధనా వాతావరణాలలో కనిపించే విభిన్న ఏజెంటిక్ ఉపయోగ కేసులను పరిష్కరించడానికి సరిపోయే సరళతను అందిస్తుంది, అందులో:

AI ఏజెంట్లను ప్రొడక్షన్‌లో డెలివరీ చేయడానికి, MAF ఈ క్రింది లక్షణాలను కూడా కలిగి ఉంది:

Microsoft Agent Framework అంతరఘటనా (ఇంటర్‌ఒపరేబుల్)కి కూడా దృష్టి పెట్టింది:

ఇప్పుడు Microsoft Agent Framework యొక్క కొన్ని ముఖ్య భావాలకు ఈ లక్షణాలు ఎలా వర్తిస్తాయో చూద్దాం.

Microsoft Agent Framework ముఖ్య భావాలు

ఏజెంట్లు

Agent Framework

ఏజెంట్లు సృష్టించడం

ఏజెంట్ సృష్టి అనేది ఇన్ఫరెన్స్ సర్వీస్ (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 ఉపయోగిస్తున్నారు కానీ ఏజెంట్లు వివిధ సేవలతో సృష్టించవచ్చు, ఉదాహరణకు 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" )

ఏజెంట్లను నడపడం

ఏజెంట్లను 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)

ప్రతి ఏజెంట్ రన్ కూడా 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." 


# చాట్ ఏజెంట్ ను ప్రత్యక్షంగా సృష్టించినప్పుడు

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] # ఈ రన్ కోసం మాత్రమే అందించిన పరికరం )

ఏజెంట్ థ్రెడ్లు

ఏజెంట్ థ్రెడ్లు బహుళ-తిరుగుడు సంభాషణల కోసం ఉపయోగపడతాయి. థ్రెడ్లు క్రింది విధంగా సృష్టించవచ్చు:

థ్రెడ్ సృష్టించడానికి కోడ్ ఇలా ఉంటుంది:

# కొత్త థ్రెడ్‌ను సృష్టించండి.
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)

ఏజెంట్ మిడిల్‌వేర్

ఏజెంట్లు టూల్స్ మరియు LLM లతో పరస్పరం సానుకూలంగా పనిచెయ్యాలి. కొన్నిసార్లు, ఈ పరస్పర చర్యల మధ్యలో కొన్ని చర్యలు లేదా ట్రాకింగ్ అవసరమవుతుంది. ఏజెంట్ మిడిల్‌వేర్ ఇది సాధ్యం చేస్తుంది:

ఫంక్షన్ మిడిల్‌వేర్

ఈ మిడిల్‌వేర్ ఏజెంట్ మరియు ఏ ఫంక్షన్/టూల్ మధ్య చర్యను అమలు చేయడానికి అనుమతిస్తుంది. ఉదాహరణకు, ఫంక్షన్ కాల్‌పై లాగ్ చేయడం అవసరమైనప్పుడు దీనిని ఉపయోగిస్తారు.

కోడ్‌లో 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)

స్థిర persist మెసేజ్‌లు

ఈ మెమరీ వివిధ సెషన్లలో సంభాషణ చరిత్ర నిల్వ చేయడానికి ఉపయోగిస్తారు. ఇది 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
)

ఏజెంట్ ఆబ్జర్వబిలిటీ

ఆబ్జర్వబిలిటీ అనేది నమ్మదగిన మరియు నిర్వహించదగిన ఏజెంటిక్ సిస్టమ్లను నిర్మించడానికి ముఖ్యం. 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 ఏజెంట్ లేక ప్రాచీన లాజిక్ కూడా కావచ్చు.

ఎడ్జ్‌లు

ఎడ్జ్‌లు వర్క్‌ఫ్లోలో సందేశాల ప్రవాహాన్ని నిర్వచించడానికి ఉపయోగిస్తారు. ఇవి:

డైరెక్ట్ ఎడ్జ్‌లు - ఎగ్జిక్యూటర్ల మధ్య సరళమైన ఒక-కు-ఒక కనెక్షన్లు:

from agent_framework import WorkflowBuilder

builder = WorkflowBuilder()
builder.add_edge(source_executor, target_executor)
builder.set_start_executor(source_executor)
workflow = builder.build()

కండీషనల్ ఎడ్జ్‌లు - నిర్దిష్ట పరిస్థితి తీరిన తర్వాత ప్రారంభమవుతాయి. ఉదాహరణకు, హోటల్ గదులు అందుబాటులో లేనప్పుడు, ఎగ్జిక్యూటర్ ఇతర ఎంపికలను సూచించవచ్చు.

స్విచ్-కేస్ ఎడ్జ్‌లు - నిర్దిష్ట పరిస్థితుల ఆధారంగా సందేశాలను వేరే ఎగ్జిక్యూటర్లకు రవాణా చేస్తాయి. ఉదాహరణకు, ప్రయాణ కస్టమర్ కు ప్రాధాన్యత ప్రాప్తి ఉన్నట్లయితే వారి పనులు వేరే వర్క్‌ఫ్లో ద్వారా నిర్వహించబడతాయి.

ఫ్యాన్-అవుట్ ఎడ్జ్‌లు - ఒక సందేశాన్ని అనేక గమ్యస్థానాలకు పంపుతాయి.

ఫ్యాన్-ఇన్ ఎడ్జ్‌లు - అనేక ఎగ్జిక్యూటర్ల నుండి సందేశాలను సమీకరించి ఒకే లక్ష్యానికి పంపుతాయి.

ఈవెంట్స్

వర్క్‌ఫ్లోలను మంచిగా గమనించడానికి MAF క్రిందివిధమైన ఎగ్జిక్యూషన్ ఈవెంట్స్ అందిస్తుంది:

అభివృద్ధి MAF ఆకృతులు

పై విభాగాలు Microsoft Agent Framework యొక్క ముఖ్య భావాలను కవర్ చేస్తాయి. మీరు మరింత క్లిష్ట ఏజెంట్లు నిర్మిస్తున్నప్పుడు, కొన్ని అభివృద్ధి ఆకృతులను పరిశీలించండి:

కోడ్ ఉదాహరణలు

Microsoft Agent Framework కొరకు కోడ్ ఉదాహరణలు ఈ రిపాజిటరీలో xx-python-agent-framework మరియు xx-dotnet-agent-framework ఫైళ్ల క్రింద అందుబాటులో ఉన్నాయి.

Microsoft Agent Framework గురించి మరిన్ని ప్రశ్నలు ఉన్నాయా?

Microsoft Foundry Discord లో చేరండి, ఇతర అభ్యాసకులతో కలుసుకోండి, ఆఫీస్ అవర్స్ వెళ్ళండి మరియు మీ AI ఏజెంట్ల ప్రశ్నలకు సమాధానం పొందండి.


హేతుబద్ధత:
ఈ డాక్యుమెంట్‌ను AI అనువాద సేవ Co-op Translator ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో తప్పులు లేదా అసమర్థతలు ఉండొచ్చు అని దయచేసి గమనించండి. ఇది మూల పుస్తకం native భాషలో ఉండే డాక్యుమెంట్‌ను అధికారిక ఆధారంగా తీసుకోవాలి. ముఖ్య సమాచారం కోసం, వృత్తిపరమైన మానవ అనువాదాన్ని సిఫార్సు చేస్తున్నాం. ఈ అనువాదం ఉపయోగించడం ద్వారా ఎటువంటి సందేహాలు లేదా తప్పుదారుల వల్ల కలిగే బాధ్యత మేము తీసుకోము.