ai-agents-for-beginners

எப்படி நல்ல AI முகவர்களை வடிவமைப்பது

(இந்த பாடத்தின் வீடியோவை பார்க்க மேலுள்ள படத்தை கிளிக் செய்யவும்)

கருவி பயன்படுத்தும் வடிவமைப்பு முறை

கருவிகள் சுவாரசியமானவை ஏனென்றால் அவை AI முகவர்களுக்கு பரந்து வரும் திறன்களைக் கொண்டிருக்க அனுமதிக்கின்றன. ஒரு முகவர் செய்யக்கூடிய செயல்களின் வரம்பு குறைவாக இருக்கிறதற்கு பதிலாக, ஒரு கருவியைச் சேர்ப்பதன் மூலம், அந்த முகவர் பரந்த அளவிலான செயல்களை செய்ய முடியும். இந்த அத்தியாயத்தில், AI முகவர்களுக்குச் சிறப்பான கருவிகளை பயன்படுத்தி தங்கள் இலக்குகளை அடையக் கற்றுக்கொள்ளக்கூடிய கருவி பயன்படுத்தும் வடிவமைப்பு முறையை பற்றி பார்க்கப் போகிறோம்.

அறிமுகம்

இந்தப் பாடத்தில், நாம் பின்வரும் கேள்விகளுக்கு பதில் காணப்போகிறோம்:

கற்றல் இலக்குகள்

இந்த பாடத்தை முடித்தபின், நீங்கள் முடியும்:

கருவி பயன்படுத்தும் வடிவமைப்பு முறை என்பது என்ன?

கருவி பயன்படுத்தும் வடிவமைப்பு முறை என்பது LLM-களுக்கு குறிப்பிட்ட இலக்குகளை எட்டுவதற்கு வெளிப்புற கருவிகளுடன் தொடர்பு கொள்ளும் திறனை வழங்கக்கூடியது. கருவிகள் என்பது முகவர் செயல்படுத்தக்கூடிய நிரல் ஆகும். ஒரு கருவி எளிய கணக்கிடுபவர் போன்ற செயல்பாடு ஆகும், அல்லது பங்கு விலை பார்வை அல்லது காலநிலை முன்னறிவிப்பு போன்ற மூன்றாம் தரப்பு சேவைக்கு API அழைப்பு ஆகும். AI முகவர்கள் என்று கூறும்போது, கருவிகள் மோடல்-தயாரிக்கப்பட்ட செயல்பாட்டு அழைப்புகள்க்கு பதிலளித்து முகவர்களால் செயல்படுத்தப்படவில்லையென வடிவமைக்கப்படுகின்றன.

எங்கு பயன்படுத்தப்படலாம்?

AI முகவர்கள் சிக்கல் நிறைந்த பணிகளை முடிக்க, தகவலை மீட்டெடுக்க, அல்லது முடிவெடுக்க கருவிகளை பயன்படுத்த முடியும். கருவி பயன்படுத்தும் வடிவமைப்பு முறை அடிக்கடி வெளிப்புற அமைப்புகளுடன் (தரவுத்தளங்கள், வலை சேவைகள், நிரல் தெளிவுபடுத்திகள் போன்றவை) நாடலாற்று தொடர்பு தேவைப்படுமிடங்களில் பயன்படுத்தப்படுகிறது. இதன் பயன்பாட்டுக் குறிப்புக்கள் பலவாக உள்ளன:

கருவி பயன்படுத்தும் வடிவமைப்பு முறையை செயல்படுத்த தேவையான கூறுகள்/அடிப்படைக் காரணிகள் என்ன?

இந்த காரணிகள் AI முகவருக்கு பரந்து பரவிய பணிகளை செய்ய அனுமதிக்கின்றன. கருவி பயன்படுத்தும் வடிவமைப்பு முறையை செயல்படுத்த தேவையான முக்கிய கூறுகளைப் பார்ப்போம்:

அடுத்து, செயல்பாடு/கருவி அழைப்பை விரிவாகப் பார்ப்போம்.

செயல்பாடு/கருவி அழைப்பு

செயல்பாடு அழைப்புதான் LLM-களை கருவிகளுடன் தொடர்புகொள்ள அனுமதிக்கும் முதன்மையான வழி. ‘செயல்பாடு’ என்றும் ‘கருவி’ என்றும் இரண்டு சொற்கள் பரிமாற்றமாகப் பயன்படுத்தப்படுகின்றன, ஏனெனில் ‘செயல்பாடுகள்’ (மறுமொழியளிக்கக்கூடிய நிரல் தொகுதிகள்) என்பது முகவர்கள் பணிகளை செய்வதற்கான ‘கருவிகள்’ ஆகும். செயல்பாட்டின் நிரலை இயக்க LLM பயனர் கோரிக்கையை செயல்பாட்டு விளக்கம் உடன் ஒப்பிட வேண்டும். இதற்கு, அனைத்து கிடைக்கக்கூடிய செயல்பாடுகளின் விளக்கங்கள் கொண்ட திட்டவட்டம் LLMக்கு அனுப்பப்படுகிறது. LLM பணி தொடர்பானது என்பது தகுதி வாய்ந்த செயல்பாட்டைத் தேர்ந்தெடுத்து, அதன் பெயர் மற்றும் அளவுருக்களை மீண்டும் அனுப்புகிறது. தேர்வு செய்யப்பட்ட செயல்பாடு இயக்கப்படுகிறதாயிருகிறது, அதன் பதில் LLMக்கு அனுப்பப்படுகிறது, பின்னர் LLM அது மூலம் பயனர் கேள்விக்கு பதிலளிக்கிறது.

செயல்பாடு அழைப்பை முகவர்களுக்கு செயல்படுத்த விரும்புவோர் প্রয়োজন:

  1. செயல்பாடு அழைப்பை ஆதரிக்கும் LLM மாதிரி
  2. செயல்பாடு விளக்கங்களை கொண்ட திட்டவட்டம்
  3. ஒவ்வொரு செயல்பாடுக்கும் அந்த செயல்பாட்டின் நிரல்

ஒரு நகரின் தற்போதைய நேரத்தைப் பெறும் உதாரணத்தைக் கொண்டு விளக்குவோம்:

  1. செயல்பாடு அழைப்பை ஆதரிக்கும் LLM ஐ துவக்கம் செய்க:

அடிப்படையில், அனைத்து மாதிரிகளும் செயல்பாடு அழைப்பை ஆதரிக்காது, அதனால் உங்கள் LLM ஆதரிக்கிறதா என்பதைச் சரிபார்க்க வேண்டும். Azure OpenAI செயல்பாடு அழைப்பை ஆதரிக்கிறது. Azure OpenAI Responses API (நிலையான /openai/v1/ குறுந்தொடர் - api_version தேவை இல்லை) க்கு எதிராக OpenAI கிளையண்டை தொடங்கி முயற்சி செய்யலாம்.

```python
# 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"]
```
  1. செயல்பாடு திட்டவட்டத்தை உருவாக்குக:

அடுத்து JSON வடிவில் செயல்பாட்டு பெயர், செயல்பாடின் விளக்கம் மற்றும் அளவுருக்களின் பெயர் மற்றும் விளக்கம் கொண்ட திட்டவட்டம் வரையறுக்கப்படுகிறது. இந்த திட்டவட்டத்தை மேல் உருவாக்கிய கிளையண்டுக்கு நேரடியாக அனுப்பி, பயனர் கேட்டு உள்ள சென்ஃபிரான்சிஸ்கோ நகரைப் பற்றிய நேரத்தை கண்டுபிடிக்க பயன்படுத்துவோம். முக்கியமாக கவனிக்க வேண்டியது, கருவி அழைப்பு தான் திருப்பி வழங்கப்படுகின்றது, கேள்விக்கான இறுதி பதில் அல்ல. LLM செயல்பாட்டைப் பெயர் மற்றும் அதற்கான அளவுருக்களை தேர்வு செய்து திருப்பி வழங்குகிறது.

```python
# மாதிரிக்கு வாசிக்க செயல்பாடு விளக்கம் (பதில் 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"],
        },
    }
]
```
   
```python
  
# ஆரம்ப பயனர் செய்தி
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)
  
```

```bash
Model's response:
[ResponseFunctionToolCall(arguments='{"location":"San Francisco"}', call_id='call_pOsKdUlqvdyttYB67MOj434b', name='get_current_time', type='function_call')]
```
  1. பணி செய்வதற்கான செயல்பாடு நிரல்:

இப்போது LLM எந்த செயல்பாடு இயக்கப்பட வேண்டும் என தேர்ந்தெடுத்தது, பணி செய்யப்பட வேண்டிய நிரல் எழுதப்பட்டு இயக்கப்பட வேண்டும்.
Pythonல் தற்போதைய நேரத்தைப் பெறும் நிரலை செயல்படுத்தி, பதில்_செந்தமிழ் அஞ்சலிலிருந்து பெயர் மற்றும் அளவுருக்களைப் பெற்றுக்கொள்ளும் நிரலையும் எழுத வேண்டியது அவசியம்.

```python
  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"})
```

 ```python
# செயல்பாடு அழைப்புகளை கையாளவும்
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
 ```

 ```bash
  get_current_time called with location: San Francisco
  Timezone found for san francisco
  The current time in San Francisco is 09:24 AM.
 ```

செயல்பாடு அழைப்பு பெரும்பாலும், இல்லையெனில் அனைத்து முகவர் கருவி பயன்பாடு வடிவமைப்புகளின் மையமாகும், ஆனால் அடிப்படையில் இருந்து இதை செயல்படுத்துவது சில நேரங்களில் சவாலாக இருக்கலாம். பாடம் 2ல் கற்றபடி, முகவரிக் கட்டமைப்புகள் கருவி பயன்பாட்டிற்கு முன்னிறுத்தப்பட்ட கட்டுமான தொகுதிகளை வழங்குகின்றன.

முகவரிக் கட்டமைப்புகளுடன் கருவி பயன்பாட்டு எடுத்துக்காட்டுகள்

வெவ்வேறு முகவரிக் கட்டமைப்புகளை பயன்படுத்தி கருவி பயன்படுத்தும் வடிவமைப்பு முறையை எவ்வாறு செயல்படுத்த முடியும் என்பதற்கான சில எடுத்துக்காட்டுகள்:

மைக்ரோசாஃப்ட் முகவர் கட்டமைப்பு

மைக்ரோசாஃப்ட் முகவர் கட்டமைப்பு என்பது AI முகவர்களை உருவாக்கும் திறக்கும் மூலப்பட்ட AI கட்டமைப்பாகும். நீங்கள் Python செயல்பாடுகளாக கருவிகளை வரையறுக்க @tool அலங்காரியை பயன்படுத்தத் துவங்குவதால் செயல்பாடு அழைப்பை எளிதாக்குகிறது. இந்த கட்டமைப்பு மாதிரி மற்றும் உங்கள் நிரலுக்கு இடையேயான தொடர்பை கையாள்கிறது. இது FoundryChatClient மூலம் முன் கட்டப்பட்ட கருவிகள், உதாரணமாக கோப்பு தேடல் மற்றும் குறியீடு விளக்கி போன்றவற்றுக்கு அணுகலை வழங்குகிறது.

கீழ்காணும் வரைபடம் மைக்ரோசாஃப்ட் முகவர் கட்டமைப்புடன் செயல்பாடு அழைப்பின் செயல்முறையை விளக்குகிறது:

function calling

மைக்ரோசாஃப்ட் முகவர் கட்டமைப்பில், கருவிகள் அலங்கரிக்கப்பட்ட செயல்பாடுகளாக வரையறுக்கப்பட்டுள்ளன. முன்பே பார்த்த 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?")

மைக்ரோசாஃப்ட் ஃபவுண்ட்ரி முகவர் சேவை

மைக்ரோசாஃப்ட் ஃபவுண்ட்ரி முகவர் சேவை என்பது புதிய முகவரிக் கட்டமைப்பாகும். இது டெவலப்பர்களுக்கு அடிப்படை கணினி மற்றும் சேமிப்பு வளங்களைக் கவனித்தல் இல்லாமல் பாதுகாப்பாக அந்த AI முகவர்களை உருவாக்க, வைப்பதற்கும், பரிமாறக்கூடியதாகவும் வடிவமைக்க உதவுகிறது. இது நிறுவன பயன்பாடுகளுக்கு மிகவும் பயனுள்ளதாவது முழுமையாக சீரமைக்கப்பட்ட சேவை மற்றும் நிறுவன தரநிலை பாதுகாப்பு கொண்டது.

நேரடியாக LLM API பயன்படுத்துவதுடன் ஒப்பிடும்போது, மைக்ரோசாஃப்ட் ஃபவுண்ட்ரி முகவர் சேவைக்கு சில நன்மைகள் உள்ளன, அவை:

மைக்ரோசாஃப்ட் ஃபவுண்ட்ரி முகவர் சேவையில் கிடைக்கும் கருவிகளை இரண்டு வகைகளாக பிரிக்கலாம்:

  1. அறிவுக் கருவிகள்:
  2. செயல் கருவிகள்:

முகவர் சேவை இந்த கருவிகளை கருவி தொகுப்பாக ஒன்றிணைக்க உதவுகிறது. இது குறிப்பிட்ட உரையாடலின் செய்திகளின் வரலாற்றைப் பதிவு செய்யும் த்ரெட்கள்ஐ பயனுள்ளதாகக் கொண்டுள்ளது.

நீங்கள் Contoso என்ற நிறுவனத்தில் ஒரு விற்பனை முகவராக இருப்பதாகக் கற்பனை செய்யுங்கள். உங்கள் விற்பனை தரவுகளைப் பற்றி கேள்விகளுக்கு பதிலளிக்கும் உரையாடல் முகவரியை உருவாக்க விரும்புகிறீர்கள்.

கீழ்காணும் படம் Microsoft Foundry Agent Service பயன்படுத்தி உங்கள் விற்பனை தரவுகளை எப்படி பகுப்பாய்வு செய்வதைக் காட்டுகிறது:

Agentic Service In Action

சேவையுடன் எந்தவொரு கருவியையும் பயன்படுத்த, நாம் ஒரு கிளையண்டை உருவாக்கி ஒரு கருவி அல்லது கருவி தொகுப்பை வரையறுக்கலாம். இதை நடைமுறைப்படுத்துவதற்கு கீழ்காணும் Python குறியீட்டை பயன்படுத்தலாம். LLM கருவி தொகுப்பைப் பார்த்து பயனர் உருவாக்கிய fetch_sales_data_using_sqlite_query செயல்பாடு அல்லது முன்கூட்டியே தயாரிக்கப்பட்ட குறியீடு விளக்கி ஆகியவற்றை பயன்படுத்துவது எது என்பதை தீர்மானிக்க முடியும்.

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)

# குறியீடு வேர்ப்பு கருவியை ஆரம்பித்து அதை கருவி தொகுப்பில் சேர்க்கவும்.
code_interpreter = CodeInterpreterTool()toolset.add(code_interpreter)

agent = project_client.agents.create_agent(
    model="gpt-5-mini", name="my-agent", instructions="You are helpful agent", 
    toolset=toolset
)

நம்பத்தகுந்த AI முகவர்களை உருவாக்க கருவி பயன்படுத்தும் வடிவமைப்பு முறையில் கவனிக்க வேண்டிய விசேட அம்சங்கள் என்ன?

LLM இல் தானாக உருவாக்கப்படும் SQL தொடர்பான பொதுவான கவலை பாதுகாப்பு. குறிப்பாக SQL புகுந்தல் பரிசோதனை அல்லது தீய செயல்கள் (தரவுத்தளத்தை அழித்தல் அல்லது அதில் புரட்சி செய்தல் போன்றவை). இவற்றை தேவையான தரவுத்தள அணுகல் அனுமதிகளை சரியாக அமைக்க மூலம் நல்ல முறையில் தடுக்க முடியும். பெரும்பாலான தரவுத்தளங்களுக்கு, அதை படிக்க மட்டும் (read-only) அமைக்க வேண்டும். PostgreSQL அல்லது Azure SQL போன்ற சேவைகளுக்கு, செயலியில் படிக்க மட்டும் (SELECT) உரிமையை வழங்க வேண்டும்.

செயலியை பாதுகாப்பான சூழலில் இயக்குவதால் மேலதிக பாதுகாப்பு கிடைக்கும். நிறுவன சூழல்களில், தரவு பொதுவாக செயல்பாட்டு அமைப்புகளில் இருந்து படிக்க மட்டும் தரவுத்தளமாக அல்லது தரவுத்தளக் கூடமாக மாற்றப்படும், எளிதாகப் புரிந்து கொள்ளக்கூடிய திட்டவட்டத்துடன். இவ்வாறு, தரவு பாதுகாப்பாகவும் திறமையான அணுகல் உடையதாகவும் இருக்கும், செயலிக்கு படிக்க மட்டும் சேவையளிக்க அனுமதி வழங்கப்படும்.

மாதிரி குறியீடுகள்

கருவி பயன்படுத்தும் வடிவமைப்பு முறைகள் குறித்த மேலும் கேள்விகள் உண்டா?

Microsoft Foundry Discord இல் இணைந்தீர்கள் என்றால் மற்ற கற்றாளர்களை சந்தித்து, அலுவலக நேரங்களில் கலந்துகொண்டு உங்கள் AI முகவர்கள் தொடர்பான கேள்விகளுக்கு பதில்கள் பெறலாம்.

கூடுதல் ஆதாரங்கள்

இந்த முகவரியை ஸ்மோக்-சோதனை செய்தல் (விருப்பப்படி)

பாடநெறி 16ல் முகவரிகளை நியமிப்பது கற்றுக்கொண்ட பிறகு, நீங்கள் இந்த பாடத்தின் TravelToolAgent ஐ ஸ்மோக்-சோதனை செய்யலாம் (இது இன்னும் அதன் கருவிகளை அழைக்கிறதா மற்றும் பதிலளிக்கிறதா?) tests/lesson-04-smoke-tests.json மூலம். அதை இயக்க எப்படி என்பதற்கு tests/README.md பாருங்கள்.

முந்தைய பாடம்

ஏஜென்டிக் வடிவமைப்பு வடிவங்கள் புரிதல்

அடுத்த பாடம்

ஏஜென்டிக் RAG


மறுப்பு: இந்த ஆவணம் AI மொழிபெயர்ப்பு சேவை Co-op Translator பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சி செய்துள்ளோம், ஆனால் தானாக செய்யப்படும் மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கலாம் என்பதை கவனத்தில் கொள்ளவும். அசல் ஆவணம் அதன் தாய்மொழியில் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்நுட்பமான மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்கள் அல்லது தவறான விளக்கத்திற்கும் நாங்கள் பொறுப்பில்வில்லை.