Utiric commited on
Commit
2ec7d5b
·
1 Parent(s): e62e828
Files changed (1) hide show
  1. app.py +94 -0
app.py ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, request, jsonify, render_template_string
2
+ from detoxify import Detoxify
3
+ import os
4
+
5
+ # Flask uygulamasını başlat
6
+ app = Flask(__name__)
7
+
8
+ # Detoxify Multilingual modelini yükle
9
+ model = Detoxify('multilingual')
10
+
11
+ # API anahtarını environment variable'dan al
12
+ API_KEY = os.getenv('API_KEY')
13
+
14
+ # Test arayüzü için HTML şablonu
15
+ HTML_TEMPLATE = '''
16
+ <!DOCTYPE html>
17
+ <html lang="en">
18
+ <head>
19
+ <meta charset="UTF-8">
20
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
21
+ <title>Detoxify API Test</title>
22
+ </head>
23
+ <body>
24
+ <h1>Detoxify Multilingual API Test</h1>
25
+ <form id="testForm">
26
+ <label for="api_key">API Key:</label>
27
+ <input type="text" id="api_key" name="api_key" required><br><br>
28
+ <label for="text">Analiz Edilecek Metin:</label>
29
+ <input type="text" id="text" name="text" required><br><br>
30
+ <button type="submit">Analiz Et</button>
31
+ </form>
32
+ <div id="results"></div>
33
+ <script>
34
+ document.getElementById('testForm').addEventListener('submit', function(event) {
35
+ event.preventDefault();
36
+ const apiKey = document.getElementById('api_key').value;
37
+ const text = document.getElementById('text').value;
38
+ fetch('/predict', {
39
+ method: 'POST',
40
+ headers: {
41
+ 'Content-Type': 'application/json'
42
+ },
43
+ body: JSON.stringify({api_key: apiKey, texts: [text]})
44
+ })
45
+ .then(response => response.json())
46
+ .then(data => {
47
+ const resultsDiv = document.getElementById('results');
48
+ if (data.error) {
49
+ resultsDiv.innerHTML = `<p style="color:red;">Hata: ${data.error}</p>`;
50
+ } else {
51
+ let html = '<h2>Sonuçlar:</h2>';
52
+ for (const [key, value] of Object.entries(data)) {
53
+ html += `<p>${key}: ${value[0].toFixed(5)}</p>`;
54
+ }
55
+ resultsDiv.innerHTML = html;
56
+ }
57
+ })
58
+ .catch(error => {
59
+ console.error('Hata:', error);
60
+ });
61
+ });
62
+ </script>
63
+ </body>
64
+ </html>
65
+ '''
66
+
67
+ # Ana sayfa route'u
68
+ @app.route('/')
69
+ def home():
70
+ return render_template_string(HTML_TEMPLATE)
71
+
72
+ # API endpoint'i
73
+ @app.route('/predict', methods=['POST'])
74
+ def predict():
75
+ # İstekten JSON verisini al
76
+ data = request.get_json()
77
+ api_key = data.get('api_key')
78
+ texts = data.get('texts')
79
+
80
+ # API anahtarını kontrol et
81
+ if api_key != API_KEY:
82
+ return jsonify({"error": "Geçersiz API anahtarı"}), 401
83
+
84
+ # Girişin geçerli olduğunu kontrol et
85
+ if not texts or not isinstance(texts, list):
86
+ return jsonify({"error": "Geçersiz giriş, metin listesi bekleniyor"}), 400
87
+
88
+ # Detoxify modeliyle tahmin yap
89
+ results = model.predict(texts)
90
+ return jsonify(results)
91
+
92
+ # Sunucuyu çalıştır (HuggingFace Spaces'de bu satır otomatik işlenir)
93
+ if __name__ == '__main__':
94
+ app.run(debug=True)