Skip to main content
Panduan singkat untuk developer yang ingin mengubah tone, panjang narasi, atau struktur output AI.

Peta file

Mau ubah apaFile
System prompt enricher masterapps/api/src/generation/enrichers/ai-enricher.tsSYSTEM_PROMPT
Fokus grup per buktiapps/api/src/generation/document-definitions/master-definitions.tsenrichmentGroups
Prompt section trainerapps/api/src/generation/trainer-section-generator.service.tsbuildPrompt()
Prompt Classroom bukti-5apps/api/src/generation/composers/master/generate-classroom-assignment-content.ts
Branding knowledge & panduan dokumenapps/api/src/ai/prompts/branding-knowledge.ts
Chat interviewerapps/api/src/ai/prompts/interviewer.prompt.ts
Chat extractorapps/api/src/ai/prompts/extractor.prompt.ts
Field boleh/k tidak boleh AIexactFieldPaths / enrichableFieldPaths di definisi dokumen
Skeleton sebelum AIapps/api/src/generation/composers/master/compose-bukti-*.ts
Validasi outputapps/api/src/generation/schemas/

Versi prompt

Enricher menyimpan provenance:
PROMPT_VERSION = 'master-enricher-v3'
BRANDING_PROMPT_VERSION = 'branding-enricher-v1'
Naikkan versi saat mengubah system prompt agar bisa audit job lama di DB/logs.

Parameter model

ParameterNilai umumLokasi
Modeldeepseek-v4-flashAI_MODEL di .env
Temperature enricher~0.3–0.7ai-enricher.ts callAI()
Temperature section trainer0.3trainer-section-generator.service.ts
Max tokens section4000idem
Response format{ type: 'json_object' }DeepSeek native
Ganti model ke deepseek-v4-pro untuk kualitas lebih tinggi (biaya lebih).

Checklist setelah edit prompt

1

Tes lokal

./thub env merge
./thub dev
Generate satu dokumen yang terdampak (master bukti-1, trainer full set, atau branding LinkedIn).
2

Unit test terkait

cd apps/api && bun test src/generation/enrichers/
cd apps/api && bun test src/generation/composers/master/
3

Validasi payload

Pastikan output masih lolos Zod schema — enricher fallback jika parse gagal.
4

Deploy

./thub secrets push   # jika hanya prompt code, cukup deploy
./thub deploy

Menambah dokumen baru

  1. Buat composer + schema Zod
  2. registerDocument() di master-definitions.ts / trainer-definitions.ts / branding-definitions.ts
  3. Tambah route renderer di apps/renderer
  4. Jika aiMode: assist — definisikan enrichableFieldPaths + enrichmentGroups
  5. Update frontend catalog jika perlu (biasanya auto dari API)

Anti-patterns

Taruh di exactFieldPaths. AI hanya narasi.
Pakai enrichmentGroups seperti bukti-1 dan bukti-6.
Semua prompt server-side di apps/api.

Debug job gagal

  1. Cek status job di DB / UI sidebar “Generate Gagal”
  2. Log worker: generation-worker.service.ts
  3. Jika PAYLOAD_VALIDATION_FAILED — bandingkan output AI vs schema Zod
  4. Retry di UI memanggil handleGenerate() fresh (bukan reuse job input lama)