ogaa12 commited on
Commit
abee3b5
·
verified ·
1 Parent(s): c8d901a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -41
app.py CHANGED
@@ -3,14 +3,16 @@ from pydantic import BaseModel
3
  from fastapi.middleware.cors import CORSMiddleware
4
  import os
5
  import google.generativeai as genai
6
-
7
  from typing import List, Optional
8
 
 
9
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
10
  model = genai.GenerativeModel("gemini-1.5-flash")
11
 
 
12
  app = FastAPI()
13
 
 
14
  app.add_middleware(
15
  CORSMiddleware,
16
  allow_origins=["*"],
@@ -19,66 +21,69 @@ app.add_middleware(
19
  allow_headers=["*"],
20
  )
21
 
 
22
  class PromptRequest(BaseModel):
23
  prompt: str
24
  max_new_tokens: int = 300
25
  temperature: float = 0.7
26
  history: Optional[List[str]] = []
27
 
 
28
  @app.post("/generate")
29
  async def generate_text(req: PromptRequest):
30
  try:
31
  system_prompt = """
32
- Anda adalah Vocaboost, asisten dari model LLaMA2 yang bertugas menyempurnakan hasil jawaban grammar.
33
- Tugas utama Anda adalah memperbaiki tata bahasa, menyempurnakan struktur kalimat, dan menerjemahkan jawaban dari model LLaMA ke dalam Bahasa Indonesia yang jelas, edukatif, dan mudah dipahami.
34
- Petunjuk penting:
35
- 1. Jangan mengubah maksud dari jawaban.
36
- 2. Jawaban akhir harus dalam Bahasa Indonesia.
37
- 3. Sertakan SATU contoh kalimat dalam Bahasa Inggris (jika relevan).
38
- 4. Jangan menjelaskan proses, cukup berikan jawaban yang sudah diperbaiki.
39
- """
40
 
41
- # Siapkan daftar pesan untuk Gemini
42
- messages = [
43
- {
44
- "role": "user",
45
- "parts": [{"text": f"<<SYS>>\n{system_prompt.strip()}\n<</SYS>>"}],
46
- },
47
- {
48
- "role": "model",
49
- "parts": [{"text": "Siap! Kirimkan jawaban dari LLaMA yang perlu diperbaiki."}],
50
- }
51
- ]
 
 
 
 
 
 
 
 
 
52
 
53
- # Tambahkan history bila ada
54
- for msg in req.history or []:
55
- role = "user" if msg.startswith("User:") else "model"
56
- text = msg.replace("User: ", "").replace("Bot: ", "")
57
  messages.append({
58
- "role": role,
59
- "parts": [{"text": text}]
60
  })
61
 
62
- # Tambahkan prompt terakhir dari LLaMA
63
- messages.append({
64
- "role": "user",
65
- "parts": [{"text": req.prompt}]
66
- })
67
-
68
- # Kirim ke Gemini
69
- result = model.generate_content(
70
- messages,
71
- generation_config={
72
- "temperature": req.temperature,
73
- "max_output_tokens": req.max_new_tokens,
74
- }
75
- )
76
 
77
- return {"generated_text": result.text}
78
 
79
  except Exception as e:
80
  raise HTTPException(status_code=500, detail=str(e))
81
 
 
82
  @app.get("/")
83
  async def root():
84
  return {"message": "Gemini endpoint aktif bro! 🚀"}
 
3
  from fastapi.middleware.cors import CORSMiddleware
4
  import os
5
  import google.generativeai as genai
 
6
  from typing import List, Optional
7
 
8
+ # Konfigurasi API Gemini
9
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
10
  model = genai.GenerativeModel("gemini-1.5-flash")
11
 
12
+ # Inisialisasi FastAPI
13
  app = FastAPI()
14
 
15
+ # Setup CORS
16
  app.add_middleware(
17
  CORSMiddleware,
18
  allow_origins=["*"],
 
21
  allow_headers=["*"],
22
  )
23
 
24
+ # Model request
25
  class PromptRequest(BaseModel):
26
  prompt: str
27
  max_new_tokens: int = 300
28
  temperature: float = 0.7
29
  history: Optional[List[str]] = []
30
 
31
+ # Endpoint untuk generate teks
32
  @app.post("/generate")
33
  async def generate_text(req: PromptRequest):
34
  try:
35
  system_prompt = """
36
+ Anda adalah Vocaboost, asisten dari model LLaMA2 yang bertugas menyempurnakan hasil jawaban grammar.
37
+ Tugas utama Anda adalah memperbaiki tata bahasa, menyempurnakan struktur kalimat, dan menerjemahkan jawaban dari model LLaMA ke dalam Bahasa Indonesia yang jelas, edukatif, dan mudah dipahami.
38
+ Petunjuk penting:
39
+ 1. Jangan mengubah maksud dari jawaban.
40
+ 2. Jawaban akhir harus dalam Bahasa Indonesia.
41
+ 3. Sertakan SATU contoh kalimat dalam Bahasa Inggris (jika relevan).
42
+ 4. Jangan menjelaskan proses, cukup berikan jawaban yang sudah diperbaiki.
43
+ """
44
 
45
+ # Siapkan daftar pesan untuk Gemini
46
+ messages = [
47
+ {
48
+ "role": "user",
49
+ "parts": [{"text": f"<<SYS>>\n{system_prompt.strip()}\n<</SYS>>"}],
50
+ },
51
+ {
52
+ "role": "model",
53
+ "parts": [{"text": "Siap! Kirimkan jawaban dari LLaMA yang perlu diperbaiki."}],
54
+ }
55
+ ]
56
+
57
+ # Tambahkan history jika ada
58
+ for msg in req.history or []:
59
+ role = "user" if msg.startswith("User:") else "model"
60
+ text = msg.replace("User: ", "").replace("Bot: ", "")
61
+ messages.append({
62
+ "role": role,
63
+ "parts": [{"text": text}]
64
+ })
65
 
66
+ # Tambahkan prompt terbaru
 
 
 
67
  messages.append({
68
+ "role": "user",
69
+ "parts": [{"text": req.prompt}]
70
  })
71
 
72
+ # Kirim ke Gemini
73
+ result = model.generate_content(
74
+ messages,
75
+ generation_config={
76
+ "temperature": req.temperature,
77
+ "max_output_tokens": req.max_new_tokens,
78
+ }
79
+ )
 
 
 
 
 
 
80
 
81
+ return {"generated_text": result.text}
82
 
83
  except Exception as e:
84
  raise HTTPException(status_code=500, detail=str(e))
85
 
86
+ # Root endpoint
87
  @app.get("/")
88
  async def root():
89
  return {"message": "Gemini endpoint aktif bro! 🚀"}