KashefTech commited on
Commit
5fe94c6
·
verified ·
1 Parent(s): f2750a2

Update llm_sender_unified.py

Browse files
Files changed (1) hide show
  1. llm_sender_unified.py +38 -17
llm_sender_unified.py CHANGED
@@ -1,6 +1,7 @@
1
  """
2
  🤖 LLM Sender Unified Module
3
  ماژول یکپارچه برای ارسال به ChatGPT و Grok
 
4
  """
5
 
6
  import requests
@@ -41,14 +42,14 @@ class LLMSender(ABC):
41
  """تغییر مدل"""
42
  self.model = model
43
  logger.info(f"✅ مدل تغییر یافت به: {model}")
44
-
45
  def _uses_max_completion_tokens(self) -> bool:
46
  """بررسی اینکه آیا مدل از max_completion_tokens استفاده می‌کند"""
47
  models_with_completion_tokens = [
48
- 'o1-preview', 'o1-mini', 'o1',
49
- 'gpt-5', 'gpt-5.1', 'gpt-5-mini', 'gpt-5-nano', 'gpt-5-for'
50
  ]
51
- return any(self.model.startswith(prefix) for prefix in models_with_completion_tokens)
52
 
53
  def send_simple(self, text: str, lang: str = 'fa') -> str:
54
  """ارسال ساده بدون system message سفارشی"""
@@ -102,23 +103,22 @@ class LLMSender(ABC):
102
  }
103
 
104
  # ساخت request body
105
-
106
  data = {
107
- "model": self.model,
108
- "messages": [
109
- {"role": "system", "content": system_msg},
110
- {"role": "user", "content": text}
111
- ],
112
- "temperature": temperature
113
  }
114
-
115
- # انتخاب پارامتر مناسب
116
  if self._uses_max_completion_tokens():
117
  data["max_completion_tokens"] = max_tokens
118
  else:
119
- data["max_tokens"] = max_tokens
120
 
121
- # ارسال با retry mechanism
122
  for attempt in range(retry_count):
123
  try:
124
  logger.info(f"📤 ارسال درخواست به {self.__class__.__name__} (تلاش {attempt + 1}/{retry_count})...")
@@ -299,6 +299,16 @@ def create_llm_sender(
299
  # مدل‌های موجود برای هر provider
300
  AVAILABLE_MODELS = {
301
  "chatgpt": [
 
 
 
 
 
 
 
 
 
 
302
  "gpt-4o-mini",
303
  "gpt-4o",
304
  "gpt-4-turbo",
@@ -316,6 +326,7 @@ AVAILABLE_MODELS = {
316
  if __name__ == "__main__":
317
  print("=" * 60)
318
  print("🤖 LLM Sender Unified - مثال استفاده")
 
319
  print("=" * 60)
320
 
321
  # مثال 1: ChatGPT
@@ -336,9 +347,19 @@ if __name__ == "__main__":
336
  else:
337
  print("⚠️ کلید xAI API تنظیم نشده است!")
338
 
339
- # مثال 3: لیست مدل‌ها
340
- print("\n3️⃣ مدل‌های موجود:")
 
 
 
 
 
 
 
 
 
341
  for provider, models in AVAILABLE_MODELS.items():
342
  print(f"\n{provider.upper()}:")
343
  for model in models:
344
  print(f" - {model}")
 
 
1
  """
2
  🤖 LLM Sender Unified Module
3
  ماژول یکپارچه برای ارسال به ChatGPT و Grok
4
+ ✨ با پشتیبانی از GPT-5 و O1 models
5
  """
6
 
7
  import requests
 
42
  """تغییر مدل"""
43
  self.model = model
44
  logger.info(f"✅ مدل تغییر یافت به: {model}")
45
+
46
  def _uses_max_completion_tokens(self) -> bool:
47
  """بررسی اینکه آیا مدل از max_completion_tokens استفاده می‌کند"""
48
  models_with_completion_tokens = [
49
+ 'o1-preview', 'o1-mini', 'o1',
50
+ 'gpt-5', 'gpt-5.1', 'gpt-5-mini', 'gpt-5-nano', 'gpt-5-for'
51
  ]
52
+ return any(self.model.startswith(prefix) for prefix in models_with_completion_tokens)
53
 
54
  def send_simple(self, text: str, lang: str = 'fa') -> str:
55
  """ارسال ساده بدون system message سفارشی"""
 
103
  }
104
 
105
  # ساخت request body
 
106
  data = {
107
+ "model": self.model,
108
+ "messages": [
109
+ {"role": "system", "content": system_msg},
110
+ {"role": "user", "content": text}
111
+ ],
112
+ "temperature": temperature
113
  }
114
+
115
+ # انتخاب پارامتر مناسب برای max tokens
116
  if self._uses_max_completion_tokens():
117
  data["max_completion_tokens"] = max_tokens
118
  else:
119
+ data["max_tokens"] = max_tokens
120
 
121
+ # ارسال با retry mechanism
122
  for attempt in range(retry_count):
123
  try:
124
  logger.info(f"📤 ارسال درخواست به {self.__class__.__name__} (تلاش {attempt + 1}/{retry_count})...")
 
299
  # مدل‌های موجود برای هر provider
300
  AVAILABLE_MODELS = {
301
  "chatgpt": [
302
+ # ✨ مدل‌های جدید GPT-5
303
+ "gpt-5",
304
+ "gpt-5.1",
305
+ "gpt-5-mini",
306
+ "gpt-5-nano",
307
+ # مدل‌های O1
308
+ "o1",
309
+ "o1-preview",
310
+ "o1-mini",
311
+ # مدل‌های GPT-4
312
  "gpt-4o-mini",
313
  "gpt-4o",
314
  "gpt-4-turbo",
 
326
  if __name__ == "__main__":
327
  print("=" * 60)
328
  print("🤖 LLM Sender Unified - مثال استفاده")
329
+ print("✨ با پشتیبانی از GPT-5 و O1")
330
  print("=" * 60)
331
 
332
  # مثال 1: ChatGPT
 
347
  else:
348
  print("⚠️ کلید xAI API تنظیم نشده است!")
349
 
350
+ # مثال 3: تست مدل‌های جدید
351
+ print("\n3️⃣ تست مدل‌های جدید:")
352
+ print("\nمدل‌های با max_completion_tokens:")
353
+ test_models = ['o1', 'o1-mini', 'gpt-5', 'gpt-5-mini', 'gpt-4o']
354
+ for model in test_models:
355
+ sender = create_llm_sender("chatgpt", model=model)
356
+ uses_completion = sender._uses_max_completion_tokens()
357
+ print(f" - {model}: {'✅ max_completion_tokens' if uses_completion else '❌ max_tokens'}")
358
+
359
+ # مثال 4: لیست مدل‌ها
360
+ print("\n4️⃣ مدل‌های موجود:")
361
  for provider, models in AVAILABLE_MODELS.items():
362
  print(f"\n{provider.upper()}:")
363
  for model in models:
364
  print(f" - {model}")
365
+