bahi-bh commited on
Commit
39b730a
·
verified ·
1 Parent(s): 3330050

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -5
app.py CHANGED
@@ -186,8 +186,13 @@ app = FastAPI()
186
  ai = SmartG4F()
187
 
188
 
189
- class Query(BaseModel):
190
- prompt: str
 
 
 
 
 
191
 
192
 
193
  # ============================================================
@@ -231,9 +236,40 @@ async def home():
231
  }
232
 
233
 
234
- @app.post("/ask", dependencies=[Depends(verify_api_key)])
235
- async def ask(query: Query):
236
- return ai.ask(query.prompt)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
 
238
 
239
  if __name__ == "__main__":
 
186
  ai = SmartG4F()
187
 
188
 
189
+ # ============================================================
190
+ # التعديل الجديد: هيكل بيانات متوافق مع نمط OpenAI v1
191
+ # ============================================================
192
+ class OpenAIQuery(BaseModel):
193
+ model: str
194
+ messages: list
195
+ temperature: float = 0.7
196
 
197
 
198
  # ============================================================
 
236
  }
237
 
238
 
239
+ # ============================================================
240
+ # التعديل الجديد: المسار والرد المتوافق مع الواجهة الخارجية ونمط v1
241
+ # ============================================================
242
+ @app.post("/v1/chat/completions", dependencies=[Depends(verify_api_key)])
243
+ async def ask_v1(query: OpenAIQuery):
244
+ # سحب نص آخر رسالة أرسلها المستخدم في الواجهة
245
+ if query.messages:
246
+ last_message = query.messages[-1].get("content", "")
247
+ else:
248
+ last_message = ""
249
+
250
+ # تمرير السؤال لمنطق المعالجة والـ Providers الذكي وسيرفر Context7
251
+ result = ai.ask(last_message)
252
+
253
+ # تنسيق الرد بالشكل القياسي المتوافق مع OpenAI لتفهمه الواجهة مباشرة
254
+ if result.get("success"):
255
+ return {
256
+ "choices": [
257
+ {
258
+ "message": {
259
+ "role": "assistant",
260
+ "content": result.get("response")
261
+ },
262
+ "finish_reason": "stop"
263
+ }
264
+ ],
265
+ "model": query.model,
266
+ "provider": result.get("provider")
267
+ }
268
+ else:
269
+ raise HTTPException(
270
+ status_code=500,
271
+ detail="Failed to generate response from available providers"
272
+ )
273
 
274
 
275
  if __name__ == "__main__":