# import os # import json # from fastapi import APIRouter, HTTPException # from fastapi.responses import StreamingResponse # import openai # from typing import List # from ....schemas.chat import Message, ChatRequest # from ....core.config import settings # router = APIRouter(prefix="/chat", tags=["chat"]) # # Initialize OpenAI client using the same settings as other working endpoints # client = openai.OpenAI(api_key=settings.OPENAI_API_KEY) # async def stream_text(messages: List[Message]): # try: # formatted_messages = ( # [ # { # "role": "system", # "content": """You are an AI learning assistant for PlayGo AI, # an educational platform. Your goal is to help students learn and understand various # subjects. Provide clear, concise, and accurate explanations.""", # }, # ] # + [{"role": msg.role, "content": msg.content} for msg in messages] # ) # stream = client.chat.completions.create( # model="gpt-3.5-turbo", # messages=formatted_messages, # temperature=0.7, # stream=True, # ) # for chunk in stream: # for choice in chunk.choices: # if choice.finish_reason == "stop": # continue # else: # yield "0:{text}\n".format(text=json.dumps(choice.delta.content)) # if chunk.choices == []: # usage = chunk.usage # prompt_tokens = usage.prompt_tokens # completion_tokens = usage.completion_tokens # yield 'd:{{"finishReason":"{reason}","usage":{{"promptTokens":{prompt},"completionTokens":{completion}}}}}\n'.format( # reason="stop", prompt=prompt_tokens, completion=completion_tokens # ) # except Exception as e: # print(f"Error in stream_text: {str(e)}") # yield f"Error: {str(e)}".encode("utf-8") # @router.post("/stream") # async def chat_stream(request: ChatRequest): # response = StreamingResponse( # stream_text(request.messages), # ) # response.headers["x-vercel-ai-data-stream"] = "v1" # return response # @router.get("/test") # async def test_chat(): # return {"message": "Chat endpoint is working!"} # @router.get("/test-simple") # async def test_simple_chat(): # """Test simple chat completion without streaming - same as working repo""" # try: # response = client.chat.completions.create( # model="gpt-3.5-turbo", # messages=[ # { # "role": "user", # "content": "Say 'Hello from simple chat!' in exactly those words.", # } # ], # max_tokens=20, # ) # return { # "status": "success", # "message": "Simple chat works!", # "response": response.choices[0].message.content, # "model": response.model, # } # except Exception as e: # return { # "status": "error", # "message": f"Simple chat failed: {str(e)}", # "error_type": type(e).__name__, # }