(Bonyeza picha iliyo juu kutazama video ya somo hili)
Vifaa ni vya kuvutia kwa sababu huwapa wakala wa AI uwezo mpana zaidi wa kufanya mambo. Badala ya wakala kuwa na seti ndogo ya vitendo anavyoweza kutekeleza, kwa kuongeza kifaa, wakala sasa anaweza kufanya vitendo mbalimbali. Katika sura hii, tutaangalia Mfumo wa Ubunifu wa Matumizi ya Zana, unaoelezea jinsi wakala wa AI wanavyoweza kutumia zana maalum kufikia malengo yao.
Katika somo hili, tunatafuta kujibu maswali yafuatayo:
Baada ya kumaliza somo hili, utakuwa na uwezo wa:
Mfumo wa Ubunifu wa Matumizi ya Zana unalenga kuwapa LLMs uwezo wa kuingiliana na zana za nje ili kufikia malengo maalum. Zana ni nambari inayoweza kutekelezwa na wakala kufanya vitendo. Kifaa kinaweza kuwa kazi rahisi kama kielezi hesabu, au wito wa API kwa huduma ya mtu wa tatu kama kupatia bei ya hisa au utabiri wa hali ya hewa. Katika muktadha wa wakala wa AI, zana zimebuniwa kutekelezwa na wakala kama jibu la miito ya kazi inayotungwa na mfano.
Wakala wa AI wanaweza kutumia zana kukamilisha kazi ngumu, kupata taarifa, au kufanya maamuzi. Mfumo wa ubunifu wa matumizi ya zana hutumika mara nyingi katika hali zinazohitaji mwingiliano wa moja kwa moja na mifumo ya nje, kama vile hifadhidata, huduma za mtandao, au tafsiri ya nambari. Uwezo huu ni muhimu kwa matukio mbalimbali ya matumizi ikiwa ni pamoja na:
Vinara hivi huwasaidia wakala wa AI kutekeleza kazi mbalimbali. Tuchunguze vipengele muhimu vinavyohitajika kutekeleza Mfumo wa Ubunifu wa Matumizi ya Zana:
Miundo ya Kazi/Zana: Maelezo ya kina ya zana zinazopatikana, ikiwa ni pamoja na jina la kazi, kusudi, vigezo vinavyohitajika, na matokeo yanayotarajiwa. Miundo hii huwasaidia LLM kuelewa ni zana gani zinapatikana na jinsi ya kuunda maombi sahihi.
Mantiki ya Utekelezaji wa Kazi: Inasimamia jinsi na lini zana zinapotumiwa kulingana na nia ya mtumiaji na muktadha wa mazungumzo. Hii inaweza kujumuisha moduli za kupanga, mifumo ya kuelekeza, au mtiririko wa masharti unaobadili matumizi ya zana kwa kiwango cha moja kwa moja.
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.
Mfumo wa Uunganishaji wa Zana: Miundombinu inayounganisha wakala na zana mbalimbali, iwe ni kazi rahisi au huduma za nje tata.
Usimamizi wa Makosa na Uthibitishaji: Mbinu za kushughulikia makosa katika utekelezaji wa zana, kuthibitisha vigezo, na kusimamia majibu yasiyotegemewa.
Usimamizi wa Hali: Kufuatilia muktadha wa mazungumzo, mwingiliano wa zana uliopita, na data endelevu kuhakikisha uthabiti katika mazungumzo yanayojirudia.
Sasa, tuchunguze zaidi kuhusu Miito ya Kazi/Zana.
Miito ya kazi ni njia kuu tunayowezesha LLM kuingiliana na zana. Mara nyingi utaona ‘Kazi’ na ‘Zana’ zikitumika sawa kwa sababu ‘kazi’ (vibao vya nambari vinavyoweza kutumika tena) ni ‘zana’ wakala wanazotumia kutekeleza kazi. Ili nambari ya kazi itekelezwe, LLM inapaswa kulinganisha ombi la mtumiaji na maelezo ya kazi. Ili kufanya hivyo, sura ina maelezo ya kazi zote zinazopatikana hutumwa kwa LLM. Kisha LLM huchagua kazi inayofaa zaidi kwa kazi hiyo na kurudisha jina na hoja zake. Kazi iliyochaguliwa huamuliwa, jibu lake hurudishiwa kwa LLM, ambayo hutumia taarifa hiyo kujibu ombi la mtumiaji.
Kwa waendelezaji kutekeleza miito ya kazi kwa wakala, utahitaji:
Tuchukue mfano wa kupata saa kwa sasa katika jiji kuonesha:
anzisha LLM inayounga mkono miito ya kazi:
Sio mifano yote inayo support miito ya kazi, hivyo ni muhimu kuhakikisha LLM unayotumia inaiunga mkono. Azure OpenAI ina support miito ya kazi. Tunaweza kuanza kwa kuanzisha mteja wa Azure OpenAI.
# Anzisha mteja wa Azure OpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-05-01-preview"
)
Unda Sura ya Kazi:
Ifuatayo, tutaelezea sura ya JSON inayojumuisha jina la kazi, maelezo ya kile kazi hufanya, na majina na maelezo ya vigezo vya kazi. Kisha tutapitisha sura hii kwa mteja tuliyemuumba awali, pamoja na ombi la mtumiaji kupata saa katika San Francisco. Kile muhimu kukumbuka ni kwamba miito ya zana ndicho kinachorejeshwa, sio jibu la mwisho kwa swali. Kama ilivyotajwa awali, LLM hurudisha jina la kazi aliyyochagua kwa kazi hiyo, na hoja zitakazotumwa kwa kazi hiyo.
# 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 kwanza wa mtumiaji
messages = [{"role": "user", "content": "What's the current time in San Francisco"}]
# Mitoo wa kwanza wa API: Muulize modeli kutumia kazi hiyo
response = client.chat.completions.create(
model=deployment_name,
messages=messages,
tools=tools,
tool_choice="auto",
)
# Weka kazi 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')])
Nambari ya kazi inayohitajika kutekeleza kazi:
Sasa LLM imechagua kazi ambayo inahitaji kuendeshwa, nambari inayotekeleza kazi hiyo inahitaji kutekelezwa. Tunaweza kuandika nambari ya kupata saa ya sasa kwa lugha ya Python. Pia tunahitaji kuandika nambari ya kutoa jina na hoja kutoka kwenye 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 modeli
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 katika moyo wa mtindo mkubwa wa matumizi ya zana kwa wakala wengi, ingawa kutekeleza kutoka mwanzo kunaweza kuwa changamoto wakati mwingine. Kama tulivyojifunza katika Somo la 2 mifumo ya wakala hutupatia vinara vilivyoandaliwa tayari kutekeleza matumizi ya zana.
Hapa kuna mifano ya jinsi unavyoweza kutekeleza Mfumo wa Ubunifu wa Matumizi ya Zana kwa kutumia mifumo mbalimbali ya wakala:
Semantic Kernel ni mfumo wa AI wa wazi kwa watengenezaji wa .NET, Python, na Java wanaofanya kazi na LLMs. Unarahisisha mchakato wa kutumia miito ya kazi kwa kuelezea kazi zako na vigezo vyake kwa mfano kupitia mchakato unaojulikana kama serialization. Pia hushughulikia mawasiliano ya mizunguko kati ya mfano na nambari yako. Faida nyingine ya kutumia mfumo wa wakala kama Semantic Kernel ni kwamba unakuwezesha kufikia zana zilizojengwa tayari kama Utafutaji wa Faili na Mfasiri wa Nambari.
Mchoro unaofuata unaonyesha mchakato wa miito ya kazi kwa Semantic Kernel:

Katika Semantic Kernel kazi/zana huitwa Viongezi. Tunaweza kubadilisha kazi get_current_time tuliyoiona hapo awali kuwa kiongezi kwa kuiweka kuwa darasa lenye kazi hiyo ndani. Pia tunaweza kuleta dekoreta kernel_function inayochukua maelezo ya kazi. Unapounda kernel na GetCurrentTimePlugin, kernel itaenda moja kwa moja kuserialize kazi na vigezo vyake, ikitengeneza sura ya kutumwa 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
# Unda kernel
kernel = Kernel()
# Unda plugin
get_current_time_plugin = GetCurrentTimePlugin(location)
# Ongeza plugin kwenye kernel
kernel.add_plugin(get_current_time_plugin)
Huduma ya Wakala wa Azure AI ni mfumo wa wakala wa hivi karibuni ulioundwa kuwasaidia waendelezaji kujenga, kupeleka, na kupanua wakala wa AI wa hali ya juu, salama, na yanayoweza kupanuliwa bila kuhitaji kusimamia rasilimali za msingi kama kompyuta na hifadhi. Ni muhimu hasa kwa programu za shirika kwa kuwa ni huduma inayosimamiwa kabisa yenye usalama wa daraja la shirika.
Ukilinganisha na maendeleo ya moja kwa moja kwa API za LLM, Huduma ya Wakala wa Azure AI inatoa faida zifuatazo:
Zana zinazopatikana katika Huduma ya Wakala wa Azure AI zinaweza kugawanywa katika makundi mawili:
Huduma ya Wakala inatuwezesha kutumia zana hizi pamoja kama toolset. Pia hutumia threads ambazo zinafuatilia historia ya ujumbe kutoka kwa mazungumzo fulani.
Fikiria wewe ni wakala wa mauzo katika kampuni iitwayo Contoso. Unataka kuendeleza wakala wa mazungumzo ambao unaweza kujibu maswali kuhusu data zako za mauzo.
Picha ifuatayo inaonyesha jinsi unavyoweza kutumia Huduma ya Wakala wa Azure AI kuchambua data zako za mauzo:

Ili kutumia zana yoyote kati ya hizi na huduma, tunaweza kuunda mteja na kufafanua kifaa au seti ya zana. Kutekeleza hii vitendo tunaweza kutumia nambari ya Python ifuatayo. 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 Nambari aliyejengwa 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 # 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 Mtafsiri wa 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 inayotolewa kikamilifu na LLM ni usalama, hasa hatari ya sindano ya SQL au vitendo vya uovu, kama kubomoa au kuhujumu hifadhidata. Ingawa wasiwasi huu ni halali, unaweza kupunguzwa kwa ufanisi kwa kusanidi vibali vya ufikiaji wa hifadhidata ipasavyo. Kwa hifadhidata nyingi hii inajumuisha kusanidi hifadhidata kama ya kusoma tu. Kwa huduma za hifadhidata kama PostgreSQL au Azure SQL, programu inapaswa kuteuliwa kuwa na nafasi ya kusoma tu (SELECT). Kukimbia programu katika mazingira salama kunaboresha zaidi ulinzi. Katika hali za biashara, data kawaida huchukuliwa na kubadilishwa kutoka kwa mifumo ya uendeshaji kwenda kwenye hifadhidata isiyoweza kuandikwa au kwenye ghala la data lenye skimu rafiki kwa mtumiaji. Njia hii inahakikisha kuwa data iko salama, imeboreshwa kwa utendaji na upatikanaji, na kwamba programu ina upatikanaji mdogo wa kusoma pekee.
Join the Azure AI Foundry Discord to meet with other learners, attend office hours and get your AI Agents questions answered.
Understanding Agentic Design Patterns
Sehemu ya Kukataa: Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI Co-op Translator. Ingawa tunajitahidi kufanikisha usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake ya asili inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inashauriwa. Hatubebwi dhima kwa kutoelewana au tafsiri potofu zinazotokana na matumizi ya tafsiri hii.