bpom text generation
This commit is contained in:
10
app/api/v1/text_generator.py
Normal file
10
app/api/v1/text_generator.py
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
from fastapi import APIRouter
|
||||||
|
from app.models.text_generation import BPOMMobileResponseTextGenerationRequest, BPOMMobileResponseTextGenerationResponse
|
||||||
|
from app.services.text_generation import generate_text
|
||||||
|
|
||||||
|
router = APIRouter()
|
||||||
|
|
||||||
|
@router.post("/", response_model=BPOMMobileResponseTextGenerationResponse)
|
||||||
|
async def text_generator(request: BPOMMobileResponseTextGenerationRequest):
|
||||||
|
text = await generate_text(request)
|
||||||
|
return text
|
||||||
@@ -9,3 +9,4 @@ app = FastAPI()
|
|||||||
app.include_router(translate.router, prefix="/api/v1/translate", tags=["translate"])
|
app.include_router(translate.router, prefix="/api/v1/translate", tags=["translate"])
|
||||||
app.include_router(voice.router, prefix="/api/v1/voice", tags=["voice"])
|
app.include_router(voice.router, prefix="/api/v1/voice", tags=["voice"])
|
||||||
app.include_router(lyric_romanji_translator.router, prefix="/api/v1/lyric_romanji_translator", tags=["lyric_romanji_translator"])
|
app.include_router(lyric_romanji_translator.router, prefix="/api/v1/lyric_romanji_translator", tags=["lyric_romanji_translator"])
|
||||||
|
app.include_router(text_generator.router, prefix="/api/v1/text_generator", tags=["text_generator"])
|
||||||
5
app/models/text_generation.py
Normal file
5
app/models/text_generation.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
class BPOMMobileResponseTextGenerationRequest(BaseModel):
|
||||||
|
text: str
|
||||||
|
|
||||||
|
class BPOMMobileResponseTextGenerationRequest(BaseModel):
|
||||||
|
generated_text: str
|
||||||
88
app/services/text_generation.py
Normal file
88
app/services/text_generation.py
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
import os
|
||||||
|
import asyncio
|
||||||
|
from app.core.deepseek_client import chat_with_openai
|
||||||
|
from app.models.text_generation import BPOMMobileResponseTextGenerationRequest, BPOMMobileResponseTextGenerationResponse
|
||||||
|
|
||||||
|
async def generate_text(request: BPOMMobileResponseTextGenerationRequest) -> BPOMMobileResponseTextGenerationResponse:
|
||||||
|
messages = [
|
||||||
|
{"role": "system", "content": """
|
||||||
|
Anda adalah asisten virtual resmi BPOM (Badan Pengawas Obat dan Makanan) yang bertugas menanggapi keluhan dan review pengguna aplikasi BPOM Mobile.
|
||||||
|
|
||||||
|
Tugas Utama:
|
||||||
|
|
||||||
|
Merespons semua jenis review (negatif, positif, netral) dengan profesional dan empati
|
||||||
|
|
||||||
|
Fokus pada solusi dan bantuan teknis
|
||||||
|
|
||||||
|
Menjaga citra positif institusi BPOM
|
||||||
|
|
||||||
|
Panduan Respons:
|
||||||
|
|
||||||
|
Untuk keluhan teknis (scan error, akses lambat, dll):
|
||||||
|
|
||||||
|
Awali dengan permintaan maaf yang tulus
|
||||||
|
|
||||||
|
Sarankan update aplikasi ke versi terbaru
|
||||||
|
|
||||||
|
Informasikan perbaikan berkelanjutan
|
||||||
|
|
||||||
|
Sediakan kontak support: barcodebpom@pom.go.id
|
||||||
|
|
||||||
|
Untuk review positif:
|
||||||
|
|
||||||
|
Ucapkan terima kasih
|
||||||
|
|
||||||
|
Tegaskan komitmen untuk terus meningkatkan kualitas
|
||||||
|
|
||||||
|
Dorong untuk terus menggunakan aplikasi
|
||||||
|
|
||||||
|
Untuk review negatif dengan emosi tinggi:
|
||||||
|
|
||||||
|
Tunjukkan empati lebih dalam
|
||||||
|
|
||||||
|
Hindari jargon teknis
|
||||||
|
|
||||||
|
Berikan solusi alternatif (input manual nomor registrasi)
|
||||||
|
|
||||||
|
Tawarkan jalur eskalsi via email
|
||||||
|
|
||||||
|
Format Respons:
|
||||||
|
|
||||||
|
Gunakan sapaan "Sobat Cerdas BPOM"
|
||||||
|
|
||||||
|
Bahasa informal namun profesional
|
||||||
|
|
||||||
|
Maksimal 3-4 kalimat
|
||||||
|
|
||||||
|
Selalu sertakan opsi kontak support
|
||||||
|
|
||||||
|
Contoh Respons yang Diinginkan:
|
||||||
|
|
||||||
|
Untuk review negatif:
|
||||||
|
"Sobat Cerdas BPOM, mohon maaf atas kendala yang dialami. Tim kami terus melakukan perbaikan sistem. Untuk alternatif sementara, Sobat dapat memasukkan nomor registrasi secara manual. Jika kendala berlanjut, silakan hubungi barcodebpom@pom.go.id untuk bantuan lebih lanjut."
|
||||||
|
|
||||||
|
Untuk review positif:
|
||||||
|
"Terima kasih atas apresiasi dan masukannya, Sobat Cerdas BPOM! Semangat ini akan kami teruskan untuk memberikan pelayanan terbaik. Jangan ragu untuk memberikan saran pengembangan lainnya ya!"
|
||||||
|
|
||||||
|
Penyesuaian Dinamis:
|
||||||
|
|
||||||
|
Sesuaikan tingkat empati berdasarkan tingkat emosi review
|
||||||
|
|
||||||
|
Untuk review dengan emosi sangat tinggi, tambahkan kalimat penenang
|
||||||
|
|
||||||
|
Untuk masalah spesifik, berikan solusi yang lebih terarah
|
||||||
|
|
||||||
|
Batasan:
|
||||||
|
|
||||||
|
Tidak membuat janji perbaikan yang tidak dapat ditepati
|
||||||
|
|
||||||
|
Tidak menyalahkan pengguna
|
||||||
|
|
||||||
|
Tidak memberikan respons template yang sama persis
|
||||||
|
|
||||||
|
Menghindari istilah teknis yang rumit
|
||||||
|
"""},
|
||||||
|
{"role": "user", "content": request.text}
|
||||||
|
]
|
||||||
|
generated_text = await chat_with_openai(messages)
|
||||||
|
return BPOMMobileResponseTextGenerationResponse(generated_text=generated_text)
|
||||||
Reference in New Issue
Block a user