AhmadA82 commited on
Commit
ff0d31c
·
verified ·
1 Parent(s): ec0d34f
Files changed (1) hide show
  1. app.py +7 -66
app.py CHANGED
@@ -86,12 +86,7 @@ LOCAL_GGUF_REPO = os.getenv("LOCAL_GGUF_REPO", "Triangle104/Qwen3-8B-Q4_K_M-GGUF
86
  LOCAL_GGUF_FILE = os.getenv("LOCAL_GGUF_FILE", "qwen3-8b-q4_k_m.gguf")
87
  LOCAL_GGUF_PATH = CACHE_DIR / LOCAL_GGUF_FILE
88
 
89
- # تضمين
90
- EMBED_MODEL_NAME = os.getenv("EMBED_MODEL", "sentence-transformers/all-MiniLM-L6-v2")
91
- EMBED_DIM = int(os.getenv("EMBED_DIM", "384"))
92
-
93
- # تقسيم الشيفرة
94
- CHUNK_STEP = int(os.getenv("CHUNK_STEP", "40")) # ✅ قابل للتهيئة
95
  MAX_FILE_BYTES = int(os.getenv("MAX_FILE_BYTES", str(10 * 1024 * 1024))) # 10MB احتياطيًا
96
 
97
  SYSTEM_PROMPT = """<|im_start|>system
@@ -102,79 +97,25 @@ Return structured, accurate, concise answers. Use Arabic + English labels in the
102
  # =========================
103
  # الحالة العالمية والقفل
104
  # =========================
105
- embed_model: object | None = None
106
- faiss_index: object | None = None
107
- all_chunks: List[Tuple[str, str]] = [] # (file_name, chunk_text)
108
  code_graph: Dict[str, Any] = {"files": {}}
109
  hash_map: Dict[str, str] = {}
110
 
111
  index_lock = threading.RLock() # ✅ لتأمين الفهرسة/الاسترجاع
112
 
113
  # =========================
114
- # LLM (محلي/سحابي)
115
  # =========================
116
- try:
117
- from llama_cpp import Llama
118
- except Exception:
119
- Llama = None
120
-
121
- llm = None # كائن النموذج المحلي إن توفر
122
 
123
  logger.info(f"HF_TOKEN length: {len(HF_TOKEN)}") # تحقق من طول الtoken
124
 
125
  def load_local_model_if_configured():
126
- """تحميل GGUF محليًا إن كان مفعّلًا."""
127
- global llm
128
- if Llama is None:
129
- logger.warning("ℹ️ llama_cpp غير متوفر. سيتم الاعتماد على HF Inference عند الحاجة.")
130
- return
131
- if not LOCAL_GGUF_PATH.exists():
132
- try:
133
- logger.info(f"⬇️ تنزيل GGUF: {LOCAL_GGUF_REPO}/{LOCAL_GGUF_FILE}")
134
- hf_hub_download(
135
- repo_id=LOCAL_GGUF_REPO,
136
- filename=LOCAL_GGUF_FILE,
137
- local_dir=str(CACHE_DIR),
138
- token=HF_TOKEN or None
139
- )
140
- logger.info("✅ تم تنزيل GGUF بنجاح.")
141
- except Exception as e:
142
- logger.error(f"❌ تعذر تنزيل GGUF: {str(e)}. السبب المحتمل: token غير صالح أو repo غير موجود.")
143
- return
144
- try:
145
- llm = Llama(
146
- model_path=str(LOCAL_GGUF_PATH),
147
- n_ctx=int(os.getenv("N_CTX", "32768")),
148
- rope_scaling={"type": "yarn", "factor": 4.0},
149
- n_threads=int(os.getenv("N_THREADS", "2")),
150
- n_gpu_layers=int(os.getenv("N_GPU_LAYERS", "0")),
151
- n_batch=int(os.getenv("N_BATCH", "64")),
152
- use_mlock=False,
153
- verbose=False
154
- )
155
- logger.info("✅ تم تحميل النموذج المحلي (GGUF).")
156
- except Exception as e:
157
- llm = None
158
- logger.error(f"❌ فشل تحميل النموذج المحلي: {str(e)}. السبب المحتمل: مشكلة في الملف أو التوافق.")
159
 
160
  def call_local_llm(prompt: str, max_tokens: int = 800) -> str:
161
- if llm is None or Llama is None:
162
- logger.warning("❌ النموذج المحلي غير متوفر.")
163
- return ""
164
- try:
165
- res = llm(
166
- prompt,
167
- max_tokens=max_tokens,
168
- temperature=0.4,
169
- top_p=0.9,
170
- stop=["<|im_end|>", "<|im_start|>"],
171
- echo=False
172
- )
173
- logger.info("✅ رد ناجح من النموذج المحلي.")
174
- return res["choices"][0]["text"].strip()
175
- except Exception as e:
176
- logger.error(f"❌ فشل استدعاء النموذج المحلي: {str(e)}. السبب المحتمل: مشكلة في التنفيذ أو الذاكرة.")
177
- return ""
178
 
179
  def _call_hf_single_model(model_repo: str, prompt: str, max_new_tokens: int = 900) -> str:
180
  import requests
 
86
  LOCAL_GGUF_FILE = os.getenv("LOCAL_GGUF_FILE", "qwen3-8b-q4_k_m.gguf")
87
  LOCAL_GGUF_PATH = CACHE_DIR / LOCAL_GGUF_FILE
88
 
89
+ # تقسيم الشيفرة (قيمة قصوى للقراءة المؤقتة)
 
 
 
 
 
90
  MAX_FILE_BYTES = int(os.getenv("MAX_FILE_BYTES", str(10 * 1024 * 1024))) # 10MB احتياطيًا
91
 
92
  SYSTEM_PROMPT = """<|im_start|>system
 
97
  # =========================
98
  # الحالة العالمية والقفل
99
  # =========================
100
+ all_chunks: List[Tuple[str, str]] = []
 
 
101
  code_graph: Dict[str, Any] = {"files": {}}
102
  hash_map: Dict[str, str] = {}
103
 
104
  index_lock = threading.RLock() # ✅ لتأمين الفهرسة/الاسترجاع
105
 
106
  # =========================
107
+ # LLM (سحابي فقط في النسخة المبسطة)
108
  # =========================
109
+ Llama = None
110
+ llm = None # النسخة المبسطة: لا نموذج محلي
 
 
 
 
111
 
112
  logger.info(f"HF_TOKEN length: {len(HF_TOKEN)}") # تحقق من طول الtoken
113
 
114
  def load_local_model_if_configured():
115
+ return None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
 
117
  def call_local_llm(prompt: str, max_tokens: int = 800) -> str:
118
+ return ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
 
120
  def _call_hf_single_model(model_repo: str, prompt: str, max_new_tokens: int = 900) -> str:
121
  import requests