(Bonyeza picha hapo juu kutazama video ya somo hili)
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.
Katika somo hili, tunatafuta kujibu maswali yafuatayo:
Baada ya kumaliza somo hili, utaweza:
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.
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:
Vijimenge hivi vinamruhusu wakala wa AI kufanya kazi nyingi tofauti. Tuchunguze vipengele muhimu vinavyohitajika kutekeleza Mfano wa Ubunifu wa Matumizi ya Zana:
Mchoro wa Kazi/Zana: Ufafanuzi wa kina wa zana zinazopatikana, ikijumuisha jina la kazi, kusudi, vigezo vinavyohitajika, na matokeo yanayotarajiwa. Michoro hii inawawezesha LLM kuelewa ni zana gani zipo na jinsi ya kuunda maombi sahihi.
Mantiki ya Utekelezaji wa Kazi: Inaongoza jinsi na wakati zana zinapoitwa kulingana na nia ya mtumiaji na muktadha wa mazungumzo. Hii inaweza kujumuisha moduli za kupanga, mbinu za kupitisha, au mtiririko wa masharti unaoamua matumizi ya zana kwa wakati halisi.
Mfumo wa Kushughulikia Ujumbe: Sehemu zinazosimamia mtiririko wa mazungumzo kati ya maingizo ya mtumiaji, majibu ya LLM, miito ya zana, na matokeo ya zana.
Mfumo wa Kuunganisha Zana: Miundombinu inayounganisha wakala na zana mbalimbali, iwe ni kazi rahisi au huduma za nje tata.
Udhibiti wa Makosa na Uhakiki: Mbinu za kushughulikia kushindwa katika utekelezaji wa zana, kuthibitisha vigezo, na kusimamia majibu yasiyotegemewa.
Usimamizi wa Hali: Inafuatilia muktadha wa mazungumzo, mwingiliano wa awali wa zana, na data inayodumu ili kuhakikisha uthabiti katika mwingiliano wa mizunguko mingi.
Ifuatayo, tutaangalia kwa undani zaidi 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:
Tuchukue mfano wa kupata saa ya sasa katika mji fulani kuonyesha:
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"]
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')]
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.
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 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:

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 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:
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:

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
)
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.
Jiunge na Microsoft Foundry Discord kukutana na wapenzi wengine, kuhudhuria saa za ofisi na kupata majibu ya maswali yako kuhusu Mawakala wa AI.
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.
Kuelewa Mifumo ya Ubunifu wa Maajenti
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.