aidoc.uz

1-qism · Boshlash·02-bob

Birinchi so'rov: Responses API bilan tanishuv

SDK'ni o'rnatishdan birinchi ishlaydigan chaqiruvgacha — Python va JavaScript'da, qadam-baqadam, mijoz sozlamalari va debug qilish bilan.

Nazariya yetarli — birinchi ishlaydigan kodni yozamiz. Bu bobda faqat bitta narsaga erishamiz: terminalda python app.py (yoki node app.js) buyrug'ini bersangiz, model javobi ekranga chiqadi. Yo'l-yo'lakay mijoz (client) obyektini qanday sozlashni, va birinchi xatolarni qanday o'qishni ham ko'ramiz.

1. Muhitni tayyorlash#

Python:

python -m venv .venv
source .venv/bin/activate      # Windows: .venv\Scripts\activate
pip install openai python-dotenv

JavaScript:

npm init -y
npm install openai dotenv

Loyiha papkasida .env fayl yarating va API kalitingizni shu yerga yozing (birinchi bobda aytilganidek, kalitni hech qachon kodga qattiq yozmang):

# .env
OPENAI_API_KEY=sk-proj-sizning-kalitingiz

2. Birinchi chaqiruv#

Python (app.py):

from dotenv import load_dotenv
from openai import OpenAI
 
load_dotenv()
client = OpenAI()  # OPENAI_API_KEY muhit o'zgaruvchisidan avtomatik olinadi
 
response = client.responses.create(
    model="gpt-4o-mini",
    input="O'zbekiston haqida bitta qiziqarli fakt ayt.",
)
 
print(response.output_text)

JavaScript (app.js):

import "dotenv/config";
import OpenAI from "openai";
 
const client = new OpenAI(); // OPENAI_API_KEY .env'dan avtomatik olinadi
 
const response = await client.responses.create({
  model: "gpt-4o-mini",
  input: "O'zbekiston haqida bitta qiziqarli fakt ayt.",
});
 
console.log(response.output_text);

Ishga tushiring:

~/loyiha
python app.py
Samarqanddagi Registon maydoni uch tarixiy madrasadan iborat — ular XV-XVII asrlar oralig'ida qurilgan va O'rta Osiyodagi eng mashhur me'moriy majmualardan biri hisoblanadi.

Agar shu natijani ko'rsangiz — tabriklaymiz, siz OpenAI API'ga birinchi so'rovingizni muvaffaqiyatli yubordingiz.

3. Mijoz obyektini sozlash#

OpenAI() (yoki new OpenAI()) — bu shunchaki API kalitini o'qiydigan funksiya emas, u butun ulanish sozlamalarini o'zida saqlaydigan obyekt. Eng ko'p ishlatiladigan sozlamalar:

client = OpenAI(
    api_key=os.environ["OPENAI_API_KEY"],
    timeout=30.0,       # 30 soniyadan uzoqqa cho'zilgan so'rov bekor qilinadi
    max_retries=2,      # vaqtinchalik xatolarda avtomatik 2 marta qayta urinadi
)
const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  timeout: 30 * 1000,  // millisekundlarda
  maxRetries: 2,
});

Mijozni odatda bitta marta yaratasiz (dastur boshida) va uni butun ilova davomida qayta ishlatasiz — har bir so'rov uchun yangi OpenAI() yaratish shart emas va samarasiz.

4. Javob obyekti ichida nima bor#

response.output_text — qulaylik uchun qo'shilgan qisqa yo'l. Asl javob obyekti ancha ko'proq ma'lumot tashiydi:

print(response.id)                        # "resp_..." — bu so'rovning noyob ID'si
print(response.model)                     # aslida qaysi model ishlagani
print(response.status)                    # "completed", "incomplete", "failed"
print(response.usage.input_tokens)        # nechta token yuborildi
print(response.usage.output_tokens)       # nechta token qaytarildi
print(response.output[0].content[0].text) # output_text aslida shu yerdan olinadi

response.id ayniqsa foydali — keyingi bobda ko'ramizki, uni saqlab qo'ysangiz, butun suhbat tarixini qo'lda qayta yubormasdan, shu ID'ga "davom ettirish" mumkin.

5. Modelni tanlash#

model parametri — qaysi "miya" javob berishini belgilaydi. OpenAI vaqti-vaqti bilan yangi modellar chiqaradi va eskilarini nafaqaga chiqaradi, shuning uchun aniq nomlar ro'yxatini emas, tanlov mantig'ini eslab qoling:

  • Ishni kichik, arzon modeldan boshlang — u ko'pincha yetarli bo'ladi.
  • Natija sifatsiz yoki mantiqiy xato ko'p bo'lsa, kattaroq modelga o'ting.
  • Joriy model nomlari ro'yxatini har doim platform.openai.com/docs/models sahifasidan oling — bu kitobda misol sifatida gpt-4o-mini ishlatiladi, lekin siz loyihangizda joriy tavsiya etilgan modelni tanlashingiz kerak.

Agar noto'g'ri yoki eskirgan model nomi yuborsangiz, API aniq xato qaytaradi (model_not_found) — model jimgina eng yaqin nomga "almashtirilmaydi".

6. Birinchi xatolik bilan tanishuv#

Ataylab xato qiling — .env faylidagi kalitni vaqtincha o'chirib, qayta ishga tushiring. Shunday xatoni ko'rasiz:

openai.AuthenticationError: Error code: 401 - {'error': {'message': 'Incorrect
API key provided...', 'type': 'invalid_request_error', 'code': 'invalid_api_key'}}

Xato obyektining o'zi ham dasturiy tekshirish uchun qulay:

from openai import AuthenticationError, APIStatusError
 
try:
    response = client.responses.create(model="gpt-4o-mini", input="Salom!")
except AuthenticationError:
    print("Kalit noto'g'ri — .env faylini tekshiring.")
except APIStatusError as e:
    print(f"API xatosi: {e.status_code} — {e.message}")

Kalitni joyiga qaytaring va davom eting — endi asosiy parametrlarga o'tamiz.

Amaliy topshiriq

Xatoni qasddan chaqiring va uni tuting

2-bo'limdagi kodni oling va ikkita alohida xato holatini sinab ko'ring: (1) noto'g'ri API kalit, (2) mavjud bo'lmagan model nomi. Ikkalasi uchun ham alohida, aniq xato xabarlarini chiqaradigan kod yozing.

Maslahatni ko'rsatish

model nomini 'gpt-4o-mini' o'rniga 'shunday-model-yoq' deb yozib ko'ring. Qaysi xato turi (exception klassi) chiqishini aniqlang va uni try/except (yoki try/catch) bilan tuting, foydalanuvchiga tushunarli o'zbekcha xabar chiqaring.