(Bofya picha hapo juu kutazama video ya somo hili)
Vifaa ni vya kusisimua kwa sababu huwapa mawakala wa AI uwezo mpana zaidi. Badala ya wakala kuwa na seti ndogo ya vitendo anavyoweza kufanya, kwa kuongeza kifaa, wakala sasa anaweza kufanya aina mbalimbali za vitendo. Katika sura hii, tutaangalia Mfano wa Muundo wa Matumizi ya Zana, unaoelezea jinsi mawakala wa AI wanavyoweza kutumia vifaa maalum kufanikisha malengo yao.
Katika somo hili, tunatafuta kujibu maswali yafuatayo:
Baada ya kumaliza somo hili, utaweza:
Mfano wa Muundo wa Matumizi ya Zana unazingatia kuwapa LLM uwezo wa kuingiliana na zana za nje kufanikisha malengo maalum. Vifaa ni msimbo unaoweza kutekelezwa na wakala kufanya vitendo. Kifaa kinaweza kuwa kazi rahisi kama kalkuleta, au wito wa API kwa huduma ya mtu wa tatu kama kutafuta bei ya hisa au utabiri wa hali ya hewa. Katika muktadha wa mawakala wa AI, vifaa huundwa kutekelezwa na mawakala kama jibu kwa miito ya kazi inayozalishwa na mfano.
Mawakala wa AI wanaweza kutumia vifaa kufanikisha kazi tata, kupata taarifa, au kufanya maamuzi. Mfano wa muundo wa matumizi ya zana hutumika mara nyingi katika hali zinazohitaji mwingiliano wa mabadiliko na mifumo ya nje, kama vile hifadhidata, huduma za wavuti, au tafsiri ya msimbo. Uwezo huu ni muhimu kwa matukio mbalimbali ikiwemo:
Vinara hivi huruhusu wakala wa AI kufanya aina mbalimbali za kazi. Tuchukulie vipengele muhimu vinavyohitajika kutekeleza Mfano wa Muundo wa Matumizi ya Zana:
Schema za Kazi/Zana: Maelezo ya kina ya zana zinazopatikana, ikijumuisha jina la kazi, kusudi, vigezo vinavyohitajika, na matokeo yanayotarajiwa. Mipango hii huruhusu LLM kuelewa zana zilizo tayari na jinsi ya kuunda maombi halali.
Mantiki ya Utekelezaji wa Kazi: Huamua jinsi na wakati vifaa vinavyotumika kulingana na nia ya mtumiaji na muktadha wa mazungumzo. Hii inaweza kujumuisha moduli za kupanga, mifumo ya kuelekeza, au mtiririko wa vigezo unaochagua matumizi ya zana kwa ufanisi.
Mfumo wa Usimamizi wa Ujumbe: Vipengele vinavyosimamia mtiririko wa mazungumzo kati ya maingizo ya mtumiaji, majibu ya LLM, miito ya zana, na matokeo ya zana.
Muktadha wa Uingizaji wa Zana: Miundombinu inayounganisha wakala na vifaa mbalimbali, iwe ni kazi rahisi au huduma za nje tata.
Usimamizi wa Makosa na Uthibitishaji: Vifaa vya kushughulikia makosa wakati wa utekelezaji wa zana, kuthibitisha vigezo, na kusimamia majibu yasiyotarajiwa.
Usimamizi wa Hali: Hufuatilia muktadha wa mazungumzo, mwingiliano ya awali ya zana, na data inayodumu kuhakikisha uthabiti katika mazungumzo yenye hatua nyingi.
Sasa, tutaangalia kwa undani jinsi ya Kupiga Kazi/Kifaa.
Kupiga kazi ni njia kuu tunayoipa Mifano Mikubwa ya Lugha (LLMs) kuingiliana na vifaa. Mara nyingi utaona ‘Kazi’ na ‘Kifaa’ zikibadilishwa kwa sababu ‘kazi’ (vidonge vya msimbo vinavyoweza kutumika tena) ni ‘vifaa’ vinavyotumika na mawakala kutekeleza kazi. Ili msimbo wa kazi uitwe, LLM lazima ifananishe ombi la mtumiaji dhidi ya maelezo ya kazi. Hii inafanywa kwa kutumia schema inayojumuisha maelezo ya kazi zote zinazopatikana kutumwa kwa LLM. LLM kisha huchagua kazi inayofaa zaidi kwa ajili ya jukumu na kurudisha jina na hoja zake. Kazi iliyochaguliwa huitwa, jibu lake hurudishwa kwa LLM, ambalo hutumia taarifa hiyo kujibu ombi la mtumiaji.
Kwa waendelezaji kutekeleza kupiga kazi kwa mawakala, zitahitajika:
Tuchukue mfano wa kupata saa ya sasa kwenye jiji ili kufafanua:
Anzisha LLM inayounga mkono kupiga kazi:
Sio mifano yote inayounga mkono kupiga kazi, kwa hivyo ni muhimu kuchunguza kwa hakika kama LLM unayotumia ina uwezo huo. Azure OpenAI inaunga mkono kupiga kazi. Tunaweza kuanza kwa kuanzisha mteja wa Azure OpenAI.
# Anzisha mteja wa 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"
)
Unda Schema ya Kazi:
Kisha tutaelezea schema ya JSON inayojumuisha jina la kazi, maelezo ya kinachofanywa na kazi, na majina pamoja na maelezo ya vigezo vya kazi. Schema hii itapitishwa kwa mteja aliyeanzishwa awali, pamoja na ombi la mtumiaji kupata saa huko San Francisco. Muhimu kutambua ni kuwa wito wa zana ndio hurudishwa, si jibu la mwisho la swali. Kama tulivyoeleza awali, LLM hurudisha jina la kazi aliyoichagua kwa jukumu pamoja na hoja zitakazotumika.
# Maelezo ya kazi kwa mfano kusoma
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"],
},
}
}
]
# Ujumbe wa mwanzo wa mtumiaji
messages = [{"role": "user", "content": "What's the current time in San Francisco"}]
# Mwito wa kwanza wa API: Muulize mfano kutumia kazi
response = client.chat.completions.create(
model=deployment_name,
messages=messages,
tools=tools,
tool_choice="auto",
)
# Fanya kazi jibu la mfano
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')])
Msimbo wa kazi unaohitajika kutekeleza jukumu:
Sasa LLM imechagua kazi inayohitajika kuendeshwa, msimbo unaotekeleza jukumu lazima utekelezwe. Tunaweza kutekeleza msimbo wa kupata saa ya sasa kwa Python. Pia tutahitaji kuandika msimbo wa kutoa jina na hoja kutoka kwa response_message 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
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.")
# Mwito wa pili wa API: Pata majibu ya mwisho kutoka kwa mfano
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.
Kupiga Kazi ni moyo wa matumizi mengi, kama si yote, ya muundo wa matumizi ya vifaa kwa mawakala, lakini kutekeleza kutoka mwanzo inaweza kuwa changamoto wakati mwingine. Kama tulivyojifunza katika Somo 2 mifumo ya mawakala hutoa vipengele vilivyotengenezwa awali kutekeleza matumizi ya zana.
Hapa kuna baadhi ya mifano ya jinsi unavyoweza kutekeleza Mfano wa Muundo wa Matumizi ya Zana kwa kutumia mifumo tofauti ya mawakala:
Mfumo wa Mwakala wa Microsoft ni mfumo wa AI wa msalaba wa wazi kwa ajili ya kujenga mawakala wa AI. Unarahisisha mchakato wa kupiga kazi kwa kuruhusu kufafanua vifaa kama kazi za Python zilizo na alama ya @tool. Mfumo huendesha mawasiliano kati ya mfano na msimbo wako. Pia hutoa zana zilizojengwa awali kama Utafutaji Faili na Mfasiri Msimbo kupitia AzureAIProjectAgentProvider.
Mchoro ufuatao unaonyesha mchakato wa kupiga kazi na Mfumo wa Mwakala wa Microsoft:

Katika Mfumo wa Mwakala wa Microsoft, vifaa huainishwa kama kazi zilizo na ala ya kupaka rangi. Tunaweza kubadilisha kazi ya get_current_time tuliyoiona awali kuwa kifaa kwa kutumia alama ya @tool. Mfumo utasafirisha kazi na vigezo vyake moja kwa moja, kuunda schema ya kutumwa kwa 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"""
...
# Unda mteja
provider = AzureAIProjectAgentProvider(credential=AzureCliCredential())
# Unda wakala na endesha na chombo hicho
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?")
Huduma ya Mwakala wa AI ya Azure ni mfumo mpya wa mawakala ulioundwa kuwasaidia waendelezaji kujenga, kuzindua, na kupanua mawakala wa AI bora kwa usalama bila kusimamia rasilimali za msingi za kompyuta na hifadhi. Ni muhimu hasa kwa programu za biashara kwa kuwa ni huduma iliyosimamiwa kikamilifu yenye usalama wa daraja la biashara.
Kulinganisha na kuendeleza kwa API ya LLM moja kwa moja, Huduma ya Mwakala wa AI ya Azure inatoa faida kadhaa, ikiwemo:
Vifaa vinavyopatikana katika Huduma ya Mwakala wa AI ya Azure vinaweza kugawanywa katika makundi mawili:
Huduma ya Mwakala inaturuhusu kutumia zana hizi pamoja kama toolset. Pia inatumia threads ambazo hufuatilia historia ya ujumbe kutoka kwa mazungumzo maalum.
Fikiria wewe ni wakala wa mauzo katika kampuni iitwayo Contoso. Unataka kuunda wakala wa mazungumzo aliye na uwezo wa kujibu maswali kuhusu data yako ya mauzo.
Picha ifuatayo inaonyesha jinsi unavyoweza kutumia Huduma ya Mwakala wa AI ya Azure kuchambua data yako ya mauzo:

Ili kutumia zana yoyote ya huduma hii tunaweza kuunda mteja na kufafanua kifaa au seti ya zana. Kutekeleza hii kwa vitendo tunaweza kutumia msimbo wa Python ufuatao. 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 Msimbo aliyejengwa awali 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 # kazi ya fetch_sales_data_using_sqlite_query ambayo inaweza 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 kazi na kazi ya 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 zana ya Kamusi wa Msimbo na kuiongeza kwenye seti ya zana.
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
)
Wasiwasi wa kawaida kuhusu SQL inayotengenezwa kwa mabadiliko na LLM ni usalama, hasa hatari ya sindano ya SQL au vitendo vyenye nia mbaya, kama kufuta au kuharibu hifadhidata. Ingawa wasiwasi huu ni wa kweli, unaweza kupunguzwa kwa ufanisi kwa kusanidi vibali vya upatikanaji wa hifadhidata ipasavyo. Kwa hifadhidata nyingi hii ni kuweka hifadhidata kama ya kusoma tu. Kwa huduma za hifadhidata kama PostgreSQL au Azure SQL, programu inapaswa kupewa nafasi ya kusoma tu (SELECT).
Kukimbia programu katika mazingira salama kunaboresha ulinzi zaidi. Katika hali za biashara, data kawaida hutolewa na kubadilishwa kutoka mifumo ya uendeshaji hadi hifadhidata au ghala la data la kusoma tu lenye schema rafiki kwa mtumiaji. Njia hii huhakikisha data iko salama, imeboreshwa kwa utendaji na upatikanaji, na programu ina upatikanaji uliodhibitiwa kwa kusoma tu.
Jiunge na Microsoft Foundry Discord kukutana na wanaojifunza wengine, kuhudhuria saa za ofisi na kupata majibu ya maswali yako kuhusu Mawakala wa AI.
Kuelewa Mifano ya Muundo ya Agentic
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.