(Bonyeza picha hapo juu kutazama video ya somo hili)
Zana ni za kuvutia kwa sababu huruhusu mawakala wa AI kuwa na uwezo mpana zaidi. Badala ya wakala kuwa na seti ndogo ya vitendo anavyoweza kufanya, kwa kuongeza zana, wakala sasa anaweza kufanya vitendo vingi. Katika sura hii, tutaangalia Mfano wa Ubunifu wa Matumizi ya Zana, unaoelezea jinsi mawakala wa AI wanavyoweza kutumia zana maalum kufikia malengo yao.
Katika somo hili, tunatafuta kujibu maswali yafuatayo:
Baada ya kumaliza somo hili, utaweza:
Mfano wa Ubunifu wa Matumizi ya Zana unalenga kutoa uwezo kwa LLMs kuingiliana na zana za nje kufanikisha malengo maalum. Zana ni msimbo unaoweza kutekelezwa na wakala kufanya vitendo. Zana inaweza kuwa kazi rahisi kama kalkuleta, au simu ya API kwa huduma ya mtu wa tatu kama kutafuta bei za hisa au taarifa za hali ya hewa. Katika muktadha wa mawakala wa AI, zana zimeundwa kutekelezwa na mawakala kama majibu kwa miito ya kazi inayozalishwa na mfano.
Mawakala wa AI wanaweza kutumia zana kukamilisha kazi ngumu, kupata taarifa, au kufanya maamuzi. Mfano wa matumizi ya zana mara nyingi hutumika katika hali zinazohitaji mwingiliano wa moja kwa moja na mifumo ya nje, kama hifadhidata, huduma za wavuti, au tafsiri za msimbo. Uwezo huu ni muhimu kwa matumizi tofauti ikiwemo:
Miundo hii ya msingi huruhusu wakala wa AI kutekeleza majukumu mengi. Tazama vipengele muhimu vinavyohitajika kutekeleza Mfano wa Ubunifu wa Matumizi ya Zana:
Mifumo ya Kazi/Zana: Maelezo ya kina ya zana zinazopatikana, ikijumuisha jina la kazi, kusudi, vigezo vinavyohitajika, na matokeo yanayotarajiwa. Mifumo hii huruhusu LLM kuelewa zana zipi zinapatikana na jinsi ya kuunda maombi sahihi.
Mantiki ya Utekelezaji wa Kazi: Inasimamia vipi na lini zana zinaitwa kulingana na nia ya mtumiaji na muktadha wa mazungumzo. Hii inaweza kujumuisha moduli za mipango, mbinu za kuelekeza, au mtiririko wa masharti unaoamua matumizi ya zana kwa kasi.
Mfumo wa Usimamizi wa Meseji: Vipengele vinavyosimamia mtiririko wa mazungumzo kati ya ingizo za 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 zenye ugumu.
Usimamizi wa Makosa na Uhakiki: Mifumo ya kushughulikia kushindwa kwa utekelezaji wa zana, kuthibitisha vigezo, na kusimamia majibu yasiyotarajiwa.
Usimamizi wa Hali: Kufuata muktadha wa mazungumzo, mwingiliano wa awali na zana, na data ya kudumu kuhakikisha uthabiti katika mazungumzo yenye mzunguko mwingi.
Sasa, tutaangalia kwa undani zaidi Kuitwa kwa Kazi/Zana.
Kuitwa kwa kazi ni njia kuu tunayowezesha Mifano Mikubwa ya Lugha (LLMs) kuingiliana na zana. Mara nyingi utaona ‘Kazi’ na ‘Zana’ zikitumika kwa kubadilishana kwa sababu ‘kazi’ (vipande vya msimbo vinavyoweza kutumika tena) ni ‘zana’ mawakala hutumia kutekeleza majukumu. Ili msimbo wa kazi uitwe, LLM lazima ilinganishe ombi la mtumiaji dhidi ya maelezo ya kazi. Kufanya hivyo, muundo unaoelezea kazi zote zilizopo hutumwa kwa LLM. LLM kisha huchagua kazi inayofaa zaidi kwa jukumu na kurudisha jina na hoja zake. Kazi iliyochaguliwa huitwa, jibu lake hutumwa tena kwa LLM, ambayo hutumia habari hiyo kujibu ombi la mtumiaji.
Kwa watengenezaji kutekeleza kuitwa kwa kazi kwa mawakala, utahitaji:
Tuchukulie mfano wa kupata wakati wa sasa katika jiji kufafanua:
anzisha LLM inayounga mkono kuitwa kwa kazi:
Sio modeli zote zinaounga mkono kuitwa kwa kazi, hivyo ni muhimu kuangalia kuwa LLM unayotumia ina uwezo huo. Azure OpenAI inaunga mkono kuitwa kwa 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"
)
Tengeneza Muundo wa Kazi:
Ifuatayo, tutaelezea muundo wa JSON unaoelezea jina la kazi, maelezo ya kazi inayofanywa, na majina na maelezo ya vigezo vya kazi. Kisha tutachukua muundo huu na kuutumia kwa mteja aliyezalishwa awali, pamoja na ombi la mtumiaji kupata wakati huko San Francisco. Kile kinachopaswa kuzingatiwa ni kwamba mwito wa zana ndiyo yanayorejeshwa, si jibu kamili la swali. Kama ilivyosemwa awali, LLM hurudisha jina la kazi iliyoichagua kwa jukumu na hoja zitakazotumiwa.
# 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"}]
# Kauri ya kwanza ya API: Muulize modeli kutumia kazi
response = client.chat.completions.create(
model=deployment_name,
messages=messages,
tools=tools,
tool_choice="auto",
)
# Chakata jibu la modeli
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 unahitajika kutekeleza jukumu:
Sasa LLM imeshachagua ni kazi gani inapaswa kutekelezwa, msimbo unaotekeleza jukumu lazima uandikwe na utekelezwe. Tunaweza kutekeleza msimbo wa kupata wakati wa 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 simu za 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.")
# Simu ya pili ya API: Pata jibu la 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.
Kuitwa kwa Kazi kunatilia mkazo maumbile ya matumizi ya zana kwa wakala wengi, ingawa kutekeleza kutoka mwanzo kunaweza kuwa changamoto mara nyingine. Kama tulivyojifunza katika Somo la 2 mifumo ya agentic hutupatia miundo ya tayari kutekeleza matumizi ya zana.
Hapa kuna mifano ya jinsi unavyoweza kutekeleza Mfano wa Ubunifu wa Matumizi ya Zana ukitumia mifumo tofauti ya agentic:
Microsoft Agent Framework ni mfumo wa AI wazi wa kuunda mawakala wa AI. Unarahisisha mchakato wa kuitwa kwa kazi kwa kuruhusu udeuzi wa zana kama kazi za Python zenye alama ya @tool. Mfumo husimamia mawasiliano ya kuelea kati ya mfano na msimbo wako. Pia hutoa upatikanaji wa zana zilizoandaliwa kabla kama Tafutaji la Faili na Tafsiri ya Msimbo kupitia AzureAIProjectAgentProvider.
Mchoro ufuatao unaonyesha mchakato wa kuitwa kwa kazi kwa Mfumo wa Microsoft Agent:

Katika Mfumo wa Microsoft Agent, zana huwekwa kama kazi zilizo na alama. Tunaweza kubadilisha kazi get_current_time tuliyoiona awali kuwa zana kwa kutumia alama ya @tool. Mfumo utaandaa kwa moja serialization ya kazi na vigezo vyake, ukitengeneza muundo wa 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 kuendesha kwa kutumia zana
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 Agent Service ni mfumo mpya wa agentic ulioundwa kusaidia watengenezaji kujenga, kutekeleza, na kupanua kwa usalama mawakala bora wa AI bila hitaji la kusimamia rasilimali za kompyuta na hifadhi. Ni muhimu hasa kwa matumizi ya biashara kwa kuwa ni huduma inayosimamiwa kikamilifu yenye usalama wa ngazi ya biashara.
Ukilinganisha na kuendeleza moja kwa moja na API ya LLM, Azure AI Agent Service inatoa faida kadhaa, ikiwemo:
Zana zinazopatikana katika Azure AI Agent Service zinaweza kugawanywa katika makundi mawili:
Huduma ya Agent inaruhusu kutumia zana hizi pamoja kama toolset. Pia inatumia threads zinazofuatilia historia ya ujumbe kutoka kwa mazungumzo fulani.
Fikiria wewe ni wakala wa mauzo katika kampuni inayoitwa Contoso. Unataka kuendeleza wakala wa mazungumzo unaoweza kujibu maswali kuhusu data zako za mauzo.
Picha ifuatayo inaonyesha jinsi unavyoweza kutumia Azure AI Agent Service kuchambua data zako za mauzo:

Ili kutumia zana zozote na huduma hii tunaweza kuunda mteja na kuainisha zana au seti ya zana. Kutekeleza hivi kwa vitendo tunaweza kutumia msimbo wa Python ufuatao. LLM itakuwa na uwezo wa kuona toolset na kuamua kama itatumia kazi ya mtumiaji fetch_sales_data_using_sqlite_query, au Tafsiri ya Msimbo iliyoandaliwa kabla 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 # kifunction cha fetch_sales_data_using_sqlite_query kinachopatikana 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 function 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 Kielimishaji cha Msimbo na kuiongeza kwenye seti ya zana.
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
)
Shaka ya kawaida kuhusu SQL inayozalishwa kwa nguvu na LLM ni usalama, hasa hatari ya sindano ya SQL au vitendo vibaya kama kufuta au kuharibu hifadhidata. Ingawa shaka hizi ni halali, zinaweza kuzuilika kwa ufanisi kwa kusanidi vibali vizuri vya ufikiaji wa hifadhidata. Kwa hifadhidata nyingi inahusisha kusanidi hifadhidata kuwa 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 kunaongeza kinga zaidi. Katika mazingira ya biashara, data kawaida hutolewa na kubadilishwa kutoka mifumo ya uendeshaji kwenda kwenye hifadhidata au ghala la data la kusoma tu lenye muundo wa kirafiki kwa mtumiaji. Njia hii huhakikisha data ni salama, imeboreshwa kwa utendaji na upatikanaji, na programu ina upatikanaji wa kusoma tu uliodhibitiwa.
Jiunge na Microsoft Foundry Discord kufikia wajumbe wengine, kuhudhuria masaa ya ofisi na kupata majibu ya maswali yako kuhusu Mawakala wa AI.
Kuelewa Mifano ya Ubunifu wa Agentic
Kidirisha cha Masuala (Disclaimer):
Nyaraka hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI Co-op Translator. Ingawa tunajitahidi kwa usahihi, tafadhali fahamu kwamba tafsiri za moja kwa moja zinaweza kuwa na makosa au upungufu wa usahihi. Nyaraka ya asili katika lugha yake ya asili inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu kutoka kwa binadamu inashauriwa. Hatubebei dhamana yoyote kwa kutoelewana au tafsiri potofu zinazotokana na matumizi ya tafsiri hii.