-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerate_data.py
More file actions
123 lines (115 loc) · 13.5 KB
/
generate_data.py
File metadata and controls
123 lines (115 loc) · 13.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
"""
Procurement domain uchun sample training data generatsiya qilish.
Bu script train_data.jsonl faylini yaratadi.
"""
import json
# Procurement domain uchun sample data
SAMPLE_DATA = [
{
"instruction": "Tender tahlil qiling va eng yaxshi taklifni tanlang.",
"input": "Uchta yetkazib beruvchi kompyuter jihozlari uchun taklif berdi:\n1. TechPro: 100 ta kompyuter - 850,000 so'm/dona, yetkazish 14 kun\n2. DigiMax: 100 ta kompyuter - 820,000 so'm/dona, yetkazish 21 kun\n3. InfoSys: 100 ta kompyuter - 880,000 so'm/dona, yetkazish 7 kun, 2 yil kafolat",
"output": "Tahlil natijalari:\n\n1. **DigiMax** - eng arzon (820,000 so'm), lekin yetkazish uzoq (21 kun)\n2. **TechPro** - o'rtacha narx (850,000 so'm), maqbul muddat (14 kun)\n3. **InfoSys** - eng qimmat (880,000 so'm), lekin eng tez (7 kun) va 2 yil kafolat\n\n**Tavsiya**: Agar kafolat muhim bo'lsa - InfoSys, agar byudjet cheklangan bo'lsa - DigiMax, muvozanat uchun - TechPro."
},
{
"instruction": "Yetkazib beruvchini baholang.",
"input": "Kompaniya: ABC Savdo\nO'tgan yil buyurtmalar: 24 ta\nO'z vaqtida yetkazish: 20 ta (83%)\nSifat bo'yicha shikoyatlar: 3 ta\nNarx raqobatbardoshligi: o'rtacha",
"output": "**ABC Savdo baholash**:\n\n- Yetkazish ishonchliligi: 83% - YAXSHI (80% dan yuqori)\n- Sifat: 3/24 shikoyat (12.5%) - QONIQARLI (15% dan past)\n- Narx: O'rtacha - MAQBUL\n\n**Umumiy ball**: 7/10\n**Tavsiya**: Davom ettirish mumkin, lekin yetkazish muddatlarini nazorat qilish kerak."
},
{
"instruction": "Shartnoma shartlarini tekshiring va xavflarni aniqlang.",
"input": "Shartnoma: IT xizmatlar uchun 1 yillik kontrakt\nSumma: 500 million so'm\nTo'lov: 100% oldindan\nKafolat: yo'q\nJarima: faqat mijozga",
"output": "**XAVFLAR ANIQLANDI**:\n\n1. **YUQORI XAVF**: 100% oldindan to'lov - ijrochi tomonidan bajarmaslik xavfi\n2. **YUQORI XAVF**: Kafolat yo'qligi - sifat muammolari uchun himoya yo'q\n3. **O'RTA XAVF**: Bir tomonlama jarima - ijrochini javobgarlikka tortish qiyin\n\n**TAVSIYALAR**:\n- To'lovni bosqichma-bosqich qilish (30%-40%-30%)\n- Minimal 6 oylik kafolat talab qilish\n- Ikki tomonlama jarima kiritish"
},
{
"instruction": "Tender hujjatlarini tayyorlash bo'yicha ko'rsatma bering.",
"input": "Vazifa: Ofis mebellari xaridi uchun tender e'lon qilish\nByudjet: 200 million so'm\nMiqdor: 50 ta ish stoli, 50 ta kreslo, 10 ta shkaf",
"output": "**Tender hujjatlari tarkibi**:\n\n1. **Texnik topshiriq**:\n - Ish stoli: 120x60 sm, metall oyoq, laminat ust qismi\n - Kreslo: ergonomik, balandligi sozlanadi, g'ildirakli\n - Shkaf: 180 sm, 4 bo'limli, qulfli\n\n2. **Malaka talablari**:\n - Kamida 2 yillik tajriba\n - O'xshash loyihalar portfeli\n - Moliyaviy barqarorlik\n\n3. **Baholash mezonlari**:\n - Narx: 40%\n - Sifat: 30%\n - Yetkazish muddati: 20%\n - Kafolat: 10%\n\n4. **Muhim sanalar**:\n - Takliflar qabul qilish: 14 kun\n - Natijalar e'loni: 21-kun"
},
{
"instruction": "Xarid narxini solishtiring va tavsiya bering.",
"input": "Mahsulot: HP LaserJet printer\nMahalliy bozor: 4,500,000 so'm\nOnlayn do'kon: 4,200,000 so'm + 200,000 yetkazish\nRasmiy distribyutor: 4,800,000 so'm, 3 yil kafolat",
"output": "**Narx tahlili**:\n\n| Manba | Narx | Kafolat | Jami |\n|-------|------|---------|------|\n| Mahalliy | 4,500,000 | 1 yil | 4,500,000 |\n| Onlayn | 4,200,000 + 200,000 | 1 yil | 4,400,000 |\n| Distribyutor | 4,800,000 | 3 yil | 4,800,000 |\n\n**Tavsiya**:\n- Kam byudjet uchun: Onlayn do'kon (4,400,000)\n- Uzoq muddatli ishlatish uchun: Distribyutor (3 yil kafolat 400,000 ga arziydi)"
},
{
"instruction": "Yetkazib beruvchilar ro'yxatini filtrlang.",
"input": "Mezon: Qurilish materiallari, Toshkent shahri, minimal buyurtma 50 mln so'mdan\nRo'yxat:\n1. BuildMax - Toshkent, min 100 mln\n2. StroyMir - Samarqand, min 30 mln\n3. QuruvchiPro - Toshkent, min 50 mln\n4. MaterialPlus - Toshkent, min 20 mln",
"output": "**Filtrlash natijalari**:\n\nMezonlarga mos keladi:\n1. **QuruvchiPro** - Toshkent, min 50 mln (to'liq mos)\n2. **MaterialPlus** - Toshkent, min 20 mln (mos, lekin past chegara)\n\nMos kelmaydi:\n- BuildMax - min buyurtma juda yuqori (100 mln)\n- StroyMir - joylashuv mos emas (Samarqand)\n\n**Tavsiya**: QuruvchiPro bilan boshlash, MaterialPlus zaxira variant."
},
{
"instruction": "Xarid so'rovnomasini tahlil qiling.",
"input": "Bo'lim: IT\nSo'rov: 10 ta noutbuk\nSpetsifikatsiya: Intel Core i5, 16GB RAM, 512GB SSD\nAsoslash: Yangi xodimlar uchun\nShoshilinchlik: Yuqori",
"output": "**So'rovnoma tahlili**:\n\n**Status**: TASDIQLASH MUMKIN\n\n**Tekshiruv**:\n- Spetsifikatsiya: Standart ofis talablariga mos\n- Miqdor: Yangi xodimlar soniga mos kelishini tekshirish kerak\n- Shoshilinchlik: Asosli (yangi xodimlar)\n\n**Keyingi qadamlar**:\n1. HR dan yangi xodimlar ro'yxatini olish\n2. IT inventardan mavjud noutbuklarni tekshirish\n3. Kamida 3 ta taklif olish\n4. 5 ish kuni ichida xarid yakunlash"
},
{
"instruction": "Byudjet taqsimotini rejalashtiring.",
"input": "Yillik xarid byudjeti: 2 milliard so'm\nKategoriyalar: IT jihozlar, ofis jihozlari, xo'jalik mollari, transport xarajatlari",
"output": "**Byudjet taqsimoti tavsiyasi**:\n\n| Kategoriya | Foiz | Summa |\n|------------|------|-------|\n| IT jihozlar | 40% | 800 mln |\n| Ofis jihozlari | 25% | 500 mln |\n| Xo'jalik mollari | 20% | 400 mln |\n| Transport | 15% | 300 mln |\n\n**Choraklik rejim**:\n- Q1: 30% - asosiy xaridlar\n- Q2: 25% - operatsion\n- Q3: 20% - operatsion\n- Q4: 25% - yil oxiri + zaxira\n\n**Eslatma**: 10% zaxira fondi saqlab qolish tavsiya etiladi."
},
{
"instruction": "Yetkazib beruvchi bilan muzokaralar strategiyasini tuzing.",
"input": "Vaziyat: Yirik IT vendor bilan 3 yillik shartnoma\nHozirgi narx: 1.2 mlrd/yil\nMaqsad: 15% chegirma olish\nKuch tomonimiz: Uzoq muddatli hamkorlik, vaqtida to'lov",
"output": "**Muzokaralar strategiyasi**:\n\n**1-bosqich: Tayyorgarlik**\n- Bozor narxlarini o'rganish\n- Raqobatchilardan taklif olish\n- O'tgan 3 yillik to'lov tarixini tayyorlash\n\n**2-bosqich: Argumentlar**\n- 3 yillik sodiq mijoz ekanligimiz\n- 100% o'z vaqtida to'lov\n- Hajm oshirish va'dasi\n\n**3-bosqich: Taklif**\n- Boshlang'ich so'rov: 20% chegirma\n- Minimal maqsad: 15% (180 mln tejash)\n- Muqobil: Qo'shimcha xizmatlar (training, support)\n\n**4-bosqich: BATNA**\n- Raqobatchi takliflari tayyor\n- 12% dan past bo'lsa - vendor o'zgartirish"
},
{
"instruction": "Xarid jarayonini optimallashtirish bo'yicha taklif bering.",
"input": "Muammo: Oddiy xaridlar uchun o'rtacha 14 kun ketadi\nHozirgi jarayon: So'rov -> Bo'lim boshlig'i -> Moliya -> Xarid bo'limi -> Tender -> Buyurtma",
"output": "**Optimallashtirish taklifi**:\n\n**Hozirgi**: 6 bosqich, 14 kun\n**Maqsad**: 3-4 bosqich, 5 kun\n\n**Yechimlar**:\n\n1. **Kategoriyalash**:\n - 10 mln gacha: Tezkor xarid (2 kun)\n - 10-50 mln: Standart (5 kun)\n - 50 mln+: To'liq tender (14 kun)\n\n2. **Avtomatlashtirish**:\n - Elektron so'rovnoma tizimi\n - Avtomatik tasdiqlash (limit ichida)\n - Oldindan tasdiqlangan vendor ro'yxati\n\n3. **Parallel jarayon**:\n - Moliya va bo'lim boshlig'i bir vaqtda\n - Pre-approved vendorlar uchun tendersiz\n\n**Kutilgan natija**: 60% vaqt tejash"
},
{
"instruction": "Inventar boshqaruv tavsiyasi bering.",
"input": "Mahsulot: A4 qog'oz\nOylik iste'mol: 200 pachka\nHozirgi zaxira: 50 pachka\nYetkazish muddati: 5 kun\nNarx: 45,000 so'm/pachka",
"output": "**Inventar tahlili**:\n\n**Hozirgi holat**: XAVFLI\n- Zaxira: 50 pachka = 7.5 kunlik\n- Yetkazish: 5 kun\n- Xavfsizlik zaxirasi: faqat 2.5 kun\n\n**Tavsiyalar**:\n\n1. **Qayta buyurtma nuqtasi**: 80 pachka\n (Yetkazish muddati x oylik iste'mol/30 + xavfsizlik)\n\n2. **Optimal buyurtma**: 100 pachka\n - Yetkazish chastotasi: 2 hafta\n - Zaxira xarajati kamaytirish\n\n3. **Hajm chegirmasi**: 500 pachka uchun 10% so'rash\n - Oylik tejamkorlik: 450,000 so'm\n - Saqlash xarajatlarini hisoblash kerak\n\n**Darhol harakat**: 100 pachka buyurtma berish"
},
{
"instruction": "Tender natijalarini e'lon qilish uchun xat yozing.",
"input": "Tender: Ofis jihozlari xaridi\nG'olib: MebelPro MChJ\nSumma: 180 million so'm\nIshtirokchilar: 5 ta kompaniya",
"output": "**Tender natijalari to'g'risida XABAR**\n\nHurmatli ishtirokchilar,\n\n\"Ofis jihozlari xaridi\" tenderining natijalari e'lon qilinadi.\n\n**Tender ma'lumotlari**:\n- Tender raqami: OJ-2024-001\n- Ishtirokchilar soni: 5\n- Baholash mezonlari: Narx (40%), Sifat (30%), Muddat (20%), Kafolat (10%)\n\n**NATIJA**:\nG'olib: **MebelPro MChJ**\nShartnoma summasi: 180,000,000 so'm\n\nBarcha ishtirokchilarga minnatdorchilik bildiramiz. Tender hujjatlarini 10 ish kuni ichida qaytarib olishingiz mumkin.\n\nSavollar uchun: tender@company.uz\n\nHurmat bilan,\nXarid bo'limi"
},
{
"instruction": "Xarid bo'yicha oylik hisobot tayyorlang.",
"input": "Oy: Noyabr 2024\nJami xaridlar: 450 mln so'm\nTenderlar: 3 ta\nShoshilinch xaridlar: 12 ta\nTejamkorlik: 45 mln so'm",
"output": "**XARID BO'LIMI OYLIK HISOBOTI**\n**Davr**: Noyabr 2024\n\n**1. UMUMIY KO'RSATKICHLAR**\n| Ko'rsatkich | Qiymat |\n|-------------|--------|\n| Jami xaridlar | 450 mln so'm |\n| Tenderlar soni | 3 ta |\n| Shoshilinch xaridlar | 12 ta |\n| Tejamkorlik | 45 mln (10%) |\n\n**2. KATEGORIYA BO'YICHA**\n- IT jihozlar: 180 mln (40%)\n- Ofis jihozlari: 135 mln (30%)\n- Xo'jalik: 90 mln (20%)\n- Boshqa: 45 mln (10%)\n\n**3. SAMARADORLIK**\n- O'rtacha tender muddati: 12 kun\n- Shoshilinch xaridlar ulushi: 8% (norma 5%)\n\n**4. TAVSIYALAR**\n- Shoshilinch xaridlarni kamaytirish\n- Yetkazib beruvchilar bazasini kengaytirish"
},
{
"instruction": "Yetkazib beruvchi shartnomasi uchun asosiy shartlarni belgilang.",
"input": "Shartnoma turi: IT uskunalar yetkazib berish\nMuddat: 1 yil\nTaxminiy summa: 500 mln so'm\nXavflar: kechikish, sifat, valyuta o'zgarishi",
"output": "**SHARTNOMA ASOSIY SHARTLARI**\n\n**1. TO'LOV SHARTLARI**\n- 30% oldindan to'lov\n- 50% yetkazishda\n- 20% qabul qilgandan keyin (7 kun)\n\n**2. YETKAZISH**\n- Asosiy muddat: buyurtmadan 14 kun\n- Jarima: har kechikkan kun uchun 0.1% (max 10%)\n\n**3. SIFAT KAFOLATI**\n- Minimal kafolat: 24 oy\n- Javob muddati: 24 soat\n- Ta'mirlash/almashtirish: 72 soat\n\n**4. NARX**\n- Narx belgilangan (Fixed price)\n- Valyuta: so'mda, lekin USD kursga bog'langan\n- Kurs chegarasi: +/- 5%\n\n**5. FORCE MAJEURE**\n- Xabar berish: 48 soat ichida\n- Uzaytirish: hodisa davriga\n\n**6. NIZOLARNI HAL QILISH**\n- Muzokaralar: 30 kun\n- Arbitraj: Toshkent shahri"
},
{
"instruction": "Xarid so'rovini rad etish sababini tushuntiring.",
"input": "So'rov: Marketing bo'limi - 5 ta iPhone 15 Pro Max\nNarx: 70 mln so'm\nAsoslash: 'Rasm olish uchun kerak'",
"output": "**SO'ROV RAD ETILDI**\n\n**Sabab**: Asoslash yetarli emas\n\n**Tahlil**:\n1. **Narx**: iPhone 15 Pro Max = 14 mln/dona - premium segment\n2. **Muqobil**: Professional kamera 5-7 mln, oddiy smartfon 3-4 mln\n3. **Asoslash**: \"Rasm olish\" uchun iPhone shart emas\n\n**Tavsiyalar**:\n1. Aniq maqsadni belgilash (qanday rasm, qayerda ishlatiladi)\n2. Professional kamera variantini ko'rish\n3. Mavjud jihozlardan foydalanish imkonini tekshirish\n4. Ijaraga olish variantini o'ylab ko'rish\n\n**Keyingi qadam**:\nSo'rovni qayta ko'rib chiqish uchun:\n- Aniq biznes keraklilik\n- Boshqa variantlar tahlili\n- ROI hisob-kitobi taqdim eting"
},
{
"instruction": "Vendor audit rejasini tuzing.",
"input": "Vendor: LogisticsPro\nShartnoma: Transport xizmatlari\nYillik summa: 800 mln so'm\nOxirgi audit: 18 oy oldin",
"output": "**VENDOR AUDIT REJASI**\n\n**Vendor**: LogisticsPro\n**Audit turi**: Yillik shartnoma auditi\n**Muddati**: 3 ish kuni\n\n**TEKSHIRUV SOHALARI**:\n\n**1-kun: Hujjatlar**\n- Shartnoma shartlariga rioya\n- Sug'urta va litsenziyalar\n- Xavfsizlik sertifikatlari\n\n**2-kun: Operatsion**\n- Transport vositalari holati\n- Haydovchilar malakasi\n- GPS monitoring tizimi\n- Yetkazish statistikasi\n\n**3-kun: Moliyaviy**\n- Hisob-fakturalar to'g'riligi\n- Narxlar shartnomaga mosligi\n- To'lov tarixi\n\n**KUTILGAN NATIJALAR**:\n- Audit hisoboti\n- Ball berish (1-100)\n- Tavsiyalar ro'yxati\n- Shartnoma uzaytirish qarori\n\n**AUDITORLAR**: Xarid + Moliya bo'limlari"
}
]
def generate_training_data(output_file: str = "train_data.jsonl"):
"""Training data faylini yaratish."""
with open(output_file, "w", encoding="utf-8") as f:
for item in SAMPLE_DATA:
json.dump(item, f, ensure_ascii=False)
f.write("\n")
print(f"Generated {len(SAMPLE_DATA)} training samples to {output_file}")
def format_for_phi3(instruction: str, input_text: str, output: str) -> str:
"""Phi-3 chat formati uchun prompt yaratish."""
if input_text:
prompt = f"<|user|>\n{instruction}\n\nMa'lumot:\n{input_text}<|end|>\n<|assistant|>\n{output}<|end|>"
else:
prompt = f"<|user|>\n{instruction}<|end|>\n<|assistant|>\n{output}<|end|>"
return prompt
def preview_data(n: int = 3):
"""Sample datadan namuna ko'rsatish."""
print("=" * 50)
print("SAMPLE DATA PREVIEW")
print("=" * 50)
for i, item in enumerate(SAMPLE_DATA[:n]):
print(f"\n--- Sample {i+1} ---")
print(f"Instruction: {item['instruction']}")
print(f"Input: {item['input'][:100]}...")
print(f"Output: {item['output'][:100]}...")
if __name__ == "__main__":
generate_training_data()
preview_data()