SUBHRAJIT MOHANTY commited on
Commit
86e4192
Β·
1 Parent(s): 6cb77d4

Fixing issues

Browse files
Files changed (1) hide show
  1. app.py +69 -6
app.py CHANGED
@@ -78,13 +78,32 @@ async def lifespan(app: FastAPI):
78
 
79
  # Initialize OpenAI client with Groq endpoint
80
  try:
 
 
 
 
81
  app_state.openai_client = AsyncOpenAI(
82
  api_key=Config.GROQ_API_KEY,
83
- base_url=Config.GROQ_BASE_URL
 
84
  )
85
  print("βœ“ OpenAI client initialized with Groq endpoint")
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  except Exception as e:
87
  print(f"βœ— Error initializing OpenAI client: {e}")
 
88
  raise e
89
 
90
  # Initialize Qdrant client
@@ -355,9 +374,24 @@ async def health_check():
355
  except Exception as e:
356
  embedding_health = {"status": "error", "error": str(e)}
357
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
358
  return {
359
  "status": "healthy" if app_state.embedding_service is not None else "unhealthy",
360
- "openai_client": "connected" if app_state.openai_client else "not configured",
361
  "qdrant": qdrant_status,
362
  "embedding_service": embedding_health,
363
  "collection": Config.COLLECTION_NAME,
@@ -379,21 +413,28 @@ async def chat_completions(request: ChatCompletionRequest):
379
  raise HTTPException(status_code=400, detail="No user message found")
380
 
381
  last_user_message = user_messages[-1].content
 
382
 
383
  # Retrieve relevant chunks
384
- relevant_chunks = await RAGService.retrieve_relevant_chunks(last_user_message)
 
 
 
 
 
385
 
386
  # Build context-aware prompt
387
  if relevant_chunks:
388
  context_prompt = RAGService.build_context_prompt(last_user_message, relevant_chunks)
389
-
390
- # Replace the last user message with context-enhanced version
391
  enhanced_messages = request.messages[:-1] + [Message(role="user", content=context_prompt)]
 
392
  else:
393
  enhanced_messages = request.messages
 
394
 
395
  # Convert to OpenAI format
396
  openai_messages = [{"role": msg.role, "content": msg.content} for msg in enhanced_messages]
 
397
 
398
  if request.stream:
399
  return StreamingResponse(
@@ -403,12 +444,22 @@ async def chat_completions(request: ChatCompletionRequest):
403
  else:
404
  return await create_chat_completion(openai_messages, request)
405
 
 
 
406
  except Exception as e:
 
 
 
 
407
  raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
408
 
409
  async def create_chat_completion(messages: List[Dict], request: ChatCompletionRequest) -> ChatCompletionResponse:
410
  """Create a non-streaming chat completion"""
411
  try:
 
 
 
 
412
  response = await app_state.openai_client.chat.completions.create(
413
  model=request.model,
414
  messages=messages,
@@ -418,8 +469,13 @@ async def create_chat_completion(messages: List[Dict], request: ChatCompletionRe
418
  stream=False
419
  )
420
 
 
 
 
 
 
421
  # Convert response to OpenAI format (already compatible)
422
- return ChatCompletionResponse(
423
  id=response.id,
424
  created=response.created,
425
  model=response.model,
@@ -438,7 +494,14 @@ async def create_chat_completion(messages: List[Dict], request: ChatCompletionRe
438
  } if response.usage else None
439
  )
440
 
 
 
 
441
  except Exception as e:
 
 
 
 
442
  raise HTTPException(status_code=500, detail=f"Error calling OpenAI API: {str(e)}")
443
 
444
  async def stream_chat_completion(messages: List[Dict], request: ChatCompletionRequest) -> AsyncGenerator[str, None]:
 
78
 
79
  # Initialize OpenAI client with Groq endpoint
80
  try:
81
+ print(f"Configuring OpenAI client with:")
82
+ print(f" Base URL: {Config.GROQ_BASE_URL}")
83
+ print(f" API Key: {'*' * 10}...{Config.GROQ_API_KEY[-4:] if Config.GROQ_API_KEY else 'None'}")
84
+
85
  app_state.openai_client = AsyncOpenAI(
86
  api_key=Config.GROQ_API_KEY,
87
+ base_url=Config.GROQ_BASE_URL,
88
+ timeout=60.0 # Add timeout
89
  )
90
  print("βœ“ OpenAI client initialized with Groq endpoint")
91
+
92
+ # Test the client with a simple request
93
+ try:
94
+ test_response = await app_state.openai_client.chat.completions.create(
95
+ model="mixtral-8x7b-32768",
96
+ messages=[{"role": "user", "content": "Hello"}],
97
+ max_tokens=10
98
+ )
99
+ print(f"βœ“ OpenAI client test successful - Response ID: {test_response.id}")
100
+ except Exception as test_error:
101
+ print(f"⚠ OpenAI client test failed: {test_error}")
102
+ print(" This might cause issues with chat completions")
103
+
104
  except Exception as e:
105
  print(f"βœ— Error initializing OpenAI client: {e}")
106
+ print(f" Error type: {type(e)}")
107
  raise e
108
 
109
  # Initialize Qdrant client
 
374
  except Exception as e:
375
  embedding_health = {"status": "error", "error": str(e)}
376
 
377
+ # Test OpenAI client
378
+ if app_state.openai_client is None:
379
+ openai_health = {"status": "not_initialized", "error": "OpenAI client is None"}
380
+ else:
381
+ try:
382
+ # Quick test of OpenAI client
383
+ test_response = await app_state.openai_client.chat.completions.create(
384
+ model="mixtral-8x7b-32768",
385
+ messages=[{"role": "user", "content": "test"}],
386
+ max_tokens=1
387
+ )
388
+ openai_health = {"status": "healthy", "test_response_id": test_response.id}
389
+ except Exception as e:
390
+ openai_health = {"status": "error", "error": str(e)}
391
+
392
  return {
393
  "status": "healthy" if app_state.embedding_service is not None else "unhealthy",
394
+ "openai_client": openai_health,
395
  "qdrant": qdrant_status,
396
  "embedding_service": embedding_health,
397
  "collection": Config.COLLECTION_NAME,
 
413
  raise HTTPException(status_code=400, detail="No user message found")
414
 
415
  last_user_message = user_messages[-1].content
416
+ print(f"Processing query: {last_user_message[:100]}...")
417
 
418
  # Retrieve relevant chunks
419
+ try:
420
+ relevant_chunks = await RAGService.retrieve_relevant_chunks(last_user_message)
421
+ print(f"Retrieved {len(relevant_chunks)} chunks")
422
+ except Exception as e:
423
+ print(f"Error in retrieval: {e}")
424
+ relevant_chunks = []
425
 
426
  # Build context-aware prompt
427
  if relevant_chunks:
428
  context_prompt = RAGService.build_context_prompt(last_user_message, relevant_chunks)
 
 
429
  enhanced_messages = request.messages[:-1] + [Message(role="user", content=context_prompt)]
430
+ print("Using context-enhanced prompt")
431
  else:
432
  enhanced_messages = request.messages
433
+ print("Using original prompt (no context)")
434
 
435
  # Convert to OpenAI format
436
  openai_messages = [{"role": msg.role, "content": msg.content} for msg in enhanced_messages]
437
+ print(f"Sending {len(openai_messages)} messages to OpenAI API")
438
 
439
  if request.stream:
440
  return StreamingResponse(
 
444
  else:
445
  return await create_chat_completion(openai_messages, request)
446
 
447
+ except HTTPException:
448
+ raise
449
  except Exception as e:
450
+ print(f"Unexpected error in chat_completions: {e}")
451
+ print(f"Error type: {type(e)}")
452
+ import traceback
453
+ traceback.print_exc()
454
  raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
455
 
456
  async def create_chat_completion(messages: List[Dict], request: ChatCompletionRequest) -> ChatCompletionResponse:
457
  """Create a non-streaming chat completion"""
458
  try:
459
+ print(f"Calling OpenAI API with model: {request.model}")
460
+ print(f"Messages count: {len(messages)}")
461
+ print(f"Max tokens: {request.max_tokens}")
462
+
463
  response = await app_state.openai_client.chat.completions.create(
464
  model=request.model,
465
  messages=messages,
 
469
  stream=False
470
  )
471
 
472
+ print(f"Received response from OpenAI API")
473
+ print(f"Response ID: {response.id}")
474
+ print(f"Response model: {response.model}")
475
+ print(f"Choices count: {len(response.choices)}")
476
+
477
  # Convert response to OpenAI format (already compatible)
478
+ result = ChatCompletionResponse(
479
  id=response.id,
480
  created=response.created,
481
  model=response.model,
 
494
  } if response.usage else None
495
  )
496
 
497
+ print(f"Successfully created response")
498
+ return result
499
+
500
  except Exception as e:
501
+ print(f"Error in create_chat_completion: {e}")
502
+ print(f"Error type: {type(e)}")
503
+ import traceback
504
+ traceback.print_exc()
505
  raise HTTPException(status_code=500, detail=f"Error calling OpenAI API: {str(e)}")
506
 
507
  async def stream_chat_completion(messages: List[Dict], request: ChatCompletionRequest) -> AsyncGenerator[str, None]: