Spaces:
Runtime error
Runtime error
| from fastapi import FastAPI, HTTPException, Header | |
| from pydantic import BaseModel | |
| from typing import Optional | |
| import requests | |
| import os | |
| from dotenv import load_dotenv | |
| # .env dosyasını yükle | |
| load_dotenv() | |
| # API bilgileri | |
| API_URL = os.getenv("API_URL") | |
| API_KEY = os.getenv("API_KEY") | |
| # API anahtarlarını virgülle ayırarak al | |
| API_KEYS = os.getenv("API_KEYS").split(',') | |
| app = FastAPI() | |
| class Message(BaseModel): | |
| user_input: str | |
| selected_model: str | |
| api_key: str | |
| async def chat(message: Message, authorization: str = Header(None)): | |
| # API anahtarının geçerli olup olmadığını kontrol et | |
| if message.api_key not in API_KEYS: | |
| raise HTTPException(status_code=403, detail="Invalid API key") | |
| # API URL ve anahtar ayarla | |
| api_url = API_URL | |
| api_key = API_KEY | |
| # Modeli seç | |
| selected_model = message.selected_model | |
| if selected_model not in ["claude-3-haiku", "gpt-4o-mini", "llama", "mixtral"]: | |
| raise HTTPException(status_code=400, detail="Invalid model selected") | |
| # Kullanıcı mesajını API'ye gönder | |
| response = requests.post( | |
| api_url, | |
| headers={"Authorization": f"Bearer {api_key}"}, | |
| json={ | |
| "model": selected_model, | |
| "messages": [{"role": "user", "content": message.user_input}] | |
| } | |
| ) | |
| # Yanıtı işleme | |
| if response.status_code == 200: | |
| data = response.json() | |
| bot_response = data['choices'][0]['message']['content'] | |
| # Model adı ile yanıt döndürme | |
| return { | |
| "model": selected_model, | |
| "response": bot_response | |
| } | |
| else: | |
| raise HTTPException(status_code=response.status_code, detail="API request failed") | |