Sada8888 commited on
Commit
38472ed
·
verified ·
1 Parent(s): 1fa5e24

Update yml/chat-gemma.py

Browse files
Files changed (1) hide show
  1. yml/chat-gemma.py +57 -23
yml/chat-gemma.py CHANGED
@@ -1,38 +1,72 @@
1
- import os, sys, requests, base64
 
2
 
3
  prompt = os.environ.get('PROMPT', '')
4
  file_url = os.environ.get('FILE_URL', '')
5
  run_id = os.environ.get('RUN_ID')
6
- space_url = "https://opera8-gemma-4-e4b-it.hf.space" # آدرس مستقیم اسپیس شما
 
7
 
8
- image_data = None
9
  if file_url:
10
- # دانلود و تبدیل به base64
11
- img_resp = requests.get(file_url)
12
- image_data = base64.b64encode(img_resp.content).decode('utf-8')
 
 
 
 
 
 
 
 
 
13
 
14
- payload = {
15
- "prompt": prompt,
16
- "image_base64": image_data,
17
- "system_prompt": "شما یک دستیار هوشمند هستید."
18
- }
19
 
20
  try:
21
- # ارسال به FastAPI
22
- response = requests.post(f"{space_url}/chat", json=payload, timeout=120)
23
- result = response.json()
24
 
25
- bot_reply = result.get("response", "⚠️ خطایی رخ داد.")
 
 
 
 
 
 
 
26
 
27
- # آپلود پاسخ به سرور خودتان (Docker Space)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  with open('response.txt', 'w', encoding='utf-8') as f:
29
  f.write(bot_reply)
 
 
 
 
 
30
 
31
- requests.post(
32
- f"{os.environ.get('SPACE_URL')}/api/webhook/upload",
33
- data={'run_id': run_id, 'github_run_id': os.environ.get('GITHUB_RUN_ID'), 'ext': 'txt'},
34
- files={'file': open('response.txt', 'rb')}
35
- )
 
36
  except Exception as e:
37
- print(f"Error: {e}")
38
- sys.exit(1)
 
1
+ import os, sys, requests
2
+ from gradio_client import Client, handle_file
3
 
4
  prompt = os.environ.get('PROMPT', '')
5
  file_url = os.environ.get('FILE_URL', '')
6
  run_id = os.environ.get('RUN_ID')
7
+ space_url = os.environ.get('SPACE_URL')
8
+ gh_run_id = os.environ.get('GITHUB_RUN_ID')
9
 
10
+ files_to_send = []
11
  if file_url:
12
+ print(f'Downloading attachment: {file_url}')
13
+ # استخراج پسوند واقعی فایل به صورت مستقیم از URL
14
+ ext = file_url.split('.')[-1] if '.' in file_url else 'bin'
15
+ local_filename = f'attachment.{ext}'
16
+
17
+ try:
18
+ req = requests.get(file_url, timeout=30)
19
+ with open(local_filename, 'wb') as f:
20
+ f.write(req.content)
21
+ files_to_send.append(handle_file(local_filename))
22
+ except Exception as e:
23
+ print(f'Failed to download file: {e}')
24
 
25
+ print('Connecting to Gemma-4 Space...')
26
+ bot_reply = ''
 
 
 
27
 
28
  try:
29
+ client = Client('opera8/gemma-4-e4b-it')
30
+ message_payload = {'text': prompt, 'files': files_to_send}
 
31
 
32
+ result = client.predict(
33
+ message=message_payload,
34
+ thinking=False,
35
+ max_new_tokens=4000,
36
+ max_soft_tokens=560,
37
+ system_prompt='شما یک دستیار هوش مصنوعی بسیار باهوش، مفید و مودب به زبان فارسی هستید.',
38
+ api_name='/generate'
39
+ )
40
 
41
+ bot_reply = result[0] if isinstance(result, (list, tuple)) else result
42
+ if isinstance(bot_reply, dict):
43
+ bot_reply = bot_reply.get('text', str(bot_reply))
44
+
45
+ except Exception as e:
46
+ err_str = str(e)
47
+ print(f'Generation Error: {err_str}')
48
+ # تشخیص خطای محدودیت GPU و جایگزین کردن آن با پیام سفارشی
49
+ if 'ZeroGPU quota' in err_str or 'quota' in err_str.lower():
50
+ bot_reply = '⚠️ **پردازش متوقف شد:**\\nدرخواست شما طولانی و پرحجم است (پردازش فایل‌های صوتی یا حجیم نیازمند منابع بالایی است و سهمیه سرور موقتاً پر شده است).\\n\\nلطفاً چند ساعت دیگر امتحان کنید یا درخواست و فایل سبک‌تری ارسال نمایید.'
51
+ else:
52
+ bot_reply = f'⚠️ خطای سرور پردازش: {err_str}'
53
+
54
+ print('Uploading response back to Docker Space...')
55
+ try:
56
  with open('response.txt', 'w', encoding='utf-8') as f:
57
  f.write(bot_reply)
58
+
59
+ with open('response.txt', 'rb') as f:
60
+ res = requests.post(f'{space_url}/api/webhook/upload',
61
+ data={'run_id': run_id, 'github_run_id': gh_run_id, 'ext': 'txt'},
62
+ files={'file': f})
63
 
64
+ if res.status_code == 200:
65
+ print('SUCCESS!')
66
+ else:
67
+ print(f'Upload Error: {res.text}')
68
+ sys.exit(1)
69
+
70
  except Exception as e:
71
+ print(f'CRITICAL ERROR during upload: {e}')
72
+ sys.exit(1)