ai-agents-for-beginners

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

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

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

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

அறிமுகம்

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

கற்றல் குறிக்கோள்கள்

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

கருவி பயன்பாட்டு வடிவமைத்தல் மாதிரி란 என்ன?

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

இது எந்த பயன்பாடுகளில் பயன்படுத்தப்படலாம்?

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

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

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

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

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

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

முகவர்களுக்கு செயல்பாடு அழைப்பை செயல்படுத்துவதற்காக, உங்களுக்கு:

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

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

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

    எல்லா மாதிரிகளும் செயல்பாடு அழைப்பை ஆதரிக்குவதில்லை, எனவே நீங்கள் பயன்படுத்தும் LLM ஆதரிக்கிறதா என்பதைப் பார்க்க வேண்டும். Azure OpenAI செயல்பாடு அழைப்பை ஆதரிக்கிறது. Azure OpenAI கிளையண்டைத் தொடங்கலாம்.

     # Azure OpenAI கிளையண்டை துவக்கவும்
     client = AzureOpenAI(
         azure_endpoint = os.getenv("AZURE_AI_PROJECT_ENDPOINT"), 
         api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
         api_version="2024-05-01-preview"
     )
    
  2. ஒரு செயல்பாடு ஸ்கீமாவை உருவாக்கவும்:

    அடுத்ததாக, செயல்பாட்டின் பெயர், அது செய்கின்ற செயல்களின் விளக்கம், மற்றும் செயல்பாடு அளவுருக்களின் பெயர்கள் மற்றும் விளக்கங்கள் கொண்ட 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')])
    
  3. பணியை மேற்கொள்ள தேவையான செயல்பாட்டு குறியீடு:

    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.
    

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

முகவர் கட்டமைப்புகளுடன் கருவி பயன்பாட்டு உதாரணங்கள்

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

Microsoft முகவர் கட்டமைப்பு

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

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

function calling

Microsoft முகவர் கட்டமைப்பில், கருவிகள் அலங்காரித்த செயல்பாடுகளாக வரையறுக்கப்பட்டுள்ளன. நாம் மேற்படி get_current_time செயல்பாட்டை @tool அலங்காரியால் கருவியாக மாற்றலாம். கட்டமைப்பு செயல்பாட்டையும் அதன் அளவுருக்களையும் தானாகத் தொடரியல் வடிவில் மாற்றி, LLMக்கு அனுப்ப தேவையான ஸ்கீமாவை உருவாக்கும்.

from agent_framework import tool
from agent_framework.azure import AzureAIProjectAgentProvider
from azure.identity import AzureCliCredential

@tool
def get_current_time(location: str) -> str:
    """Get the current time for a given location"""
    ...

# கிளையன்டை உருவாக்கவும்
provider = AzureAIProjectAgentProvider(credential=AzureCliCredential())

# ஒரு முகவரியை உருவாக்கி கருவியுடன் இயக்கவும்
agent = await provider.create_agent(name="TimeAgent", instructions="Use available tools to answer questions.", tools=get_current_time)
response = await agent.run("What time is it?")

Azure AI முகவர் சேவை

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

LLM API ஐ நேரடியாக பயன்படுத்தும் அளவில், Azure AI முகவர் சேவை சில முன்னேற்றங்களை வழங்குகிறது, இதில்:

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

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

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

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

கீழ்காணும் படம் Azure AI முகவர் சேவையைக் பயன்படுத்தி உங்கள் விற்பனை தரவை பகுப்பாய்வு செய்யும் முறையை விளக்குகிறது:

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 என்ற பணி கொண்ட function calling முகவரியை துவந்து அதை கருவி தொகுதியில் சேர்க்கவும்
fetch_data_function = FunctionTool(fetch_sales_data_using_sqlite_query)
toolset.add(fetch_data_function)

# Code Interpreter கருவியை துவக்கி அதை கருவி தொகுதியில் சேர்க்கவும்.
code_interpreter = CodeInterpreterTool()toolset.add(code_interpreter)

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

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

LLMகள் மூலம் സ്വയமாக உருவாக்கப்படும் SQL இன் பொதுவான கவலை பாதுகாப்புதான், குறிப்பாக SQL இன்ஜெක්ෂன் அல்லது தீங்கு விளைவிக்கக்கூடிய நடவடிக்கைகளின் அபாயம், உதாரணமாக தரவுத்தளத்தை அழிக்கும் அல்லது மாற்றும் ரீதியிலானது. இந்த கவலைகள் உண்மையானவை ஆகினும், தரவுத்தள அணுகல் அனுமதிகளை சரியாக அமைப்பதன் மூலம் அவை திறம்பட தடுக்கப்படலாம். பெரும்பாலும் தரவுத்தளத்தை படிக்க மட்டுமே அனுமதிப்பதாய் அமைப்பது இது. போலி சேவைகள் போல PostgreSQL அல்லது Azure SQL போன்ற தரவுத்தள சேவைகளுக்கு ஆப்புக்கு படிக்க மட்டுமே (SELECT) உரிமை வழங்கப்பட வேண்டும்.

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

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

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

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

கூடுதல் ஆதரவுகள்

முன்னைய பாடம்

Agentic வடிவமைத்தல் மாதிரிகளை புரிதல்

அடுத்த பாடம்

எஜென்டிக் RAG


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