ai-agents-for-beginners

Jinsi ya Kubuni Mawakala wa AI Wazuri

(Bofya picha hapo juu ili kutazama video ya somo hili)

Muundo wa Matumizi ya Zana

Zana ni za kuvutia kwa sababu zinawapa mawakala wa AI uwezo mpana zaidi. Badala ya wakala kuwa na seti ndogo ya vitendo anavyoweza kutekeleza, kwa kuongeza zana, wakala sasa anaweza kutekeleza vitendo mbalimbali. Katika sura hii, tutachunguza Muundo wa Matumizi ya Zana, ambao unaelezea jinsi mawakala wa AI wanaweza kutumia zana maalum kufanikisha malengo yao.

Utangulizi

Katika somo hili, tunatafuta kujibu maswali yafuatayo:

Malengo ya Kujifunza

Baada ya kukamilisha somo hili, utaweza:

Muundo wa Matumizi ya Zana ni nini?

Muundo wa Matumizi ya Zana unalenga kuwapa LLMs uwezo wa kuingiliana na zana za nje ili kufanikisha malengo maalum. Zana ni msimbo unaoweza kutekelezwa na wakala ili kutekeleza vitendo. Zana inaweza kuwa kazi rahisi kama kikokotoo, au ombi la API kwa huduma ya mtu wa tatu kama kutafuta bei ya hisa au utabiri wa hali ya hewa. Katika muktadha wa mawakala wa AI, zana zimeundwa kutekelezwa na mawakala kwa kujibu miito ya kazi inayotokana na modeli.

Ni hali gani za matumizi ambapo unaweza kutumika?

Mawakala wa AI wanaweza kutumia zana kukamilisha kazi ngumu, kupata taarifa, au kufanya maamuzi. Muundo wa matumizi ya zana mara nyingi hutumika katika hali zinazohitaji mwingiliano wa nguvu na mifumo ya nje, kama vile hifadhidata, huduma za wavuti, au wakalimani wa msimbo. Uwezo huu ni muhimu kwa hali mbalimbali za matumizi ikiwa ni pamoja na:

Ni vipengele/vijengo gani vinavyohitajika kutekeleza muundo wa matumizi ya zana?

Vipengele hivi vinamwezesha wakala wa AI kutekeleza kazi mbalimbali. Hebu tuangalie vipengele muhimu vinavyohitajika kutekeleza Muundo wa Matumizi ya Zana:

Sasa, hebu tuangalie kwa undani zaidi kuhusu Miito ya Kazi/Zana.

Miito ya Kazi/Zana

Miito ya kazi ni njia kuu tunayotumia kuwezesha LLMs kuingiliana na zana. Mara nyingi utaona ‘Kazi’ na ‘Zana’ zikitumika kwa kubadilishana kwa sababu ‘kazi’ (sehemu za msimbo unaoweza kutumika tena) ni ‘zana’ ambazo mawakala hutumia kutekeleza kazi. Ili msimbo wa kazi utekelezwe, LLM lazima linganishe ombi la mtumiaji na maelezo ya kazi. Ili kufanya hivyo, mfumo unaoelezea maelezo ya kazi zote zinazopatikana hutumwa kwa LLM. LLM kisha huchagua kazi inayofaa zaidi kwa kazi hiyo na kurudisha jina lake na hoja zake. Kazi iliyochaguliwa inatekelezwa, majibu yake yanarudishwa kwa LLM, ambayo hutumia taarifa hiyo kujibu ombi la mtumiaji.

Kwa watengenezaji kutekeleza miito ya kazi kwa mawakala, utahitaji:

  1. Modeli ya LLM inayounga mkono miito ya kazi
  2. Mfumo unaoelezea maelezo ya kazi
  3. Msimbo wa kila kazi iliyoelezewa

Hebu tutumie mfano wa kupata muda wa sasa katika jiji fulani kuonyesha:

  1. Anzisha LLM inayounga mkono miito ya kazi:

    Sio kila modeli inaunga mkono miito ya kazi, kwa hivyo ni muhimu kuhakikisha kwamba LLM unayotumia inafanya hivyo. Azure OpenAI inaunga mkono miito ya kazi. Tunaweza kuanza kwa kuanzisha mteja wa Azure OpenAI.

     # Initialize the Azure OpenAI client
     client = AzureOpenAI(
         azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
         api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
         api_version="2024-05-01-preview"
     )
    
  2. Unda Mfumo wa Kazi:

    Kisha tutafafanua mfumo wa JSON unaojumuisha jina la kazi, maelezo ya kazi hiyo, na majina na maelezo ya vigezo vya kazi. Tutachukua mfumo huu na kuupitisha kwa mteja aliyeundwa awali, pamoja na ombi la mtumiaji la kutafuta muda huko San Francisco. Jambo muhimu la kuzingatia ni kwamba mwito wa zana ndio unarudishwa, sio jibu la mwisho la swali. Kama ilivyoelezwa awali, LLM inarudisha jina la kazi iliyochaguliwa kwa kazi hiyo, na hoja zitakazopitishwa kwake.

     # Function description for the model to read
     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"],
                 },
             }
         }
     ]
    
      
     # Initial user message
     messages = [{"role": "user", "content": "What's the current time in San Francisco"}] 
      
     # First API call: Ask the model to use the function
       response = client.chat.completions.create(
           model=deployment_name,
           messages=messages,
           tools=tools,
           tool_choice="auto",
       )
      
       # Process the model's response
       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. Msimbo wa kazi unaohitajika kutekeleza kazi:

    Sasa kwa kuwa LLM imechagua kazi gani inahitaji kutekelezwa, msimbo unaotekeleza kazi hiyo unahitaji kuandikwa na kutekelezwa. Tunaweza kutekeleza msimbo wa kupata muda wa sasa kwa Python. Pia tutahitaji kuandika msimbo wa kutoa jina na hoja kutoka kwa response_message ili kupata matokeo ya mwisho.

       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"})
    
      # Handle function calls
       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.")  
      
       # Second API call: Get the final response from the model
       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.
    

Miito ya Kazi iko katikati ya muundo wa matumizi ya zana kwa mawakala, hata hivyo kuitekeleza kutoka mwanzo inaweza kuwa changamoto wakati mwingine. Kama tulivyojifunza katika Somo la 2 mifumo ya mawakala hutupatia vijengo vilivyotengenezwa tayari kutekeleza matumizi ya zana.

Mifano ya Matumizi ya Zana na Mifumo ya Mawakala

Hapa kuna mifano ya jinsi unavyoweza kutekeleza Muundo wa Matumizi ya Zana kwa kutumia mifumo tofauti ya mawakala:

Semantic Kernel

Semantic Kernel ni mfumo wa AI wa chanzo huria kwa watengenezaji wa .NET, Python, na Java wanaofanya kazi na LLMs. Unarahisisha mchakato wa kutumia miito ya kazi kwa kuelezea moja kwa moja kazi zako na vigezo vyake kwa modeli kupitia mchakato unaoitwa kuweka katika muundo wa serial. Pia hushughulikia mawasiliano ya kurudi na kurudi kati ya modeli na msimbo wako. Faida nyingine ya kutumia mfumo wa mawakala kama Semantic Kernel ni kwamba inakuruhusu kufikia zana zilizotengenezwa tayari kama Utafutaji wa Faili na Mkalimani wa Msimbo.

Mchoro ufuatao unaonyesha mchakato wa miito ya kazi na Semantic Kernel:

miito ya kazi

Katika Semantic Kernel kazi/zana zinaitwa Plugins. Tunaweza kubadilisha kazi ya get_current_time tuliyoiona awali kuwa plugin kwa kuibadilisha kuwa darasa lenye kazi ndani yake. Tunaweza pia kuingiza kipambo cha kernel_function, ambacho kinachukua maelezo ya kazi. Unapounda kernel na GetCurrentTimePlugin, kernel itaweka moja kwa moja kazi na vigezo vyake katika muundo wa serial, ikitengeneza mfumo wa kutuma kwa LLM katika mchakato.

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

# Create the kernel
kernel = Kernel()

# Create the plugin
get_current_time_plugin = GetCurrentTimePlugin(location)

# Add the plugin to the kernel
kernel.add_plugin(get_current_time_plugin)

Huduma ya Mawakala ya AI ya Azure

Huduma ya Mawakala ya AI ya Azure ni mfumo mpya wa mawakala ulioundwa kuwawezesha watengenezaji kujenga, kupeleka, na kupanua mawakala wa AI wa hali ya juu na wa kupanuka bila hitaji la kusimamia rasilimali za msingi za kompyuta na hifadhi. Ni muhimu hasa kwa matumizi ya biashara kwa kuwa ni huduma inayosimamiwa kikamilifu yenye usalama wa daraja la biashara.

Ikilinganishwa na kuendeleza moja kwa moja na API ya LLM, Huduma ya Mawakala ya AI ya Azure inatoa faida kadhaa, ikiwa ni pamoja na:

Zana zinazopatikana katika Huduma ya Mawakala ya AI ya Azure zinaweza kugawanywa katika makundi mawili:

  1. Zana za Maarifa:
  2. Zana za Vitendo:

Huduma ya Mawakala inatuwezesha kutumia zana hizi pamoja kama toolset. Pia hutumia threads ambazo hufuatilia historia ya ujumbe kutoka kwa mazungumzo fulani.

Fikiria wewe ni wakala wa mauzo katika kampuni inayoitwa Contoso. Unataka kuunda wakala wa mazungumzo ambaye anaweza kujibu maswali kuhusu data yako ya mauzo.

Picha ifuatayo inaonyesha jinsi unavyoweza kutumia Huduma ya Mawakala ya AI ya Azure kuchambua data yako ya mauzo:

Huduma ya Mawakala Katika Matendo

Ili kutumia zana yoyote na huduma hii tunaweza kuunda mteja na kufafanua zana au seti ya zana. Ili kutekeleza hili kwa vitendo tunaweza kutumia msimbo wa Python ufuatao. LLM itaweza kuangalia seti ya zana na kuamua kutumia kazi iliyoundwa na mtumiaji, fetch_sales_data_using_sqlite_query, au Mkalimani wa Msimbo uliotengenezwa tayari kulingana na ombi la mtumiaji.

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 function which can be found in a fetch_sales_data_functions.py file.
from azure.ai.projects.models import ToolSet, FunctionTool, CodeInterpreterTool

project_client = AIProjectClient.from_connection_string(
    credential=DefaultAzureCredential(),
    conn_str=os.environ["PROJECT_CONNECTION_STRING"],
)

# Initialize function calling agent with the fetch_sales_data_using_sqlite_query function and adding it to the toolset
fetch_data_function = FunctionTool(fetch_sales_data_using_sqlite_query)
toolset = ToolSet()
toolset.add(fetch_data_function)

# Initialize Code Interpreter tool and adding it to the toolset. 
code_interpreter = code_interpreter = CodeInterpreterTool()
toolset = ToolSet()
toolset.add(code_interpreter)

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

Ni mambo gani maalum ya kuzingatia wakati wa kutumia Muundo wa Matumizi ya Zana kujenga mawakala wa AI wanaoaminika?

Shida ya kawaida na SQL inayotengenezwa kwa nguvu na LLMs ni usalama, hasa hatari ya sindano ya SQL au vitendo vya uharibifu, kama vile kufuta au kuharibu hifadhidata. Ingawa shida hizi ni halali, zinaweza kupunguzwa kwa ufanisi kwa kusanidi vibali vya ufikiaji wa hifadhidata ipasavyo. Kwa hifadhidata nyingi hii inahusisha kusanidi hifadhidata kama ya kusoma tu. Kwa huduma za hifadhidata kama PostgreSQL au Azure SQL, programu inapaswa kupewa jukumu la kusoma tu (SELECT). Kuendesha programu katika mazingira salama kunaboresha zaidi ulinzi. Katika hali za biashara, data kwa kawaida hutolewa na kubadilishwa kutoka mifumo ya uendeshaji hadi hifadhidata ya kusoma tu au ghala la data lenye mpangilio rahisi wa mtumiaji. Njia hii inahakikisha kuwa data ni salama, imeboreshwa kwa utendaji na upatikanaji, na kwamba programu ina ufikiaji wa kusoma tu uliozuiliwa.

Sampuli za Nambari

Una Maswali Zaidi Kuhusu Matumizi ya Mifumo ya Ubunifu wa Zana?

Jiunge na Azure AI Foundry Discord ili kukutana na wanafunzi wengine, kuhudhuria masaa ya ofisi, na kupata majibu ya maswali yako kuhusu Wakala wa AI.

Rasilimali za Ziada

Somo la Awali

Kuelewa Mifumo ya Ubunifu wa Wakala

Somo Linalofuata

Agentic RAG


Kanusho:
Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI Co-op Translator. Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inapendekezwa. Hatutawajibika kwa kutoelewana au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.