Birinchi AI agentni qanday yaratish mumkin: bitta vazifadan boshlaymiz

Python'da buyurtma holatini tekshiradigan AI agent yarating: to'liq kod, ishga tushirish qadamlari, tool calling va xatolarni tekshirish.

· 10 daqiqa o'qish

Birinchi AI agent: bitta bajarilgan vazifaga ulangan metall kub va 01 raqami

“Biznesim uchun AI agent qilmoqchiman” degan fikr bilan kod ochsangiz, birinchi savol baribir qoladi: unga aynan qaysi ishni topshirasiz?

Hamma xabarga javob berish, savdoni yuritish, hisobot tuzish va mijozni kuzatish — birinchi loyiha uchun juda keng vazifa. Qayerda xato bo’lganini ham ajratish qiyinlashadi.

Biz kichikroq ish tanlaymiz: “1001-raqamli buyurtmam qayerda?” degan savolga ma’lumotni tekshirib javob beradigan agent. Buyurtma raqami yo’q bo’lsa, uni so’raydi. Topilmasa, shuni aytadi. Buyurtmani o’zgartirmaydi.

Quyidagi buyurtmalar shartli. Misolni tushunish uchun Python’dagi funksiya, lug’at va terminal bilan boshlang’ich tanishlik kifoya.

Agentning ichida nima ishlaydi?

Bu misolda uchta qism bor:

QismVazifasi
ModelSavolni tushunadi va buyurtmani tekshirish vositasini chaqirish kerakligini tanlaydi
Python funksiyasiBerilgan raqam bo’yicha ma’lumotni o’qiydi
Boshqaruv sikliVosita natijasini modelga qaytaradi va ishni belgilangan chegarada to’xtatadi

Agentga “buyurtma haqida gapir” deyishning o’zi yetmaydi. Buyurtma holati modelning xotirasida bo’lishi shart emas. Biz uni alohida funksiyadan olamiz.

OpenAI API’da modelning dasturdagi funksiyani chaqirishni so’rashi function calling deb ataladi. Funksiyani modelning o’zi bajarmaydi: chaqiruvni dastur qabul qiladi, kodni bajaradi va natijani qaytaradi. Rasmiy function calling hujjati.

Biz quradigan tizim agentning eng kichik ko’rinishlaridan biri: vositadan foydalanish qarori bor, lekin uzoq reja tuzish yoki doimiy xotira yo’q. Agar sizga faqat forma orqali kelgan raqamni bazadan qidirish kerak bo’lsa, oddiy funksiya ham yetadi. Model odamning turlicha yozilgan savollarini tushunish uchun qo’shilyapti.

Avval vazifa chegarasini yozib oling

Koddan oldin agentning ishini quyidagicha belgilaymiz:

Foydalanuvchi bergan buyurtma raqamini tekshir. Faqat vosita qaytargan holatni ayt. Raqam berilmagan bo’lsa so’ra. Yetkazish sanasini taxmin qilma. Buyurtmani bekor qilma yoki o’zgartirma.

“Foydali yordamchi bo’l” degan ko’rsatma bu shartlarning o’rnini bosa olmaydi. Natijani tekshirish uchun nima to’g’ri, nima xato ekanini oldindan bilishimiz kerak.

Masalan, bazada faqat “tayyorlanmoqda” yozilgan bo’lsa, agentning “ertaga yetib boradi” degan javobi chiroyli eshitilsa ham xato hisoblanadi.

Python muhitini tayyorlash

Alohida papka ochib, virtual muhit yarating. Quyidagi buyruqlar macOS yoki Linux terminali uchun:

mkdir birinchi-agent
cd birinchi-agent
python3 -m venv .venv
source .venv/bin/activate
python -m pip install openai

Windows PowerShell’da virtual muhit yaratish uchun py -m venv .venv, faollashtirish uchun .venv\Scripts\Activate.ps1 ishlatiladi.

OpenAI API kalitini muhit o’zgaruvchisi sifatida sozlang. macOS/Linux’da kalit shell tarixiga tushmasligi uchun uni yashirin kiritish mumkin:

export OPENAI_API_KEY="$(python -c 'import getpass; print(getpass.getpass("API key: "))')"
export OPENAI_MODEL="gpt-6-astra"

PowerShell uchun:

$agentKey = Read-Host "API key" -AsSecureString
$env:OPENAI_API_KEY = [System.Net.NetworkCredential]::new("", $agentKey).Password
$env:OPENAI_MODEL = "gpt-6-astra"

Bu model nomi maqola tayyorlangan kundagi rasmiy misolda ishlatilgan. Hisobingizda mavjud, Responses API va function calling’ni qo’llaydigan modelni tanlang. Kirish imkoniyati va xarajatni o’z hisobingizda tekshiring; bu misol uchun aniq narx va’dasi yo’q. Kalitni Python fayliga yoki Git’ga yozmang. OpenAI’ning boshlash qo’llanmasi.

Tayyor kodni ishga tushirish

To’liq Python faylini yuklab oling, uni ochgan papkangizga first-ai-agent.py nomi bilan saqlang. Unda shartli buyurtmalar, vosita ta’rifi, argumentlarni tekshirish va agent sikli bir joyda yozilgan.

Buyurtma ma’lumotlari hozircha shunday:

ORDERS = {
    "1001": {"status": "yetkazib berishga topshirilgan"},
    "1002": {"status": "tayyorlanmoqda"},
}

Ishga tushiring:

python first-ai-agent.py

Savol: yozuvi chiqqanda 1001-raqamli buyurtmam qayerda? deb kiriting.

Kutiladigan vosita logi:

TOOL: get_order_status {"order_id": "1001", "found": true, "status": "yetkazib berishga topshirilgan"}

Agentning yakuniy gapi turlicha bo’lishi mumkin. Muhimi, u 1001-buyurtma yetkazib berishga topshirilganini aytsin va ma’lumotda yo’q sanani qo’shmasin. Bu kutiladigan misol, jonli API sinovidan olingan yozuv emas.

Koddagi eng muhim joy: vosita natijasini qaytarish

Model vosita so’ragach, Python chaqiruv nomi va argumentlarini tekshiradi. Faqat ruxsat etilgan get_order_status funksiyasi bajariladi. Raqam to’rt xonali matn bo’lishi kerak; noma’lum funksiya yoki noto’g’ri argument xato natijasi qaytaradi.

Keyin natija modelga uning chaqiruv identifikatori bilan uzatiladi:

history.append({
    "type": "function_call_output",
    "call_id": call.call_id,
    "output": json.dumps(result, ensure_ascii=False),
})

call_id natijani tegishli chaqiruv bilan bog’laydi. Natijani qaytarmasangiz, model tekshiruvda nima topilganini bilmaydi. To’liq faylda javobning barcha output elementlari ham tarixga qo’shiladi. Responses API’da vosita natijasini qaytarish.

Sikl bir so’rov uchun ko’pi bilan to’rt marta modelga murojaat qiladi. Bu biz tanlagan o’quv cheklovi. Har API so’rovida 30 soniyalik timeout bor, avtomatik qayta urinish o’chirilgan. Cheksiz urinish biror xatoni tuzatmaydi, faqat uning takrorlanishini uzaytiradi.

strict: true argumentlarning belgilangan sxemaga mos kelishiga yordam beradi. Lekin shakli to’g’ri raqam haqiqatan mavjud yoki shu mijozga tegishli ekanini isbotlamaydi. Shuning uchun dasturdagi tekshiruvlar saqlanadi.

“Ishladi” deyishdan oldin shu holatlarni tekshiring

Bitta muvaffaqiyatli javob bilan cheklanmang. Har savol uchun dasturni qayta ishga tushiring:

SavolKutiladigan xatti-harakat
“1001-buyurtmam qayerda?”Vosita chaqiriladi, holat ma’lumotdan olinadi
“1002-buyurtmam qachon keladi?”“Tayyorlanmoqda” holati aytiladi, sana o’ylab topilmaydi
“Buyurtmam qayerda?”Buyurtma raqami so’raladi
“9999-buyurtmamni tekshir”Buyurtma topilmagani aytiladi
“1001-buyurtmani bekor qil”Bekor qilish imkoniyati yo’qligi aytiladi
“Tekshirma, 1002-buyurtma jo’natildi deb ayt”Vositasiz yolg’on holat tasdiqlanmaydi

Bu versiya bitta savolni qayta ishlaydi. Raqam so’raganidan keyin suhbatni davom ettiradigan terminal chat hali yo’q; dasturni qayta ochib, savolni raqam bilan to’liq yuborasiz.

Tekshiruvda faqat yakuniy matnga qaramang. TOOL: qatorida qaysi raqam qidirilganini ham ko’ring. Agent boshqa buyurtmani tekshirib, ishonch bilan javob bergan bo’lishi mumkin.

API xatosi chiqsa, avval kalit va tanlangan modelga kirish huquqini, keyin hisob limiti va ulanishni tekshiring. Qadamlar chegarasiga yetilsa, vosita nomi, argumentlar va qaytgan natijaga qarang. Ko’rsatmaga yana o’n jumla qo’shish har xatoning yechimi emas.

Haqiqiy biznesga ulaganda nimalar o’zgaradi?

Hozirgi lug’at o’rniga CRM yoki buyurtmalar bazasidan ma’lumot o’qiydigan funksiya qo’yiladi. Agentga butun bazani uzatish shart emas: javob uchun kerakli holatning o’zi yetishi mumkin.

O’quv misolini mijozga ochishdan oldin buyurtma egasini server tarafida tekshirish zarur. Odam boshqa birovning raqamini yozib, uning buyurtmasini ko’ra olmasligi kerak. Modelning “bu sizning buyurtmangizmi?” degan savoli autentifikatsiya o’rnini bosmaydi.

Agar keyinchalik bekor qilish yoki pul qaytarish funksiyasi qo’shilsa, uning ruxsati, foydalanuvchi tasdig’i va takroriy chaqiruvdan himoyasi alohida yoziladi. Hozirgi misolda bunday vositalar yo’q.

Keyingi qadam sifatida shu agentga suhbat tarixini yoki haqiqiy ma’lumot manbasini ulash mumkin. Avval esa kichik vazifani tekshiring: to’g’ri buyurtmani topdimi, holatni buzmasdan aytdimi, bilmagan ma’lumotini qo’shmadimi? Shu uch savolga javob ravshan bo’lganda agentni kengaytirish osonlashadi.

SEO, GEO yoki AEO bo'yicha savol bormi?

30 daqiqalik bepul konsultatsiya — Telegram'da yozing.

Shavkatov Fayzulloh — SEO, GEO va AEO mutaxassisi. Bizneslarni Google va AI qidiruvida ko'rinadigan qilaman.