ai-agents-for-beginners

Jinsi ya Kusanifu Wakala Wazuri wa AI

(Bonyeza picha hapo juu kutazama video ya somo hili)

Mfano wa Ubunifu wa Matumizi ya Zana

Zana ni za kuvutia kwa sababu zinawawezesha mawakala wa AI kuwa na anuwai kubwa zaidi ya uwezo. Badala ya wakala kuwa na seti ndogo ya vitendo anavyoweza kufanya, kwa kuongeza zana, wakala sasa anaweza kufanya vitendo vingi zaidi. Katika sura hii, tutaangalia Mfano wa Ubunifu wa Matumizi ya Zana, ambao unaelezea jinsi mawakala wa AI wanavyoweza kutumia zana maalum kufanikisha malengo yao.

Utangulizi

Katika somo hili, tunatafuta kujibu maswali yafuatayo:

Malengo ya Kujifunza

Baada ya kumaliza somo hili, utaweza:

Mfano wa Ubunifu wa Matumizi ya Zana ni Nini?

Mfano wa Ubunifu wa Matumizi ya Zana unalenga kuwapa Moduli Kubwa za Lugha (LLMs) uwezo wa kuingiliana na zana za nje kufanikisha malengo maalum. Zana ni kipande cha msimbo ambacho wakala anaweza kuendesha kufanya vitendo. Zana inaweza kuwa kazi rahisi kama kalkuleta, au wito wa API kwa huduma ya mtu wa tatu kama kutafuta bei ya hisa au hali ya hewa. Katika muktadha wa mawakala wa AI, zana zimeundwa kutekelezwa na mawakala kama majibu kwa miito ya kazi inayotolewa na mfano.

Ni Matumizi Gani Inayoweza Kutumika Kwenye Mfano Huu?

Wakala wa AI wanaweza kutumia zana kukamilisha kazi tata, kupata taarifa, au kufanya maamuzi. Mfano wa matumizi ya zana hutumika mara nyingi katika mazingira yanayohitaji mwingiliano wa moja kwa moja na mifumo ya nje, kama vile database, huduma za wavuti, au wakufunzi wa msimbo. Uwezo huu ni muhimu kwa matumizi mbalimbali ikiwa ni pamoja na:

Ni Vipengele/Vijimenge Gani Vinavyohitajika Kutekeleza Mfano wa Matumizi ya Zana?

Vijimenge hivi vinamruhusu wakala wa AI kufanya kazi nyingi tofauti. Tuchunguze vipengele muhimu vinavyohitajika kutekeleza Mfano wa Ubunifu wa Matumizi ya Zana:

Ifuatayo, tutaangalia kwa undani zaidi Kuhamia/Kuita Kazi/Zana.

Kuhamia/Kuita Kazi/Zana

Kuitwa kwa kazi ndio njia kuu tunavyowawezesha Moduli Kubwa za Lugha (LLMs) kuingiliana na zana. Mara nyingi utaona ‘Kazi’ na ‘Zana’ zikitumika kwa kubadilishana kwa sababu ‘kazi’ (vijimenge vya msimbo vinavyoweza kutumika tena) ni ‘zana’ ambazo mawakala hutumia kufanya kazi. Ili msimbo wa kazi kuitwa, LLM lazima linganishe ombi la mtumiaji na maelezo ya kazi. Kufanya hivyo kuna schema inayobeba maelezo ya kazi zote zinazopatikana inatumiwa kwa LLM. LLM kisha huchagua kazi inayofaa kwa kazi husika na kurudisha jina lake pamoja na hoja zake. Kazi iliyochaguliwa huitwa, jibu lake hutumwa tena kwa LLM, ambalo hutumia taarifa hiyo kujibu ombi la mtumiaji.

Kwa waendelezaji kutekeleza kuitwa kwa kazi kwa mawakala, utahitaji:

  1. Mfano wa LLM unaounga mkono kuitwa kwa kazi
  2. Schema inayobeba maelezo ya kazi
  3. Msimbo wa kila kazi iliyotajwa

Tuchukue mfano wa kupata saa ya sasa katika mji fulani kuonyesha:

  1. anzisha LLM inayounga mkono kuitwa kwa kazi:

    Siyo mifano yote inaunga mkono kuitwa kwa kazi, kwa hivyo ni muhimu kuangalia kwamba LLM unayotumia inaunga mkono. Azure OpenAI inaunga mkono kuitwa kwa kazi. Tunaweza kuanza kwa kuanzisha mteja wa OpenAI dhidi ya Azure OpenAI API ya Majibu (muhuri wa /openai/v1/ — hakuna api_version inahitajika).

     # Anzisha mteja wa OpenAI kwa ajili ya Azure OpenAI (API ya Majibu, kiunganishi v1)
     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"]
    
  2. Tengeneza Schema ya Kazi:

    Ifuatayo tutaelezea schema ya JSON inayobeba jina la kazi, maelezo ya kile kazi inachofanya, na majina na maelezo ya vigezo vya kazi. Kisha tutaipatia schema hii mteja tuliyemuweka awali, pamoja na ombi la mtumiaji la kupata saa ya mji wa San Francisco. Muhimu ni kuelewa kwamba miito ya zana ndio inayorudishwa, sio jibu la mwisho kwa swali. Kama tulivyosema awali, LLM hurudisha jina la kazi iliyoichagua kwa kazi na hoja zitakazokuwa zikipelekwa.

     # Maelezo ya kazi kwa mfano kusoma (Jinsi ya chombo cha flat cha API cha Majibu)
     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"],
             },
         }
     ]
    
      
     # Ujumbe wa mwanzo wa mtumiaji
     messages = [{"role": "user", "content": "What's the current time in San Francisco"}]
    
     # Mwito wa kwanza wa API: Muulize modeli kutumia kazi hiyo
     response = client.responses.create(
         model=deployment_name,
         input=messages,
         tools=tools,
         tool_choice="auto",
         store=False,
     )
    
     # API ya Majibu hurudisha miito ya zana kama vitu vya function_call katika response.output.
     # Ziambatishie kwenye mazungumzo ili modeli iwe na muktadha kamili katika zamu inayofuata.
     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')]
    
  3. Msimbo wa kazi unaohitajika kutekeleza kazi:

    Sasa LLM imechagua ni kazi gani itekelezwe, msimbo wa kutekeleza kazi unahitaji kuandikwa na kutekelezwa. Tunaweza kuandika msimbo wa kupata saa ya 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"})
    
     # Shughulikia miito ya kazi
     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")
                 )
    
                 # Rudisha matokeo ya chombo kama kipengee cha 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.")
    
     # Mwito wa pili wa API: Pata jibu la mwisho kutoka kwa mfano
     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.
    

Kuitwa kwa Kazi ni msingi wa matumizi ya zana katika ubunifu wa mawakala, hata hivyo kutekeleza kutoka mwanzoni kunaweza kuwa changamoto kwa wakati mwingine. Kama tulivyojifunza katika Somo la 2 mifumo ya mawakala hutupatia vijimenge vijengwa tayari kutekeleza matumizi ya zana.

Mifano ya Matumizi ya Zana kwa Mifumo ya Mawakala

Hapa kuna mifano ya jinsi unaweza kutekeleza Mfano wa Ubunifu wa Matumizi ya Zana kwa kutumia mifumo mbalimbali ya mawakala:

Mfumo wa Mawakala wa Microsoft

Mfumo wa Mawakala wa Microsoft ni mfumo wa AI wa chanzo wazi kwa ajili ya kujenga mawakala wa AI. Unarahisisha mchakato wa kuitwa kwa kazi kwa kuruhusu utambuzi wa zana kama kazi za Python zilizo na kawaida ya @tool. Mfumo hushughulikia mawasiliano yanayorudi na yanayotumwa kati ya mfano na msimbo wako. Pia hutoa zana zilizoandaliwa tayari kama File Search na Code Interpreter kupitia FoundryChatClient.

Mchoro ufuatao unaonyesha mchakato wa kuitwa kazi na Mfumo wa Mawakala wa Microsoft:

kuitwa kazi

Katika Mfumo wa Mawakala wa Microsoft, zana zimetangazwa kama kazi zilizo na alama (@tool). Tunaweza kubadilisha kazi get_current_time tuliyoiona awali kuwa zana kwa kutumia alama ya @tool. Mfumo utasambaza moja kwa moja kazi na vigezo vyake, ukitengeneza schema ya kutuma kwa 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"""
    ...

# Tengeneza mteja
provider = FoundryChatClient(
    project_endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"],
    model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
    credential=AzureCliCredential(),
)

# Tengeneza wakala na endesha na chombo
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?")

Huduma ya Mawakala ya Microsoft Foundry

Huduma ya Mawakala ya Microsoft Foundry ni mfumo mpya wa mawakala ulioundwa kuwasaidia waendelezaji kujenga, kupeleka, na kupanua mawakala wa AI wa hali ya juu na yanayoweza kupanuliwa kwa usalama bila kuhitaji kusimamia rasilimali za kompyuta na kuhifadhi. Ni muhimu kwa matumizi ya biashara kwa sababu ni huduma inayosimamiwa kikamilifu na usalama wa daraja la biashara.

Ikiwa utalinganisha na maendeleo moja kwa moja kwa API ya LLM, Huduma ya Mawakala ya Microsoft Foundry inatoa faida kadhaa, ikiwa ni pamoja na:

Zana zinazopatikana katika Huduma ya Mawakala ya Microsoft Foundry zinaweza kugawanyika katika makundi mawili:

  1. Zana za Maarifa:
  2. Zana za Kutenda:

Huduma ya Mawakala inaturuhusu kutumia zana hizi pamoja kama seti ya zana. Pia hutumia nyuzi ambazo hufuatilia historia ya ujumbe kutoka kwa mazungumzo maalum.

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

Picha ifuatayo inaonyesha jinsi unavyoweza kutumia Huduma ya Mawakala ya Microsoft Foundry kuchambua data yako ya mauzo:

Huduma ya Mawakala Katika Matendo

Kutumia zana zozote hizi na huduma tunaweza kuunda mteja na kufafanua zana au seti ya zana. Kutekeleza hili kwa vitendo tunaweza kutumia msimbo ufuatao wa Python. LLM itakuwa na uwezo wa kuangalia seti ya zana na kuamua ikiwa itatumia kazi iliyoundwa na mtumiaji, fetch_sales_data_using_sqlite_query, au Mfasiri wa Msimbo aliyeko 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 # kipengele cha fetch_sales_data_using_sqlite_query ambacho kinaweza kupatikana katika faili la 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"],
)

# Anzisha seti ya zana
toolset = ToolSet()

# Anzisha wakala wa kuita function na kipengele cha fetch_sales_data_using_sqlite_query na kuiongeza kwenye seti ya zana
fetch_data_function = FunctionTool(fetch_sales_data_using_sqlite_query)
toolset.add(fetch_data_function)

# Anzisha chombo cha Mfasiri wa Msimbo na kuiongeza kwenye seti ya zana.
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
)

Ni Mambo Gani Maalum ya Kuzingatia Kutumia Mfano wa Ubunifu wa Matumizi ya Zana Kujenga Mawakala wa AI wa Kuaminika?

Wasiwasi wa kawaida kuhusu SQL inayozalishwa moja kwa moja na LLM ni usalama, hasa hatari ya sindano za SQL au vitendo vya uovu, kama vile kufuta au kubadili database. Ingawa wasiwasi huu ni wa kweli, unaweza kupunguzwa kwa ufanisi kwa kuweka haki za upatikanaji za database ipasavyo. Kwa database nyingi hii inajumuisha kuweka database kuwa ya kusoma tu. Kwa huduma za database kama PostgreSQL au Azure SQL, app inapaswa kupatiwa cheo cha kusoma tu (SELECT).

Kuendesha app katika mazingira salama kunaleta ulinzi zaidi. Katika matukio ya biashara, data kawaida hutolewa na kubadilishwa kutoka kwa mifumo ya uendeshaji na kuingia katika database au hifadhi ya data inayosomeka tu na schema rahisi kwa mtumiaji. Njia hii inahakikisha data iko salama, imeboreshwa kwa utendaji na upatikanaji, na app ina upatikanaji uliodhibitiwa, wa kusoma tu.

Sampuli za Msimbo

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

Jiunge na Microsoft Foundry Discord kukutana na wapenzi wengine, kuhudhuria saa za ofisi na kupata majibu ya maswali yako kuhusu Mawakala wa AI.

Rasilimali Zaidi

Kupima Haraka Wakili Huyu (Hiari)

Baada ya kujifunza kuanzisha maajenti katika Somo la 16, unaweza kupima haraka TravelToolAgent wa somo hili (bado je, inaita zana zake na kujibu?) kwa kutumia tests/lesson-04-smoke-tests.json. Tazama tests/README.md jinsi ya kuendesha.

Somo Lililopita

Kuelewa Mifumo ya Ubunifu wa Maajenti

Somo Linalofuata

Agentic RAG


Kionyozo: Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI Co-op Translator. Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii.