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-dotenvJavaScript:
npm init -y
npm install openai dotenvLoyiha 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-kalitingiz2. 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:
python app.pySamarqanddagi 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 olinadiresponse.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-miniishlatiladi, 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.
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.