91 lines
3.1 KiB
Python
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 orang Indonesia yang realistis",
|
|
"email": "Email pribadi realistis berdasarkan nama",
|
|
"nama_bisnis": "Nama profesional atau brand jasa (contoh: Jasa Desain Grafis Budi, Tukang AC Cepat)",
|
|
"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 pembeli Indonesia yang realistis",
|
|
"email": "Email pribadi realistis berdasarkan nama"
|
|
},
|
|
"layanan": {
|
|
"judul": "Judul jasa yang ditawarkan",
|
|
"deskripsi": "Deskripsi lengkap layanan tersebut",
|
|
"harga": "Angka saja dalam rupiah, misal 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())
|