Tarkibga o'tish

02 β€” Muhitni sozlash va birinchi so'rov

⬅️ Oldingi: 01 β€” AI/LLM integratsiyasi nima Β· 🏠 Kitob boshi Β· Keyingi: 03 β€” Chat formati ➑️

Bu bobda: Python muhitini (virtual muhit) tayyorlaymiz; API kalitini qayerdan va qanday olishni (jumladan bepul variantlarni) ko'ramiz; kalitni .env faylda xavfsiz saqlashni o'rganamiz; openai SDK'ni o'rnatamiz va nihoyat birinchi haqiqiy LLM so'rovini yuborib, javobni ekranda ko'ramiz. Bobning oxirida sizda ishlaydigan birinchi AI skripti bo'ladi.


Muammodan boshlaymiz: nimadan boshlash kerak?

1-bobda "integratsiya = API chaqirish" ekanini bildik. Endi amalga o'tamiz. Buning uchun uchta narsa kerak:

  1. Toza Python muhiti β€” kutubxonalar bir-biriga xalaqit bermasligi uchun.
  2. API kalit β€” provayderga "men kimman" deyish uchun maxfiy parol.
  3. SDK β€” provayderga so'rov yuboradigan Python kutubxonasi.

Keling, har birini tartib bilan sozlaymiz.

Talab

Sizda Python 3.11+ o'rnatilgan bo'lishi kerak. Terminalda python --version (yoki python3 --version) yozib tekshiring. Agar yo'q bo'lsa β€” python.org dan o'rnating. Python asoslarini bilmasangiz, avval Python kitobini o'qing.


1-qadam: virtual muhit (venv)

Virtual muhit β€” bu loyihangiz uchun alohida, izolyatsiya qilingan Python "qutisi". Unda o'rnatilgan kutubxonalar boshqa loyihalarga ta'sir qilmaydi. Bu β€” professional Python ishining standart amaliyoti.

Loyiha papkasini yarating va virtual muhit oching:

mkdir ai-boshlash
cd ai-boshlash

# Virtual muhit yaratish
python -m venv .venv

# Faollashtirish (Windows PowerShell):
.venv\Scripts\Activate.ps1
# Faollashtirish (macOS / Linux):
source .venv/bin/activate

Faollashtirilgach, terminal satri boshida (.venv) ko'rinadi β€” demak, siz endi izolyatsiya qilingan muhitdasiz.

Hayotiy o'xshatish. Virtual muhit β€” har bir loyiha uchun alohida asboblar yashigi. Bir loyihada bolg'a eski versiyada, boshqasida yangi versiyada bo'lishi mumkin β€” ular aralashib ketmaydi, chunki har biri o'z yashigida.


2-qadam: API kalit olish (bepul variantlar bilan)

API kalit β€” provayder serveriga "men ro'yxatdan o'tgan foydalanuvchiman" deb tasdiqlovchi maxfiy satr (masalan, sk-... bilan boshlanadi). Uni hech kimga ko'rsatmang β€” kim bilsa, sizning hisobingizdan foydalana oladi.

Qaysi provayderdan boshlash β€” sizga bog'liq. Mana amaliy tanlovlar:

Provayder Kalit qayerdan Izoh
Groq console.groq.com Bepul tier, juda tez. Boshlash uchun ajoyib.
Google Gemini aistudio.google.com Saxiy bepul tier, O'zbekistondan kirish oson.
OpenAI platform.openai.com Eng mashhur; to'lovli (kichik balans qo'shish kerak).
Anthropic (Claude) console.anthropic.com To'lovli; tool/agentlarda kuchli.
Ollama (lokal) kalit kerak emas! Butunlay bepul, o'z kompyuteringizda (21-bob).

Maslahat

Pul muammo bo'lsa β€” Groq yoki Gemini bepul kaliti bilan boshlang. Bu bobdagi kod har qaysisiga ozgina o'zgartirish bilan ishlaydi; to'liq ko'p-provayderli yondashuvni 4-bobda ko'ramiz. Quyida asosiy misolni OpenAI-mos formatda yozamiz β€” u OpenAI, Groq, DeepSeek va Ollama'da bir xil ishlaydi.


3-qadam: kalitni xavfsiz saqlash β€” .env

Kalitni hech qachon kodga to'g'ridan-to'g'ri yozmang. Agar kodingizni GitHub'ga yuklasangiz, kalit commit ichida ochiq qoladi β€” buni botlar bir necha daqiqada o'g'irlaydi va hisobingizdan pul sarflaydi.

To'g'ri yo'l β€” kalitni .env faylda saqlash va uni .gitignorega qo'shish:

Kalitni saqlashning xato va to'g'ri yo'li: chap tomonda kalit kodga yozilgan (xato, GitHub'ga chiqib ketadi), o'ng tomonda kalit .env faylda saqlanib, kod uni os.environ orqali o'qiydi (to'g'ri)

.env nomli fayl yarating (kodingiz yonida):

# .env fayli β€” bu faylni HECH QACHON GitHub'ga yuklamang
OPENAI_API_KEY=sk-bu-yerga-haqiqiy-kalitingiz

Va .gitignore faylini yarating:

# .gitignore
.venv/
.env
__pycache__/

Eng keng tarqalgan jiddiy xato

Kalitni kodga yozib, GitHub'ga yuklash β€” boshlovchilarning eng qimmat xatosi. Doim .env + .gitignore ishlatish odatini birinchi kundan o'rnating. Kalitni xavfsiz saqlash haqida chuqurroq 24-bobda gaplashamiz.


4-qadam: kutubxonalarni o'rnatish

Endi kerakli kutubxonalarni o'rnatamiz: openai (SDK) va python-dotenv (.env faylini o'qish uchun):

pip install openai python-dotenv

Nega openai kutubxonasi β€” boshqa provayder uchun ham?

openai kutubxonasi shunchaki OpenAI uchun emas. U OpenAI-mos API standartini gapiradigan har qanday provayder bilan ishlaydi β€” Groq, DeepSeek, OpenRouter, lokal Ollama va boshqalar. Faqat base_url va kalitni almashtirasiz. Shuning uchun u β€” ko'p-provayderli yondashuvning "universal tili". Buni 4-bobda to'liq ko'ramiz.


5-qadam: birinchi so'rov!

Endi eng qiziq qism. birinchi.py faylini yarating:

import os
from dotenv import load_dotenv
from openai import OpenAI

# .env faylidagi kalitni muhitga yuklaydi
load_dotenv()

# Mijoz (client) yaratamiz. Kalitni avtomatik OPENAI_API_KEY dan oladi.
client = OpenAI()

# Model nomi. Eslatma: nomlar o'zgaradi β€” provayder ro'yxatini tekshiring.
MODEL = "gpt-5.4-mini"

# So'rov yuboramiz
javob = client.chat.completions.create(
    model=MODEL,
    messages=[
        {"role": "user", "content": "Salom! O'zbek tilida bir jumlada o'zingni tanishtir."}
    ],
)

# Javobni o'qiymiz va chop etamiz
print(javob.choices[0].message.content)

Ishga tushiring:

python birinchi.py

Agar hamma narsa to'g'ri bo'lsa, ekranda modelning o'zbekcha tanishuvi paydo bo'ladi β€” tabriklaymiz, siz birinchi LLM so'rovingizni yubordingiz! πŸŽ‰

Hayotiy o'xshatish. Bu kod β€” restoranda buyurtma berishga o'xshaydi: client β€” ofitsiant, messages β€” buyurtmangiz, create(...) β€” buyurtmani oshxonaga yuborish, javob.choices[0].message.content β€” oldingizga kelgan taom. Siz oshxonaga kirmaysiz (modelni qurmaysiz), lekin tayyor taomni olasiz.


So'rov va javob anatomiyasi

Yuqoridagi kodda nima sodir bo'ldi? Keling, qismlarga ajratamiz.

chat.completions.create chaqiruvi: model va messages yuboriladi, javob obyekti qaytadi; matn javob.choices[0].message.content ichida bo'ladi, javob.usage esa token sarfini ko'rsatadi

  • client β€” provayderga ulanish. Kalitni u o'zi .envdan oladi.
  • model β€” qaysi modelni ishlatish (gpt-5.4-mini, claude-haiku-4-5, gemini-2.5-flash...).
  • messages β€” suhbat. Hozir bitta user xabar yubordik. Rollar (system/user/assistant) haqida 3-bobda batafsil.
  • javob.choices[0].message.content β€” modelning matnli javobi. choices ro'yxat bo'lgani uchun [0] β€” birinchi (odatda yagona) javob.

javob obyektida boshqa foydali ma'lumot ham bor β€” masalan, sarflangan tokenlar:

print(javob.usage)
# CompletionUsage(prompt_tokens=24, completion_tokens=18, total_tokens=42)

prompt_tokens β€” siz yuborgan, completion_tokens β€” model qaytargan tokenlar. 22-bobda bulardan xarajatni hisoblashni o'rganamiz.


Boshqa provayderga ulanish (oldindan ko'rinish)

Aytganimizdek, bir xil kod boshqa provayderda ham ishlaydi β€” faqat base_url, kalit va modelni almashtiramiz. Masalan, Groq (bepul, tez) uchun:

client = OpenAI(
    base_url="https://api.groq.com/openai/v1",
    api_key=os.environ["GROQ_API_KEY"],
)
MODEL = "llama-3.3-70b-versatile"   # Groq'dagi model nomi

Qolgan kod (client.chat.completions.create(...)) o'zgarmaydi. Mana shu β€” ko'p-provayderli yondashuvning kuchi. To'liq ro'yxat va batafsil tushuntirish 4-bobda.


Xato bilan tanishuv (qo'rqmang!)

Agar kalit noto'g'ri yoki yo'q bo'lsa, AuthenticationError chiqadi. Bu β€” normal; xatolarni chiroyli boshqarishni o'rganamiz. Hozircha eng oddiy himoya:

import openai

try:
    javob = client.chat.completions.create(
        model=MODEL,
        messages=[{"role": "user", "content": "Salom"}],
    )
    print(javob.choices[0].message.content)
except openai.AuthenticationError:
    print("Kalit noto'g'ri yoki topilmadi. .env faylini tekshiring.")
except openai.APIError as e:
    print(f"API xatosi: {e}")

Xatolar β€” dushman emas

Xato xabari β€” sizga nima noto'g'ri ekanini aytadigan do'st. Uni o'qing: AuthenticationError β€” kalit muammosi, NotFoundError β€” model nomi xato, RateLimitError β€” juda ko'p so'rov. Har birini 23-bobda chuqur ko'ramiz.


Xulosa

  • LLM integratsiyasini boshlash uchun uch narsa kerak: virtual muhit, API kalit, SDK.
  • Virtual muhit (python -m venv .venv) loyihalarni izolyatsiya qiladi β€” har biri o'z "asboblar yashigi"da.
  • API kalit β€” maxfiy parol. Bepul boshlash uchun Groq yoki Gemini ajoyib; lokal Ollama umuman kalit talab qilmaydi.
  • Kalitni .env faylda saqlang va .gitignorega qo'shing β€” hech qachon kodga yozmang. Bu eng muhim xavfsizlik odati.
  • pip install openai python-dotenv β€” openai kutubxonasi nafaqat OpenAI, balki barcha OpenAI-mos provayderlar (Groq, DeepSeek, Ollama...) bilan ishlaydi.
  • Birinchi so'rov: client.chat.completions.create(model=..., messages=[...]); javob matni javob.choices[0].message.contentda, token sarfi javob.usageda.
  • Boshqa provayderga o'tish = base_url + kalit + model nomini almashtirish; qolgan kod o'zgarmaydi.

Amaliy mashqlar

  1. (Oson) Virtual muhit yarating, faollashtiring va pip install openai python-dotenv ni bajaring. pip list bilan o'rnatilganini tekshiring.

  2. (Oson) .env faylida kalitingizni saqlang, .gitignorega .env qo'shing. Yuqoridagi birinchi.pyni ishga tushiring va modelning javobini oling.

  3. (O'rtacha) Skriptni o'zgartiring: foydalanuvchidan input() bilan savol so'rang va uni modelga yuboring. So'ng javob.usageni ham chop eting.

  4. (O'rtacha) Bepul provayder (Groq yoki Gemini-mos endpoint) kaliti oling va base_url + kalit + modelni almashtirib, o'sha kodni ikkinchi provayderda ishlatib ko'ring.

  5. (Qiyin) Skriptga try/except qo'shing. Atayin kalitni noto'g'ri yozib, qaysi xato chiqishini ko'ring; keyin model nomini xato yozib, boshqa xatoni kuzating. Har bir xato xabari nimani anglatishini yozib oling.


⬅️ Oldingi: 01 β€” AI/LLM integratsiyasi nima Β· 🏠 Kitob boshi Β· Keyingi: 03 β€” Chat formati ➑️