Arif571 commited on
Commit
643949c
·
verified ·
1 Parent(s): 586a69b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -40
app.py CHANGED
@@ -1,63 +1,60 @@
1
  import gradio as gr
2
  import graphviz
3
  import re
4
- import base64
5
  from huggingface_hub import InferenceClient
6
 
7
  # ======================================================
8
- # TEKNIK BYPASS (KODE TERENKRIPSI)
 
 
 
 
9
  # ======================================================
10
- # Ini adalah Token Anda (hf_HYxl...) yang sudah saya sandikan.
11
- # Robot keamanan Hugging Face tidak bisa membacanya, jadi AMAN dari blokir.
12
- kode_rahasia = "aGZfSFl4bFZDcGZIZnZpc2ZCRVJ0TGxpRWNMdXNqZU1oaG1PYQ=="
13
-
14
- # Kita terjemahkan balik saat aplikasi jalan
15
- my_token = base64.b64decode(kode_rahasia).decode("utf-8")
16
 
17
- # Inisialisasi Model Qwen 2.5 (72B)
18
- client = InferenceClient("Qwen/Qwen2.5-72B-Instruct", token=my_token)
19
 
20
  def engineer_mode(deskripsi_user):
21
  if not deskripsi_user:
22
  return "⚠️ Mohon isi deskripsi mesin dulu.", None
23
 
 
24
  prompt_system = """
25
- PERAN: Senior Industrial Automation Engineer (20+ Tahun).
26
- TUGAS: Terjemahkan ide user menjadi Dokumen Teknis Siap Rakit.
 
 
27
 
28
- OUTPUT WAJIB (BAHASA INDONESIA):
29
- 1. BILL OF MATERIALS (BOM):
30
- - Komponen NYATA (Omron, Siemens, Schneider).
31
- - Tipe spesifik (Misal: MY2N-J Relay, E3Z-D61 Sensor).
32
 
33
- 2. LOGIKA OPERASIONAL (SEQUENCE):
34
- - Step-by-step dari Start sampai Stop.
35
- - WAJIB ADA: Logika Safety (Emergency Stop).
36
 
37
- 3. WIRING DIAGRAM GUIDE:
38
- - Koneksi Pin-to-Pin yang detail.
39
- - Pisahkan Power (24V) dan Signal (I/O).
40
 
41
- 4. PROGRAM CODE:
42
- - Arduino C++ atau PLC Structured Text.
43
- - Lengkap dengan komentar penjelasan.
44
 
45
- 5. VISUALISASI BLOK (GRAPHVIZ DOT):
46
- - Hanya kode DOT.
47
- - Mulai: digraph G {
48
- - Akhiri: }
49
- - Gunakan: rankdir=LR; node [shape=box, style="filled,rounded", fontname="Arial"];
50
- - Warna: Input (Hijau Muda #c8e6c9), Proses (Kuning #fff9c4), Output (Merah #ffccbc).
51
  """
52
 
53
  try:
 
54
  messages = [
55
  {"role": "system", "content": prompt_system},
56
- {"role": "user", "content": f"Rancang detail untuk: {deskripsi_user}"}
57
  ]
58
 
59
  response_text = ""
60
- for message in client.chat_completion(messages, max_tokens=3000, stream=True):
 
61
  token = message.choices[0].delta.content
62
  response_text += token
63
 
@@ -68,7 +65,7 @@ def engineer_mode(deskripsi_user):
68
  e = response_text.rfind("}") + 1
69
  dot_code = response_text[s:e]
70
  else:
71
- dot_code = 'digraph G { Error -> "Diagram Tidak Tergenerate"; }'
72
 
73
  try:
74
  src = graphviz.Source(dot_code)
@@ -78,19 +75,19 @@ def engineer_mode(deskripsi_user):
78
  return response_text, None
79
 
80
  except Exception as e:
81
- return f"⚠️ ERROR SISTEM: {str(e)}", None
82
 
83
  # Tampilan UI
84
  with gr.Blocks(theme=gr.themes.Soft()) as app:
85
- gr.Markdown("# 🏭 AI Insinyur (Bypass Version)")
86
- gr.Markdown("Model: **Qwen 2.5 (72B)** | Status: **Unlocked**")
87
 
88
  with gr.Row():
89
- inp = gr.Textbox(lines=4, label="Deskripsi Mesin", placeholder="Jelaskan kebutuhan mesin Anda...")
90
- btn = gr.Button("🚀 RANCANG TEKNIS", variant="primary")
91
 
92
  with gr.Row():
93
- out_txt = gr.Markdown(label="Dokumen Spesifikasi")
94
  out_img = gr.Image(label="Diagram Sistem")
95
 
96
  btn.click(engineer_mode, inputs=inp, outputs=[out_txt, out_img])
 
1
  import gradio as gr
2
  import graphviz
3
  import re
 
4
  from huggingface_hub import InferenceClient
5
 
6
  # ======================================================
7
+ # MODE GRATIS TOTAL (TANPA TOKEN / API KEY)
8
+ # ======================================================
9
+ # Kita menggunakan model "Zephyr 7B Beta".
10
+ # Model ini dikenal sangat ramah untuk akses anonim (tanpa login).
11
+ # Cukup panggil namanya, dia akan bekerja.
12
  # ======================================================
 
 
 
 
 
 
13
 
14
+ client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
 
15
 
16
  def engineer_mode(deskripsi_user):
17
  if not deskripsi_user:
18
  return "⚠️ Mohon isi deskripsi mesin dulu.", None
19
 
20
+ # Prompt Insinyur (Disederhanakan agar Zephyr mudah mengerti)
21
  prompt_system = """
22
+ You are a Senior Industrial Automation Engineer.
23
+ Task: Create a technical design based on the user request.
24
+
25
+ OUTPUT FORMAT (USE INDONESIAN LANGUAGE):
26
 
27
+ 1. DAFTAR KOMPONEN (BOM):
28
+ - List specific real parts (Omron, Siemens, etc).
 
 
29
 
30
+ 2. CARA KERJA (LOGIC):
31
+ - Step-by-step operation guide.
32
+ - Include Safety (Emergency Stop).
33
 
34
+ 3. WIRING GUIDE:
35
+ - Pin-to-Pin connection guide.
 
36
 
37
+ 4. CODE PROGRAM:
38
+ - Arduino C++ or PLC Structured Text.
39
+ - Add comments.
40
 
41
+ 5. DIAGRAM BLOCK (GRAPHVIZ DOT):
42
+ - ONLY WRITE THE DOT CODE.
43
+ - Start with: digraph G {
44
+ - End with: }
45
+ - Use: rankdir=LR; node [shape=box, style="filled,rounded", fillcolor="#e1f5fe"];
 
46
  """
47
 
48
  try:
49
+ # Mengirim pesan tanpa token (Anonymous Mode)
50
  messages = [
51
  {"role": "system", "content": prompt_system},
52
+ {"role": "user", "content": f"Rancang mesin ini: {deskripsi_user}"}
53
  ]
54
 
55
  response_text = ""
56
+ # Streaming response
57
+ for message in client.chat_completion(messages, max_tokens=2048, stream=True):
58
  token = message.choices[0].delta.content
59
  response_text += token
60
 
 
65
  e = response_text.rfind("}") + 1
66
  dot_code = response_text[s:e]
67
  else:
68
+ dot_code = 'digraph G { Error -> "Diagram Gagal"; }'
69
 
70
  try:
71
  src = graphviz.Source(dot_code)
 
75
  return response_text, None
76
 
77
  except Exception as e:
78
+ return f"⚠️ SERVER SIBUK: Model gratisan sedang ramai. Coba tekan tombol 'Rancang' lagi dalam 5 detik.\nError: {str(e)}", None
79
 
80
  # Tampilan UI
81
  with gr.Blocks(theme=gr.themes.Soft()) as app:
82
+ gr.Markdown("# 🏭 AI Insinyur (Mode Gratis Tanpa Kunci)")
83
+ gr.Markdown("Menggunakan **Zephyr 7B Beta**. Tidak perlu API Key, Token, atau Login.")
84
 
85
  with gr.Row():
86
+ inp = gr.Textbox(lines=4, label="Deskripsi Mesin", placeholder="Jelaskan mesin yang mau dibuat...")
87
+ btn = gr.Button("🚀 RANCANG (GRATIS)", variant="primary")
88
 
89
  with gr.Row():
90
+ out_txt = gr.Markdown(label="Dokumen Teknis")
91
  out_img = gr.Image(label="Diagram Sistem")
92
 
93
  btn.click(engineer_mode, inputs=inp, outputs=[out_txt, out_img])