(ఈ పాఠం వీడియోను చూడటానికి పై చిత్రంపై క్లిక్ చేయండి)
టూల్స్ ఆసక్తికరమైనవి ఎందుకంటే అవి AI ఏజెంట్లకు విస్తృత శ్రేణి సామర్థ్యాలను కల్పిస్తాయి. ఏజెంట్ చేయగలిగే చర్యల పరిమిత సెట్ కలిగి ఉండటానికి బదులుగా, ఒక టూల్ను జోడించడం ద్వారా, ఏజెంట్ ఇప్పుడు విస్తృత శ్రేణి చర్యలను చేయగలదు. ఈ అధ్యాయంలో, AI ఏజెంట్లు తమ లక్ష్యాలను సాధించడానికి నిర్దిష్ట టూల్స్ను ఎలా ఉపయోగించగలరో వివరిస్తున్న టూల్ యూజ్ డిజైన్ ప్యాటర్న్ను పరిశీలిస్తాము.
ఈ పాఠంలో, మేము ఈ ప్రశ్నలకు సమాధానం ఇవ్వడానికి ప్రయత్నిస్తున్నాము:
ఈ పాఠాన్ని పూర్తి చేసిన తర్వాత, మీరు:
టూల్ యూజ్ డిజైన్ ప్యాటర్న్ అనేది LLMs (లార్జ్ లాంగ్వేజ్ మోడల్స్)కు నిర్దిష్ట లక్ష్యాలను సాధించడానికి బాహ్య టూల్స్తో పరస్పర చర్య చేయగల సామర్థ్యాన్ని ఇవ్వడంపై దృష్టి సారిస్తుంది. టూల్స్ అనేవి ఏజెంట్ చర్యలు చేయడానికి అమలు చేయగల కోడ్. టూల్ అనేది కేలిక్యులేటర్ వంటి సింపుల్ ఫంక్షన్ లేదా స్టాక్ ధరల లుకప్ లేదా వాతావరణ సూచన వంటి థర్డ్-పార్టీ సర్వీస్కు API కాల్ కావచ్చు. AI ఏజెంట్ల సందర్భంలో, టూల్స్ మోడల్-జనరేటెడ్ ఫంక్షన్ కాల్స్కు ప్రతిస్పందనగా ఏజెంట్లచే అమలు చేయడానికి రూపొందించబడతాయి.
AI ఏజెంట్లు టూల్స్ను ఉపయోగించి క్లిష్టమైన పనులను పూర్తి చేయడం, సమాచారం పొందడం లేదా నిర్ణయాలు తీసుకోవడం చేయగలరు. టూల్ యూజ్ డిజైన్ ప్యాటర్న్ తరచుగా డైనమిక్ ఇంటరాక్షన్ అవసరమయ్యే సన్నివేశాల్లో ఉపయోగించబడుతుంది, ఉదాహరణకు డేటాబేస్లు, వెబ్ సర్వీసులు లేదా కోడ్ ఇంటర్ప్రెటర్లు. ఈ సామర్థ్యం అనేక ఉపయోగాల కోసం ఉపయోగపడుతుంది, వాటిలో కొన్ని:
ఈ నిర్మాణ బ్లాక్స్ AI ఏజెంట్కు విస్తృత శ్రేణి పనులను నిర్వహించడానికి అనుమతిస్తాయి. టూల్ యూజ్ డిజైన్ ప్యాటర్న్ను అమలు చేయడానికి అవసరమైన కీలక అంశాలను చూద్దాం:
ఫంక్షన్/టూల్ స్కీమాలు: అందుబాటులో ఉన్న టూల్స్ యొక్క వివరమైన నిర్వచనాలు, ఫంక్షన్ పేరు, ఉద్దేశం, అవసరమైన పారామీటర్లు మరియు ఆశించిన అవుట్పుట్లను కలిగి ఉంటాయి. ఈ స్కీమాలు LLMకు అందుబాటులో ఉన్న టూల్స్ ఏమిటి మరియు చెల్లుబాటు అయ్యే అభ్యర్థనలను ఎలా నిర్మించాలో అర్థం చేసుకోవడానికి సహాయపడతాయి.
ఫంక్షన్ ఎగ్జిక్యూషన్ లాజిక్: వినియోగదారుని ఉద్దేశం మరియు సంభాషణ సందర్భం ఆధారంగా టూల్స్ ఎప్పుడు మరియు ఎలా పిలవబడతాయో నియంత్రిస్తుంది. ఇది ప్లానర్ మాడ్యూల్స్, రూటింగ్ మెకానిజం లేదా టూల్ వినియోగాన్ని డైనమిక్గా నిర్ణయించే షరతు ప్రవాహాలను కలిగి ఉండవచ్చు.
మెసేజ్ హ్యాండ్లింగ్ సిస్టమ్: వినియోగదారు ఇన్పుట్లు, LLM ప్రతిస్పందనలు, టూల్ కాల్స్ మరియు టూల్ అవుట్పుట్ల మధ్య సంభాషణ ప్రవాహాన్ని నిర్వహించే భాగాలు.
టూల్ ఇంటిగ్రేషన్ ఫ్రేమ్వర్క్: ఏజెంట్ను వివిధ టూల్స్తో కనెక్ట్ చేసే మౌలిక సదుపాయాలు, అవి సింపుల్ ఫంక్షన్లు లేదా క్లిష్టమైన బాహ్య సేవలు కావచ్చు.
ఎర్రర్ హ్యాండ్లింగ్ & వాలిడేషన్: టూల్ అమలు లోపాలను నిర్వహించడం, పారామీటర్లను ధృవీకరించడం మరియు అనూహ్యమైన ప్రతిస్పందనలను నిర్వహించడం.
స్టేట్ మేనేజ్మెంట్: సంభాషణ సందర్భం, గత టూల్ పరస్పర చర్యలు మరియు స్థిరమైన డేటాను ట్రాక్ చేయడం ద్వారా బహుళ-మలుపు పరస్పర చర్యలలో స్థిరత్వాన్ని నిర్ధారిస్తుంది.
తదుపరి, ఫంక్షన్/టూల్ కాలింగ్ను మరింత వివరంగా చూద్దాం.
ఫంక్షన్ కాలింగ్ అనేది లార్జ్ లాంగ్వేజ్ మోడల్స్ (LLMs) టూల్స్తో పరస్పర చర్య చేయగల సామర్థ్యాన్ని సాధించడానికి ప్రధాన మార్గం. ‘ఫంక్షన్’ మరియు ‘టూల్’ తరచుగా పరస్పరం ఉపయోగించబడతాయి ఎందుకంటే ‘ఫంక్షన్లు’ (పునర్వినియోగపరచదగిన కోడ్ బ్లాక్స్) ఏజెంట్లు పనులను నిర్వహించడానికి ఉపయోగించే ‘టూల్స్’. ఒక ఫంక్షన్ యొక్క కోడ్ అమలు చేయబడటానికి, LLM వినియోగదారుని అభ్యర్థనను ఫంక్షన్ వివరణతో పోల్చాలి. అందుబాటులో ఉన్న అన్ని ఫంక్షన్ల వివరణలను కలిగి ఉన్న స్కీమాను LLMకు పంపుతారు. LLM ఆ పనికి అత్యంత అనుకూలమైన ఫంక్షన్ను ఎంచుకుని దాని పేరు మరియు ఆర్గుమెంట్లను తిరిగి పంపుతుంది. ఎంపిక చేసిన ఫంక్షన్ అమలు చేయబడుతుంది, దాని ప్రతిస్పందన LLMకు తిరిగి పంపబడుతుంది, ఇది వినియోగదారుని అభ్యర్థనకు ప్రతిస్పందించడానికి సమాచారాన్ని ఉపయోగిస్తుంది.
ఏజెంట్ల కోసం ఫంక్షన్ కాలింగ్ను అమలు చేయడానికి డెవలపర్లు అవసరం:
సిటీలో ప్రస్తుత సమయాన్ని పొందడం ఉదాహరణగా తీసుకుందాం:
ఫంక్షన్ కాలింగ్ను మద్దతు ఇచ్చే LLMను ప్రారంభించండి:
అన్ని మోడల్స్ ఫంక్షన్ కాలింగ్ను మద్దతు ఇవ్వవు, కాబట్టి మీరు ఉపయోగిస్తున్న LLM మద్దతు ఇస్తుందో లేదో తనిఖీ చేయడం ముఖ్యం. Azure OpenAI ఫంక్షన్ కాలింగ్ను మద్దతు ఇస్తుంది. మేము Azure OpenAI క్లయింట్ను ప్రారంభించడం ద్వారా ప్రారంభించవచ్చు.
# ఆజూర్ ఓపెన్ఏఐ క్లయింట్ను ప్రారంభించండి
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-05-01-preview"
)
ఫంక్షన్ స్కీమాను సృష్టించండి:
తరువాత, ఫంక్షన్ పేరు, ఫంక్షన్ ఏమి చేస్తుందో వివరణ మరియు ఫంక్షన్ పారామీటర్ల పేర్లు మరియు వివరణలను కలిగి ఉన్న JSON స్కీమాను నిర్వచిస్తాము. ఈ స్కీమాను మునుపు సృష్టించిన క్లయింట్కు, అలాగే సాన్ ఫ్రాన్సిస్కోలో సమయాన్ని కనుగొనడానికి వినియోగదారుని అభ్యర్థనకు పంపుతాము. ముఖ్యంగా గమనించాల్సిన విషయం ఏమిటంటే టూల్ కాల్ తిరిగి వస్తుంది, ప్రశ్నకు తుది సమాధానం కాదు. ముందుగా చెప్పినట్లుగా, LLM ఆ పనికి ఎంపిక చేసిన ఫంక్షన్ పేరు మరియు దానికి పంపబడే ఆర్గుమెంట్లను తిరిగి పంపుతుంది.
# మోడల్ చదవడానికి ఫంక్షన్ వివరణ
tools = [
{
"type": "function",
"function": {
"name": "get_current_time",
"description": "Get the current time in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city name, e.g. San Francisco",
},
},
"required": ["location"],
},
}
}
]
# ప్రారంభ వినియోగదారు సందేశం
messages = [{"role": "user", "content": "What's the current time in San Francisco"}]
# మొదటి API కాల్: ఫంక్షన్ ఉపయోగించమని మోడల్ను అడగండి
response = client.chat.completions.create(
model=deployment_name,
messages=messages,
tools=tools,
tool_choice="auto",
)
# మోడల్ యొక్క ప్రతిస్పందనను ప్రాసెస్ చేయండి
response_message = response.choices[0].message
messages.append(response_message)
print("Model's response:")
print(response_message)
Model's response:
ChatCompletionMessage(content=None, role='assistant', function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='call_pOsKdUlqvdyttYB67MOj434b', function=Function(arguments='{"location":"San Francisco"}', name='get_current_time'), type='function')])
పని చేయడానికి అవసరమైన ఫంక్షన్ కోడ్:
ఇప్పుడు LLM ఏ ఫంక్షన్ అమలు చేయాలో ఎంచుకుంది, పని చేయడానికి అవసరమైన కోడ్ అమలు చేయబడాలి. మేము ప్రస్తుత సమయాన్ని పొందడానికి Pythonలో కోడ్ను అమలు చేయవచ్చు. ఫైనల్ రిజల్ట్ను పొందడానికి response_message నుండి పేరు మరియు ఆర్గుమెంట్లను ఎక్స్ట్రాక్ట్ చేయడానికి కోడ్ కూడా రాయాలి.
def get_current_time(location):
"""Get the current time for a given location"""
print(f"get_current_time called with location: {location}")
location_lower = location.lower()
for key, timezone in TIMEZONE_DATA.items():
if key in location_lower:
print(f"Timezone found for {key}")
current_time = datetime.now(ZoneInfo(timezone)).strftime("%I:%M %p")
return json.dumps({
"location": location,
"current_time": current_time
})
print(f"No timezone data found for {location_lower}")
return json.dumps({"location": location, "current_time": "unknown"})
# ఫంక్షన్ కాల్స్ను నిర్వహించండి
if response_message.tool_calls:
for tool_call in response_message.tool_calls:
if tool_call.function.name == "get_current_time":
function_args = json.loads(tool_call.function.arguments)
time_response = get_current_time(
location=function_args.get("location")
)
messages.append({
"tool_call_id": tool_call.id,
"role": "tool",
"name": "get_current_time",
"content": time_response,
})
else:
print("No tool calls were made by the model.")
# రెండవ API కాల్: మోడల్ నుండి తుది ప్రతిస్పందనను పొందండి
final_response = client.chat.completions.create(
model=deployment_name,
messages=messages,
)
return final_response.choices[0].message.content
get_current_time called with location: San Francisco
Timezone found for san francisco
The current time in San Francisco is 09:24 AM.
ఫంక్షన్ కాలింగ్ అనేది చాలా, లేకపోతే అన్ని ఏజెంట్ టూల్ యూజ్ డిజైన్లో హృదయంగా ఉంటుంది, అయితే దాన్ని ప్రారంభం నుండి అమలు చేయడం కొంచెం క్లిష్టంగా ఉండవచ్చు. Lesson 2లో నేర్చుకున్నట్లుగా, ఏజెంటిక్ ఫ్రేమ్వర్క్లు టూల్ యూజ్ను అమలు చేయడానికి మాకు ప్రీ-బిల్ట్ నిర్మాణ బ్లాక్స్ను అందిస్తాయి.
వివిధ ఏజెంటిక్ ఫ్రేమ్వర్క్లను ఉపయోగించి టూల్ యూజ్ డిజైన్ ప్యాటర్న్ను ఎలా అమలు చేయవచ్చో కొన్ని ఉదాహరణలు ఇక్కడ ఉన్నాయి:
సెమాంటిక్ కర్నెల్ అనేది .NET, Python మరియు Java డెవలపర్లు లార్జ్ లాంగ్వేజ్ మోడల్స్ (LLMs)తో పని చేయడానికి రూపొందించిన ఓపెన్-సోర్స్ AI ఫ్రేమ్వర్క్. ఇది మీ ఫంక్షన్లను మరియు వాటి పారామీటర్లను మోడల్కు స్వయంచాలకంగా వివరిస్తుంది, సీరియలైజింగ్ అనే ప్రక్రియ ద్వారా. ఇది మోడల్ మరియు మీ కోడ్ మధ్య వెనుక-ముందు కమ్యూనికేషన్ను కూడా నిర్వహిస్తుంది. సెమాంటిక్ కర్నెల్ వంటి ఏజెంటిక్ ఫ్రేమ్వర్క్ను ఉపయోగించడం ద్వారా, ఫైల్ సెర్చ్ మరియు కోడ్ ఇంటర్ప్రెటర్ వంటి ప్రీ-బిల్ట్ టూల్స్ను యాక్సెస్ చేయవచ్చు.
సెమాంటిక్ కర్నెల్తో ఫంక్షన్ కాలింగ్ ప్రక్రియను వివరిస్తున్న డయాగ్రామ్:

సెమాంటిక్ కర్నెల్లో ఫంక్షన్లు/టూల్స్ను ప్లగిన్లు అని పిలుస్తారు. మేము ముందు చూశాం get_current_time ఫంక్షన్ను క్లాస్గా మార్చి ప్లగిన్గా మార్చవచ్చు. మేము kernel_function డెకరేటర్ను కూడా ఇంపోర్ట్ చేయవచ్చు, ఇది ఫంక్షన్ యొక్క వివరణను తీసుకుంటుంది. మీరు GetCurrentTimePluginతో కర్నెల్ను సృష్టించినప్పుడు, కర్నెల్ స్వయంచాలకంగా ఫంక్షన్ మరియు దాని పారామీటర్లను సీరియలైజ్ చేస్తుంది, LLMకు పంపడానికి స్కీమాను సృష్టిస్తుంది.
from semantic_kernel.functions import kernel_function
class GetCurrentTimePlugin:
async def __init__(self, location):
self.location = location
@kernel_function(
description="Get the current time for a given location"
)
def get_current_time(location: str = ""):
...
from semantic_kernel import Kernel
# కర్నల్ను సృష్టించండి
kernel = Kernel()
# ప్లగిన్ను సృష్టించండి
get_current_time_plugin = GetCurrentTimePlugin(location)
# ప్లగిన్ను కర్నల్కు జోడించండి
kernel.add_plugin(get_current_time_plugin)
Azure AI Agent Service అనేది డెవలపర్లకు అధిక నాణ్యత గల, విస్తరించగల AI ఏజెంట్లను సురక్షితంగా నిర్మించడానికి, మోహరించడానికి మరియు స్కేల్ చేయడానికి రూపొందించిన కొత్త ఏజెంటిక్ ఫ్రేమ్వర్క్. ఇది అంతర్గత కంప్యూట్ మరియు స్టోరేజ్ వనరులను నిర్వహించాల్సిన అవసరం లేకుండా పూర్తిగా నిర్వహించబడే సేవ. ఇది ఎంటర్ప్రైజ్ అప్లికేషన్లకు ప్రత్యేకంగా ఉపయోగకరంగా ఉంటుంది ఎందుకంటే ఇది ఎంటర్ప్రైజ్ గ్రేడ్ సెక్యూరిటీతో కూడిన పూర్తిగా నిర్వహించబడే సేవ.
LLM APIతో నేరుగా అభివృద్ధి చేయడం తో పోలిస్తే, Azure AI Agent Service కొన్ని ప్రయోజనాలను అందిస్తుంది, వాటిలో:
Azure AI Agent Serviceలో అందుబాటులో ఉన్న టూల్స్ను రెండు వర్గాలుగా విభజించవచ్చు:
మరింత నేర్చుకునే వారికి కలవడానికి, ఆఫీస్ అవర్స్లో పాల్గొనడానికి మరియు మీ AI Agents ప్రశ్నలకు సమాధానాలు పొందడానికి Azure AI Foundry Discordలో చేరండి.
Agentic Design Patterns గురించి అవగాహన
విమర్శ:
ఈ పత్రాన్ని AI అనువాద సేవ Co-op Translator ఉపయోగించి అనువదించబడింది. మేము ఖచ్చితత్వానికి ప్రయత్నిస్తున్నప్పటికీ, ఆటోమేటెడ్ అనువాదాలలో తప్పులు లేదా అసమానతలు ఉండవచ్చు. దయచేసి, దాని స్వదేశీ భాషలోని అసలు పత్రాన్ని అధికారం కలిగిన మూలంగా పరిగణించండి. కీలకమైన సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదాన్ని సిఫారసు చేస్తాము. ఈ అనువాదాన్ని ఉపయోగించడం వల్ల కలిగే ఏవైనా అపార్థాలు లేదా తప్పుదారులు కోసం మేము బాధ్యత వహించము.