from fastapi import FastAPI, Request from pydantic import BaseModel from fastapi.middleware.cors import CORSMiddleware from g4f.client import Client from fastapi.responses import StreamingResponse # Initialize the AI client client = Client() # FastAPI app app = FastAPI() # CORS Middleware (so JS from browser can access it too) app.add_middleware( CORSMiddleware, allow_origins=["*"], # Change "*" to your frontend URL for better security allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Request body model class Question(BaseModel): question: str async def generate_response_chunks(prompt: str): try: response = client.chat.completions.create( model="gpt-4o-mini", # Use a supported model messages=[ {"role": "user", "content": prompt}, {"role": "system", "content": "You are a Orion AI assistant created by abdullah ali who is very intelegent and he is 13 years old and live in lahore."} ], stream=True # Enable streaming ) for part in response: content = part.choices[0].delta.content if content: yield content except Exception as e: yield f"Error occurred: {e}" @app.post("/ask") async def ask(question: Question): return StreamingResponse( generate_response_chunks(question.question), media_type="text/plain" )