bpom text generation

This commit is contained in:
bladeclara42
2025-11-09 10:32:35 +07:00
parent c40cc5d2a2
commit f23733f78b
4 changed files with 104 additions and 0 deletions

View 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

View File

@@ -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"])

View File

@@ -0,0 +1,5 @@
class BPOMMobileResponseTextGenerationRequest(BaseModel):
text: str
class BPOMMobileResponseTextGenerationRequest(BaseModel):
generated_text: str

View 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)