Files
bot/ai_generator.py
2026-05-14 10:13:56 +07:00

91 lines
3.1 KiB
Python

import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
# Setup OpenRouter Client
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.getenv("OPENROUTER_API_KEY"),
)
def generate_bot_data():
"""
Generate realistic Indonesian persona and service data using OpenRouter.
"""
prompt = """
Kamu adalah pembuat data realistis untuk platform Microjob/Gig Economy di Indonesia.
Buat 1 set data dalam format JSON yang berisi:
{
"akun1": {
"nama_lengkap": "Nama asli orang Indonesia yang realistis (Hanya nama orang, misal: Budi Santoso, Siti Aminah)",
"email": "Email pribadi realistis berdasarkan nama",
"nama_bisnis": "Nama brand jasa profesional (misal: Budi Design, CV Sejuk Jaya)",
"deskripsi_bisnis": "Deskripsi singkat tentang keahlian atau layanan yang ditawarkan",
"lokasi": {
"lat": "Latitude acak di area perkotaan Indonesia (misal: Jakarta, Bandung, atau Surabaya)",
"lng": "Longitude acak di area perkotaan Indonesia",
"alamat": "Alamat lengkap realistis di Indonesia",
"radius": "Angka radius layanan dalam KM (antara 10-100)"
},
"identitas": {
"tipe": "KTP",
"nomor": "16 digit angka KTP acak yang valid secara format"
}
},
"akun2": {
"nama_lengkap": "Nama asli pembeli Indonesia yang realistis (Hanya nama orang)",
"email": "Email pribadi realistis berdasarkan nama"
},
"layanan": {
"judul": "Judul jasa yang ditawarkan",
"deskripsi": "Deskripsi lengkap layanan tersebut",
"harga": 50000
},
"review": {
"rating": 5,
"komentar": "Komentar positif dari pembeli"
}
}
Berikan HANYA JSON output tanpa teks lain.
"""
max_retries = 5
attempt = 0
while attempt < max_retries:
try:
response = client.chat.completions.create(
model="google/gemini-flash-preview", # Updated to Gemini Flash Preview
messages=[
{"role": "system", "content": "You output only valid JSON."},
{"role": "user", "content": prompt}
]
)
content = response.choices[0].message.content.strip()
# Strip markdown backticks if present
if content.startswith("```"):
content = content.split("```")[1]
if content.startswith("json"):
content = content[4:]
content = content.split("```")[0].strip()
import json
return json.loads(content)
except Exception as e:
attempt += 1
print(f"Error generating AI data (Attempt {attempt}/{max_retries}): {e}")
if attempt < max_retries:
import time
time.sleep(3) # Wait 3 seconds before retrying
else:
print("Max retries reached. AI generation failed.")
raise e # Raise error instead of using static data
if __name__ == "__main__":
print(generate_bot_data())