-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
95 lines (78 loc) · 3.51 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import os
import csv
from flask import Flask, request, jsonify
from groq import Groq, APIError
from dotenv import load_dotenv
import requests # Import requests for general exception handling
# Load environment variables from .env file
load_dotenv()
# Initialize Flask app
app = Flask(__name__)
# Konfigurasi API Key Groq dari environment variables
api_key = os.getenv("GROQ_API_KEY")
if not api_key:
raise EnvironmentError("GROQ_API_KEY environment variable is not set.")
# Menggunakan 'Groq' untuk instansiasi klien API
client = Groq(api_key=api_key) # Menggunakan 'Groq' jika 'Client' tidak tersedia
# Membaca file CSV dan memuat data ke dalam dictionary
def load_hukum_data(file_path):
hukum_data = {}
with open(file_path, mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
pasal = row['pasal'].strip()
deskripsi = row['deskripsi'].strip()
hukum_data[pasal] = deskripsi
return hukum_data
# Format data menjadi string
def format_hukum_data(hukum_data):
formatted_data = []
for pasal, deskripsi in hukum_data.items():
formatted_data.append(f"Pasal {pasal}: {deskripsi}")
return "\n".join(formatted_data)
# Load hukum data from CSV file
hukum_data = load_hukum_data('hukum_data.csv')
hukum_knowledge = format_hukum_data(hukum_data)
@app.route("/generate", methods=["POST"])
def chat():
user_message = request.json.get("prompt", "").lower()
conversation = [
{
"role": "system",
"content": f"""
Kamu adalah "PasalPintarAi", AI yang hanya menjawab pertanyaan seputar pasal, hukum dan pemerintah.
Kamu tidak boleh memberikan jawaban tentang topik lain selain hukum dan pemerintah.
Jika pertanyaannya tidak terkait dengan pasal, hukum dan pemerintah, jawab dengan 'Pertanyaan ini tidak terkait dengan pasal, hukum dan pemerintah.'.
Berikut adalah beberapa pasal dan hukum yang dapat kamu gunakan:
{hukum_knowledge}
knowledge : Tim Developer PasalPintarAi adolah:
1. Alif Suryadi sebagai Machine Learning Engineer dan Backend Engineer. Fakta Menarik: Alif ahli dalam mengembangkan aplikasi semua platfrom.
2. Aldi Musneldi sebagai Frontend Engineer. Hanya manusia biasa, yang bisa bekerja keras :)
3. Hildiah Khairuniza Sebagai UI/UX Designer dan Support .Lebih diutamakan peran sebagai support
4. Dwi Andhara Valkyrie Sebagai UI/UX Designer dan Project Manager. Dia orang seorang wanita pekerja keras dan cantik
"""
},
{"role": "user", "content": user_message},
]
try:
response = client.chat.completions.create(
messages=conversation,
model="llama3-70b-8192", # Ganti dengan model yang sesuai jika perlu
temperature=0.5,
max_tokens=1024,
top_p=1,
stop=None,
stream=False,
)
response_content = response.choices[0].message.content.strip()
return jsonify({
"response": response_content
})
except APIError as e: # Gunakan APIError untuk penanganan kesalahan API
return jsonify({
"error": f"API request failed: {e.message}"
}), 400
except Exception as e:
return jsonify({"error": f"Terjadi kesalahan: {str(e)}"}), 500
if __name__ == "__main__":
app.run(host="0.0.0.0", port=int(os.getenv("PORT", 8080)))