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
.envfaylda xavfsiz saqlashni o'rganamiz;openaiSDK'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:
- Toza Python muhiti β kutubxonalar bir-biriga xalaqit bermasligi uchun.
- API kalit β provayderga "men kimman" deyish uchun maxfiy parol.
- 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:
.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:
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):
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:
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.
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 bittauserxabar yubordik. Rollar (system/user/assistant) haqida 3-bobda batafsil.javob.choices[0].message.contentβ modelning matnli javobi.choicesro'yxat bo'lgani uchun[0]β birinchi (odatda yagona) javob.
javob obyektida boshqa foydali ma'lumot ham bor β masalan, sarflangan tokenlar:
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
.envfaylda saqlang va.gitignorega qo'shing β hech qachon kodga yozmang. Bu eng muhim xavfsizlik odati. pip install openai python-dotenvβopenaikutubxonasi nafaqat OpenAI, balki barcha OpenAI-mos provayderlar (Groq, DeepSeek, Ollama...) bilan ishlaydi.- Birinchi so'rov:
client.chat.completions.create(model=..., messages=[...]); javob matnijavob.choices[0].message.contentda, token sarfijavob.usageda. - Boshqa provayderga o'tish =
base_url+ kalit + model nomini almashtirish; qolgan kod o'zgarmaydi.
Amaliy mashqlar¶
-
(Oson) Virtual muhit yarating, faollashtiring va
pip install openai python-dotenvni bajaring.pip listbilan o'rnatilganini tekshiring. -
(Oson)
.envfaylida kalitingizni saqlang,.gitignorega.envqo'shing. Yuqoridagibirinchi.pyni ishga tushiring va modelning javobini oling. -
(O'rtacha) Skriptni o'zgartiring: foydalanuvchidan
input()bilan savol so'rang va uni modelga yuboring. So'ngjavob.usageni ham chop eting. -
(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. -
(Qiyin) Skriptga
try/exceptqo'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 β‘οΈ