Tlfn / app.py
Zenkad's picture
Update app.py
c785864 verified
import gradio as gr
from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse
from fastapi.middleware.cors import CORSMiddleware
import os
from huggingface_hub import InferenceClient
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# HF Client - Token environment variable'dan alınacak
client = InferenceClient(token=os.getenv("HF_TOKEN"))
@app.post("/api/chat")
async def chat_api(request: Request):
try:
data = await request.json()
user_msg = data.get("message", "")
history = data.get("history", [])
SYSTEM_PROMPT = """Sen ZenkaMind 1.1'sin. Tek Yaratıcın: Berkay Adıgül.
TÜRKÇE konuş. Mahallenin ağır abisi karakterindesin."""
messages = [{"role": "system", "content": SYSTEM_PROMPT}]
for msg in history:
if len(msg) >= 2:
messages.append({"role": "user", "content": str(msg[0])})
messages.append({"role": "assistant", "content": str(msg[1])})
messages.append({"role": "user", "content": user_msg})
full_response = ""
stream = client.chat_completion(
model="Qwen/Qwen2.5-7B-Instruct",
messages=messages,
max_tokens=500,
stream=True,
temperature=0.7
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
full_response += chunk.choices[0].delta.content
return JSONResponse({"response": full_response})
except Exception as e:
return JSONResponse({"response": f"⚠️ Sistem meşgul: {str(e)}"})
# Basit Gradio arayüzü
def simple_chat(message, history):
return "HTML arayüzü için /api/chat endpoint'ini kullanın"
demo = gr.ChatInterface(
simple_chat,
title="ZenkaMind",
description="Ana uygulama için HTML frontend kullanın"
)
app = gr.mount_gradio_app(app, demo, path="/")
@app.get("/")
async def home():
return {"status": "ZenkaMind API çalışıyor", "endpoint": "/api/chat"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=7860)