import os
import openai
from fastapi import FastAPI, HTTPException, APIRouter, Request
from fastapi.responses import StreamingResponse

app = FastAPI()

# Création du routeur
router = APIRouter()

# Initialise le client OpenAI en utilisant la clé API récupérée des variables d'environnement
openai.api_key = os.getenv("OPENAI_API_KEY")

@router.post("/openai_chat_stream")
async def openai_chat_stream(request: Request):
    input_data = await request.json()
    if 'message' not in input_data:
        raise HTTPException(status_code=400, detail="Invalid request data")

    user_message = input_data['message']

    def generate_responses():
        # Créer la complétion chat avec OpenAI en mode streaming
        with openai.Completion.create(
            model="gpt-3.5-turbo",
            messages=[{"role": "user", "content": user_message}],
            stream=True
        ) as completion:
            for message in completion:
                if 'choices' in message and message['choices'][0]['text']:
                    text = message['choices'][0]['text'].strip()
                    yield text + "\n"

    return StreamingResponse(generate_responses(), media_type="text/plain")

# Inclure le routeur dans l'application principale
app.include_router(router, prefix="/api")

if __name__ == "__main__":
    import uvicorn
    uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
# Utilise l'application Flask comme application WSGI
application = app
