(இந்த படத்தை கிளிக் செய்து இந்த பாடத்தின் வீடியோவை காணவும்)
கருவிகள் சுவாரசியமாக இருக்கின்றன, ஏனெனில் அவை AI பிரதிநிதிகளுக்கு விரிவாக செயல்பாடுகளைச் செய்யும் சாத்தியங்களை அளிக்கின்றன. பிரதிநிதி செய்யக்கூடிய செயல்களின் வரம்புக்குள் இருப்பதற்குப் பதிலாக, ஒரு கருவியைச் சேர்ப்பதன் மூலம், பிரதிநிதி இப்போது பலவிதமான செயல்களைச் செய்யக்கூடியதாக மாறுகிறது. இந்த அதிகார பகுதியில், AI பிரதிநிதிகள் தங்கள் குறிக்கோள்களை அடைய குறிப்பிட்ட கருவிகளை எவ்வாறு பயன்படுத்தக்கூடும் என்று விவரிக்கும் கருவி பயன்பாட்டு வடிவமைப்பு மாதிரியை பார்ப்போம்.
இந்த பாடத்தில், நாங்கள் பின்வரும் கேள்விகளுக்கு பதிலளிக்க விரும்புகிறோம்:
இந்த பாடத்தை முடித்தவுடன், நீங்கள் قادر:
கருவி பயன்பாட்டு வடிவமைப்பு மாதிரி LLMக்களுக்கு குறிப்பிட்ட குறிக்கோள்களை அடைய வெளிப்புற கருவிகளுடன் தொடர்பு கொள்ளும் திறனைக் கொடுக்கும் மீது கவனம் செலுத்துகிறது. கருவிகள் என்பது பிரதிநிதி ஒரு செயல்பாடுகளைச் செய்ய இயலும் குறியீடுகள் ஆகும். ஒரு கருவி கணக்கெடுப்பான் போன்ற எளிய செயல்பாடு அல்லது பங்குச்சந்தை விலை பார்க்கும் அல்லது வானிலை முன்னறிவிப்பு போன்ற மூன்றாம் தரப்பு சேவைக்கு API அழைப்பு ஆகியவையாக இருக்கலாம். AI பிரதிநிதிகளின் பரிமாணத்தில், கருவிகள் மாதிரி-உருவாக்கிய செயல்பாட்டு அழைப்புகளுக்கு பதிலளித்து பிரதிநிதிகள் இயக்குமாறு வடிவமைக்கப்பட்டுள்ளன.
AI பிரதிநிதிகள் குழப்பமான பணிகளை முடிக்க, தகவலை மீட்டெடுக்க அல்லது தீர்மானங்களை எடுக்க கருவிகளை பயன்படுத்த முடியும். கருவி பயன்பாட்டு வடிவமைப்பு மாதிரிகள் பொதுவாக தரவுத்தளங்கள், வலை சேவைகள் அல்லது குறியீடு முன்னுரைபொருள்கள் போன்ற வெளிப்புற அமைப்புகளுடன் டைனமிக் தொடர்பு தேவைப்படுகிற சூழல்களில் பயன்படுத்தப்படுகின்றன. இது பின்வரும் பல்வேறு பயன்பாட்டு நிலைகளுக்கு பயன்படும்:
இந்த கட்டுமானக் கூறுகள் AI பிரதிநிதிக்கு விரிவான பணிகளைச் செய்ய உதவும். கருவி பயன்பாட்டு வடிவமைப்பு மாதிரியை செயல்படுத்த தேவையான முக்கிய கூறுகளைப் பார்ப்போம்:
செயல்பாடு/கருவி வடிவமைப்புகள்: கிடைக்கும் கருவிகளின் விரிவான வரையறைகள், செயல்பாட்டு பெயர், நோக்கம், தேவையான அளவுருக்கள் மற்றும் எதிர்பார்க்கப்படும் வெளியீடுகள் உள்ளிட்டவை. இந்த வடிவமைப்புகள் LLMக்கு எந்த கருவிகள் கிடைக்கும் என்பதும் அவற்றை எந்தவாறு செல்லுபடியாகக் கோரிக்கை உருவாக்குவது என்பதும் புரிய உதவும்.
செயல்பாடு இயக்க முறைமை: பயனர் நோக்கம் மற்றும் உரையாடல் சூழ்நிலைக்கு அடிப்படையாக கருவிகள் எப்போது மற்றும் எப்படி அழைக்கப்படும் என்பதைக் கட்டுப்படுத்துகிறது. இதற்கு திட்டமிடல் தொகுதிகள், வழிமுறை முறைமைகள் அல்லது கருவி பயன்பாட்டை அறிவோம் எனும் நிபந்தனை முறைகள் அடக்கம் இருக்கலாம்.
செய்தி கையாளும் அமைப்பு: பயனர் உள்ளீடுகள், LLM பதில்கள், கருவி அழைப்புகள் மற்றும் கருவி விளைவுகளுக்கு இடையேயான உரையாடல் ஓட்டத்தை நிர்வகிக்கும் கூறுகள்.
கருவி ஒருமித்தமைப்பு வடிவமைப்பு: எளிய செயல்பாடுகள் හෝ சிக்கலான வெளிப்புற சேவைகள் ஆகிய கருவிகளை பிரதிநிதியுடன் இணைக்கும் அடித்தளம்.
பிழை கையாளல் மற்றும் சரிபார்ப்பு: கருவி இயக்கத்தில் தோல்விகளை கையாளும் முறைகள், அளவுருக்களை சரிபார்க்கும் மற்றும் எதிர்பாராத பதில்களுக்கு முகாமை செய்யும் அமைப்புகள்.
நிலைத்தன்மை நிர்வாகம்: உரையாடல் சூழ்நிலையை, முந்தைய கருவி தொடர்புகளை மற்றும் நிலையான தரவை பின்தொடர்ந்து இழைக்காமல் பராமரிக்கும் அமைப்பு.
அடுத்ததாக, செயல்/கருவி அழைப்பைப் பற்றி விரிவாகப் பார்ப்போம்.
செயல் அழைப்பு என்பது நாங்கள் பெரிய மொழி மாதிரிகளுக்கு (LLMs) கருவிகளுடன் தொடர்பு கொள்வதற்கான பிரதான வழி ஆகும். ‘செயல்’ மற்றும் ‘கருவி’ என்ற சொற்கள் பரிமாறி பயன்படுத்தப்படுவதை நாம் அடிக்கடி காண்போம், ஏனென்றால் ‘செயல்கள்’ என்பது மறுபயன்பாட்டு குறியீட்டு தொகுதிகள் ஆகும் மற்றும் அவை பிரதிநிதிகள் பணிகளைச் செய்ய பயன்படுத்தும் ‘கருவிகள்’ ஆகும். ஒரு செயல்பாட்டு குறியீடு அழைக்கப்பட வேண்டுமானால், LLM பயனர் கோரிக்கையை செயல்பாட்டின் விளக்கம் என்கின்றதை ஒப்பிட்டு பார் வேண்டும். இதற்கு கிடைக்கும் அனைத்து செயல்பாடுகளின் விளக்கத்துடன் கூடிய ஒரு வடிவமைப்பு LLMக்கு அனுப்பப்படும். அதன் பிறகு LLM பணிக்கான மிக ஏற்ற செயல்பாட்டை தேர்ந்தெடுக்கிறது மற்றும் அதன் பெயர் மற்றும் அளவுருக்களை (arguments) திருப்பி அனுப்புகிறது. தேர்ந்தெடுக்கப்பட்ட செயல்பாடு இயக்கப்படுகிறது, அதன் பதில் LLMக்கு அனுப்பப்படுகிறது, அது பயனர் கோரிக்கைக்கு பதிலளிக்க அந்த தகவலைப் பயன்படுத்துகிறது.
பிரதிநிதிகளுக்கான செயல் அழைப்புகளை செயல்படுத்துவதற்கு, நீங்கள் தேவையானவை:
நகரத்தின் தற்போதைய நேரத்தை பெறுவதற்கான எடுத்துக்காட்டை பயன்படுத்துவோம்:
செயல் அழைப்பை ஆதரிக்கும் LLM ஐ துவக்கம் செய்தல்:
அனைத்து மாதிரிகளும் செயல் அழைப்பை ஆதரிப்பதில்லை, ஆகவே நீங்கள் பயன்படுத்தும் LLM அதனை ஆதரிக்கிறதா என்று சரிபார்ப்பது முக்கியம். Azure OpenAI செயல் அழைப்பை ஆதரிக்கிறது. நாம் Azure OpenAI Responses APIக்கும் எதிராக OpenAI கிளையன்ட் துவக்கம் செய்வதன் மூலம் தொடங்கலாம் (நிலையான /openai/v1/ இறுதிச்சுட்டி — api_version தேவையில்லை).
# Azure OpenAI (Responses API, v1 endpoint) க்கான OpenAI வாடிக்கையாளரை துவங்கவும்
client = OpenAI(
base_url=f"{os.environ['AZURE_OPENAI_ENDPOINT'].rstrip('/')}/openai/v1/",
api_key=os.environ["AZURE_OPENAI_API_KEY"],
)
deployment_name = os.environ["AZURE_OPENAI_DEPLOYMENT"]
செயல் வடிவமைப்பு உருவாக்குதல்:
அடுத்து, செயல்பாட்டின் பெயர், அது செய்யும் வேலைக்கான விளக்கம் மற்றும் செயல்பாட்டு அளவுருக்களின் பெயர் மற்றும் விளக்கங்கள் கொண்ட JSON வடிவமைப்பை நாம் வரையறுக்கப் போகிறோம். பின்னர் அதை முன்பு உருவாக்கிய கிளையன்டுக்கு மற்றும் பயனர் கோரிக்கைக்கு (San Franciscoஇல் நேரம் காண) அனுப்புவோம். முக்கியமாக நினைவில் கொள்ள வேண்டியது, கருவி அழைப்பு தான் திருப்பி வரும், கேள்வியின் இறுதி பதில் அல்ல என்பது. முன்பு சொன்னபடி, LLM பணிக்கான செயல்பாட்டின் பெயர் மற்றும் அதன் அளவுருக்களை திருப்பி அனுப்புகிறது.
# மாடல் வாசிக்க பயன்படும் செயல்பாடு விளக்கம் (Responses API சளுக்கமான கருவி வடிவம்)
tools = [
{
"type": "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.responses.create(
model=deployment_name,
input=messages,
tools=tools,
tool_choice="auto",
store=False,
)
# Responses API செயற்கூறு அழைப்புகளை function_call பொருட்களாக response.output இல் திருப்பி அனுப்புகிறது.
# அடுத்த முறை பயனரிடம் முழு பின்னூட்டம் இருக்க, அவற்றைப் பேச்சுவார்த்தைக்கு இணைக்கவும்.
messages += response.output
print("Model's response:")
print(response.output)
Model's response:
[ResponseFunctionToolCall(arguments='{"location":"San Francisco"}', call_id='call_pOsKdUlqvdyttYB67MOj434b', name='get_current_time', type='function_call')]
பணியை செய்ய தேவையான செயல்பாட்டு குறியீடு:
இப்போது 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"})
# செயல்பாட்டு அழைப்புகளை கையாளவும்
tool_calls = [item for item in response.output if item.type == "function_call"]
if tool_calls:
for tool_call in tool_calls:
if tool_call.name == "get_current_time":
function_args = json.loads(tool_call.arguments)
time_response = get_current_time(
location=function_args.get("location")
)
# கருவி முடிவை function_call_output உருப்படியாக 반환ி செய்யவும்
messages.append({
"type": "function_call_output",
"call_id": tool_call.call_id,
"output": time_response,
})
else:
print("No tool calls were made by the model.")
# இரண்டாவது API அழைப்பு: மாதிரியில் இருந்து இறுதி பதிலை பெறவும்
final_response = client.responses.create(
model=deployment_name,
input=messages,
tools=tools,
store=False,
)
return final_response.output_text
get_current_time called with location: San Francisco
Timezone found for san francisco
The current time in San Francisco is 09:24 AM.
செயல் அழைப்பு அதிகபட்சமாக அஜெண்ட் கருவி பயன்பாட்டு வடிவமைப்பின் மையமானது, இருப்பினும் இதனை தொடக்கத்திலேயே செயல்படுத்துவது சில சமயங்களில் சவாலானதாக இருக்கலாம். பாடம் 2 இல் நாங்கள் கற்றதுபோல், அஜெண்டிக் கட்டமைப்புகள் நமக்கு கருவி பயன்பாட்டை செயல்படுத்த முன்நிறுவப்பட்ட கட்டுமானங்களை வழங்குகின்றன.
பல்வேறு அஜெண்டிக் கட்டமைப்புகளைப் பயன்படுத்தி கருவி பயன்பாட்டு வடிவமைப்பு மாதிரியை நீங்கள் எப்படி செயல்படுத்தலாம் என்ற சில எடுத்துக்காட்டுகள் இங்கே உள்ளன:
Microsoft Agent Framework என்பது AI பிரதிநிதிகளை உருவாக்க ஒரு திறந்த மூல AI கட்டமைப்பாகும். இது @tool அலங்கார குறியீட்டை பயன்படுத்தி கருவிகளைக் Python செயல்பாடுகளாக வரையறுத்து செயல்படுத்துவதற்கான செயல் அழைப்புகளை எளிமைப்படுத்துகிறது. இந்த கட்டமைப்பு மாதிரி மற்றும் உங்கள் குறியீட்டுக்கிடையேயான பின்னர் மற்றும் முன் தொடர்பையும் கையாளும். மேலும் இது FoundryChatClient மூலம் முன்நிறுவப்பட்ட File Search மற்றும் Code Interpreter போன்ற கருவிகளுக்கான அணுகலை வழங்குகிறது.
கீழ் பட வடிவம் மைக்ரோசாஃப்ட் அஜெண்ட் கட்டமைப்புடன் செயல் அழைப்பு முறையை விளக்குகிறது:

மைக்ரோசாஃப்ட் அஜெண்ட் கட்டமைப்பில் கருவிகள் அலங்கரிக்கப்பட்ட செயல்பாடுகளாக வரையறுக்கப்படுகின்றன. முன்பு நாம் பார்த்த get_current_time செயல்பாட்டை @tool அலங்காரத்துடன் கருவியாக மாற்றலாம். கட்டமைப்பு அந்த செயல்பாடு மற்றும் அதன் அளவுருக்களை தானாகவே வரிசைப்படுத்தி LLMக்கு அனுப்ப தேவையான வடிவமைப்பை உருவாக்கும்.
import os
from agent_framework import tool
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
@tool(approval_mode="never_require")
def get_current_time(location: str) -> str:
"""Get the current time for a given location"""
...
# கிளையண்ட் உருவாக்கவும்
provider = FoundryChatClient(
project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=AzureCliCredential(),
)
# ஒரு முகவரியை உருவாக்கி கருவியுடன் இயக்கவும்
agent = provider.as_agent(name="TimeAgent", instructions="Use available tools to answer questions.", tools=get_current_time)
response = await agent.run("What time is it?")
Microsoft Foundry Agent Service என்பது புதிதாக உருவாக்கப்பட்ட அஜெண்டிக் கட்டமைப்பு, இது மேம்படுத்துனர்களை அடிப்படைக் கணினி மற்றும் சேமிப்பு வளங்களை நிர்வகிக்காமல் பாதுகாப்பாக உயர் தரமான மற்றும் விரிவாக்கத்துக்குத் தகுதியான AI பிரதிநிதிகளை உருவாக்க, வெளியிட மற்றும் அளவிட உதவுகிறது. இது நிறுவன பயன்பாடுகளுக்கு மிகவும் உதவியாக உள்ளது, ஏனெனில் இது முழுமையாக நிர்வகிக்கப்படுகிற சேவை மற்றும் நிறுவன தரமான பாதுகாப்பை வழங்குகிறது.
நேரடியாக LLM API மூலம் மேம்பட்டதைவிட, மைக்ரோசாஃப்ட் ஃபௌன்ட்ரி அஜெண்ட் சேவை பின்வரும் பலன்களை வழங்குகிறது:
மைக்ரோசாஃப்ட் ஃபௌன்ட்ரி அஜெண்ட் சேவையில் கிடைக்கும் கருவிகள் இரண்டு வகைகளாக பிரிக்கப்படலாம்:
அஜெண்ட் சேவை இந்த கருவிகளை toolset ஆக சேர்த்து பயன்படுத்த அனுமதிக்கிறது. மேலும் குறிப்பிட்ட உரையாடல் வரலாற்றை பின்தொடரும் threads ஐ பயன்படுத்துகிறது.
உங்கள் நிறுவனம் Contoso இல் நீங்கள் விற்பனை பிரதிநிதியாக இருந்து விற்பனை தரவு பற்றி கேள்விகளுக்கு பதில் அளிக்கும் உரையாடல் பிரதிநிதியை உருவாக்க விரும்புகிறீர்கள் என்று கற்பனை செய்யுங்கள்.
கீழ்காணும் படம் மைக்ரோசாஃப்ட் ஃபௌன்ட்ரி அஜெண்ட் சேவையை பயன்படுத்தி உங்கள் விற்பனை தரவை எவ்வாறு பகுப்பாய்வு செய்வதை காட்டுகிறது:

சேவையில் எந்த கருவியையும் பயன்படுத்த, நாம் கிளையன்டை உருவாக்கி கருவி அல்லது கருவிசேட்டைப் வரையறுக்க முடியும். இதை நடைமுறைப்படுத்த பின்வரும் Python குறியீட்டை பயன்படுத்தலாம். LLM கருவிசேட்டைப் பார்த்து பயனர் வெளியீட்டின் அடிப்படையில் பயனர் உருவாக்கிய fetch_sales_data_using_sqlite_query செயல்பாட்டை அல்லது முன்நிறுவப்பட்ட Code Interpreter ஐ பயன்படுத்துவது என்பதைத் தீர்மானிக்கலாம்.
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from fetch_sales_data_functions import fetch_sales_data_using_sqlite_query # fetch_sales_data_using_sqlite_query செயல்பாடு fetch_sales_data_functions.py கோப்பிலுள்ளது.
from azure.ai.projects.models import ToolSet, FunctionTool, CodeInterpreterTool
project_client = AIProjectClient.from_connection_string(
credential=DefaultAzureCredential(),
conn_str=os.environ["PROJECT_CONNECTION_STRING"],
)
# கருவி தொகுப்பை துவக்கம் செய்க
toolset = ToolSet()
# fetch_sales_data_using_sqlite_query செயல்பாட்டுடன் மற்றும் அதை கருவி தொகுப்பில் சேர்த்து செயல்பாட்டுக் அழைப்பாளியை துவக்கம் செய்க
fetch_data_function = FunctionTool(fetch_sales_data_using_sqlite_query)
toolset.add(fetch_data_function)
# குறியீடு Interpreter கருவியை துவக்கம் செய்து அதை கருவி தொகுப்பில் சேர்க்கவும்.
code_interpreter = CodeInterpreterTool()toolset.add(code_interpreter)
agent = project_client.agents.create_agent(
model="gpt-4.1-mini", name="my-agent", instructions="You are helpful agent",
toolset=toolset
)
LLMகளால் டைனமிக்காக உருவாக்கப்படும் SQLஇன் வகையில் பொதுவான கவலை தரவுத் தாக்குதல் (SQL Injection) அல்லது தரவுத்தளத்தை அழிக்கும் அல்லது சேதமாக்கும் தீய செயல்கள் போன்ற அபாயங்களாகும். இந்தக் கவலைகள் சரியான தரவு அணுகல் அனுமதிகளை அமைப்பதன் மூலம் பராமரிக்கப்படக்கூடும். பெரும்பாலும் தரவுத்தளங்களை எழுதுவதற்கு மட்டும் அனுமதிக்கப்பட்டதாக (‘read-only’) அமைத்தல் போதும். PostgreSQL அல்லது Azure SQL போன்ற தரவுத் தள சேவைகளுக்கு, செயலியில் ‘read-only (SELECT)’ பங்கு ஒதுக்கப்பட வேண்டும்.
செயலியை பாதுகாப்பான சூழலில் இயக்குவது கூடுதலாகப் பாதுகாப்பைக் கூட்டும். நிறுவன சூழல்களில் தரவு பொதுவாக செயல்பாட்டுப் அமைப்பிலிருந்து வாசிக்கப்பட்டு மாற்றப்பட்டு வாசிக்க மட்டும் சாத்தியமான தரவுத்தளமாக அல்லது தரவு களஞ்சியமாக மாற்றப்படுகிறது. இது தரவை பாதுகாப்பாக்க, செயல்திறன் மற்றும் அணுகல் வசதிக்கு ஏற்றவாறு ஏற்படுத்தி செயலிக்கு கட்டுப்பட்ட வாசிப்பு அனுமதியை வழங்குகிறது.
Microsoft Foundry Discord இல் சேர்ந்து மற்ற பயிலும் நபர்களை சந்திக்கவும், அலுவலக நேரத்தைக் கையாளவும், AI பிரதிநிதிகள் பற்றிய கேள்விகளுக்கு பதில் பெறவும்.
பாடம் 16ல் முகவரியங்களை அமைக்க கற்றுக்கொண்ட பிறகு, இந்த பாடத்தின் TravelToolAgentஐ (இது இன்னும் அதன் கருவிகளை அழைக்கிறதா மற்றும் பதில் அளிக்கிறதா?) tests/lesson-04-smoke-tests.json மூலம் புகை-சோதனை செய்யலாம். அதை இயக்கும் முறை பற்றி tests/README.md பார்க்கவும்.
அஜென்டிக் வடிவமைப்பு முறைகளைப் புரிதல்
மறுப்பு: இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை Co-op Translator பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சி செய்துள்ளோம், ஆனால் தானாக செய்யப்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கலாம் என்பதை கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் தாய்மொழியில் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்நுட்பமான மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கத்திற்கும் நாங்கள் பொறுப்பில்வில்லை.