EGYADMIN commited on
Commit
5011401
·
verified ·
1 Parent(s): 8da0277

Update modules/ai_assistant/ai_app.py

Browse files
Files changed (1) hide show
  1. modules/ai_assistant/ai_app.py +69 -6
modules/ai_assistant/ai_app.py CHANGED
@@ -1,8 +1,9 @@
1
  #!/usr/bin/env python3
2
  # -*- coding: utf-8 -*-
3
  """
4
- وحدة مساعد الذكاء الاصطناعي
5
- تقوم بتوفير فئة AIAssistantApp للتوافق مع التطبيق الرئيسي
 
6
  """
7
 
8
  import os
@@ -36,11 +37,50 @@ def _get_huggingface_secret(secret_name):
36
  """
37
  # تحويل اسم السر إلى الصيغة المستخدمة في متغيرات البيئة في هجين فيس
38
  env_var_name = f"HF_SECRET_{secret_name.upper()}"
 
 
39
  secret_value = os.environ.get(env_var_name, '')
40
 
41
- # إذا لم يتم العثور على السر، نعرض رسالة تحذير (في وضع التطوير فقط)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  if not secret_value:
43
- st.warning(f"لم يتم العثور على السر: {secret_name}. تأكد من إضافته في إعدادات الأسرار في هجين فيس.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
 
45
  return secret_value
46
 
@@ -49,9 +89,25 @@ class ClaudeAIService:
49
  """خدمة التفاعل مع Claude AI API"""
50
 
51
  def __init__(self, api_key=None):
52
- self.api_key = api_key or _get_huggingface_secret("anthropic")
 
 
 
 
 
 
 
 
 
 
 
 
53
  if self.api_key:
54
- self.client = anthropic.Anthropic(api_key=self.api_key)
 
 
 
 
55
  else:
56
  self.client = None
57
 
@@ -117,6 +173,13 @@ class AIAssistantApp:
117
  # تهيئة خدمة Claude AI
118
  self.claude_service = ClaudeAIService(api_key=st.session_state.anthropic_api_key)
119
 
 
 
 
 
 
 
 
120
  def run(self):
121
  """تشغيل تطبيق مساعد الذكاء الاصطناعي"""
122
  # عرض عنوان التطبيق
 
1
  #!/usr/bin/env python3
2
  # -*- coding: utf-8 -*-
3
  """
4
+ وحدة مساعد الذكاء الاصطناعي (ai_app.py)
5
+ توفر فئة AIAssistantApp للتوافق مع التطبيق الرئيسي
6
+ تم إصلاح مشكلة الوصول إلى مفاتيح API ومشكلة دالة render المفقودة
7
  """
8
 
9
  import os
 
37
  """
38
  # تحويل اسم السر إلى الصيغة المستخدمة في متغيرات البيئة في هجين فيس
39
  env_var_name = f"HF_SECRET_{secret_name.upper()}"
40
+
41
+ # محاولة الحصول على القيمة من متغيرات البيئة
42
  secret_value = os.environ.get(env_var_name, '')
43
 
44
+ # إذا لم يتم العثور على القيمة، نحاول الحصول عليها من st.secrets
45
+ if not secret_value and hasattr(st, 'secrets'):
46
+ try:
47
+ # محاولة الوصول إلى السر مباشرة
48
+ if hasattr(st.secrets, secret_name):
49
+ secret_value = getattr(st.secrets, secret_name)
50
+ # محاولة الوصول إلى السر كعنصر في القاموس
51
+ elif secret_name in st.secrets:
52
+ secret_value = st.secrets[secret_name]
53
+ # محاولة الوصول إلى السر من خلال طريقة get
54
+ else:
55
+ secret_value = st.secrets.get(secret_name, '')
56
+ except:
57
+ pass
58
+
59
+ # محاولة ثالثة: البحث عن المفتاح بشكل مباشر في متغيرات البيئة
60
  if not secret_value:
61
+ # محاولة البحث عن المفتاح بأشكال مختلفة
62
+ possible_names = [
63
+ secret_name,
64
+ secret_name.upper(),
65
+ f"HF_{secret_name}",
66
+ f"HF_{secret_name.upper()}",
67
+ f"HUGGINGFACE_{secret_name}",
68
+ f"HUGGINGFACE_{secret_name.upper()}"
69
+ ]
70
+
71
+ for name in possible_names:
72
+ if name in os.environ:
73
+ secret_value = os.environ[name]
74
+ break
75
+
76
+ # محاولة رابعة: قيم افتراضية للاختبار (فقط في بيئة التطوير)
77
+ if not secret_value and os.environ.get('DEVELOPMENT_MODE') == 'true':
78
+ if secret_name.lower() == 'anthropic':
79
+ # قيمة افتراضية للاختبار فقط
80
+ secret_value = 'sk-ant-api-test-key'
81
+ elif secret_name.lower() == 'ai':
82
+ # قيمة افتراضية للاختبار فقط
83
+ secret_value = 'sk-ai-api-test-key'
84
 
85
  return secret_value
86
 
 
89
  """خدمة التفاعل مع Claude AI API"""
90
 
91
  def __init__(self, api_key=None):
92
+ # محاولة الحصول على المفتاح بعدة طرق
93
+ if not api_key:
94
+ api_key = _get_huggingface_secret("anthropic")
95
+
96
+ # إذا لم يتم العثور على المفتاح، نحاول بأسماء بديلة
97
+ if not api_key:
98
+ for alt_name in ["ANTHROPIC_API_KEY", "CLAUDE_API_KEY", "CLAUDE"]:
99
+ api_key = _get_huggingface_secret(alt_name)
100
+ if api_key:
101
+ break
102
+
103
+ self.api_key = api_key
104
+
105
  if self.api_key:
106
+ try:
107
+ self.client = anthropic.Anthropic(api_key=self.api_key)
108
+ except Exception as e:
109
+ print(f"خطأ في تهيئة عميل Anthropic: {str(e)}")
110
+ self.client = None
111
  else:
112
  self.client = None
113
 
 
173
  # تهيئة خدمة Claude AI
174
  self.claude_service = ClaudeAIService(api_key=st.session_state.anthropic_api_key)
175
 
176
+ def render(self):
177
+ """
178
+ عرض واجهة تطبيق مساعد الذكاء الاصطناعي
179
+ هذه الدالة مطلوبة للتوافق مع التطبيق الرئيسي
180
+ """
181
+ self.run()
182
+
183
  def run(self):
184
  """تشغيل تطبيق مساعد الذكاء الاصطناعي"""
185
  # عرض عنوان التطبيق