Cara Menguji Aplikasi LLM: Panduan Lengkap Promptfoo (2026)

Ashley Innocent

Ashley Innocent

19 March 2026

Cara Menguji Aplikasi LLM: Panduan Lengkap Promptfoo (2026)

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

TL;DR

Promptfoo adalah kerangka kerja evaluasi dan red-teaming LLM sumber terbuka yang membantu pengembang menguji aplikasi AI secara sistematis. Ini mendukung 90+ penyedia model, menawarkan 67+ plugin serangan keamanan, dan berjalan 100% secara lokal untuk privasi. Dengan 1,6 juta unduhan npm dan penggunaan produksi di perusahaan yang melayani 10 juta+ pengguna, ini telah menjadi standar untuk pengujian LLM. Mulailah dengan npm install -g promptfoo dan promptfoo init --example getting-started.

Pendahuluan

Anda menghabiskan berminggu-minggu membangun chatbot dukungan pelanggan bertenaga AI Anda. Ia menjawab pertanyaan dengan sempurna selama pengembangan. Kemudian pengguna mulai menemukan cara untuk membuatnya membocorkan data sensitif, melewati batasan keamanan, dan memberikan respons yang tidak konsisten.

Skenario ini terjadi setiap hari. Tim meluncurkan aplikasi LLM berdasarkan firasat dan pengujian manual, hanya untuk menemukan kerentanan dan masalah kualitas dalam produksi. Biaya untuk memperbaiki masalah ini setelah peluncuran 100x lebih tinggi daripada menangkapnya selama pengembangan.

Promptfoo menyelesaikannya dengan membawa pengujian otomatis yang sistematis ke aplikasi LLM. Ini memungkinkan Anda mengevaluasi prompt di berbagai model, menjalankan penilaian tim merah keamanan, dan menangkap regresi sebelum mencapai pengguna.

Saya telah menganalisis basis kode promptfoo (versi 0.121.2) dan menguji fitur-fitur intinya untuk menyajikan panduan komprehensif ini kepada Anda. Anda akan belajar cara menyiapkan evaluasi, menjalankan pemindaian keamanan, berintegrasi dengan CI/CD, dan menghindari kesalahan umum.

Pada akhirnya, Anda akan memiliki rangkaian pengujian yang berfungsi untuk aplikasi LLM Anda dan tahu cara meluncurkannya dengan percaya diri.

💡
Jika Anda bekerja dengan pengujian API atau perlu memvalidasi perilaku API bersama pengujian LLM Anda, Apidog menyediakan platform terpadu untuk desain, pengujian, dan dokumentasi API. Anda dapat menggunakan kedua alat ini bersama-sama: promptfoo untuk evaluasi LLM dan Apidog untuk validasi lapisan API.
tombol

Apa Itu Promptfoo dan Mengapa Anda Membutuhkannya

Promptfoo adalah alat baris perintah dan pustaka Node.js untuk mengevaluasi dan melakukan red-teaming pada aplikasi LLM. Anggap saja sebagai kerangka kerja pengujian yang dibangun khusus untuk keanehan pengembangan AI.

Alat pengujian tradisional gagal dengan LLM karena outputnya non-deterministik. Anda tidak dapat menegaskan kecocokan string yang persis ketika prompt yang sama menghasilkan respons yang berbeda setiap saat. Promptfoo memecahkan masalah ini dengan:

Alat ini berjalan secara lokal di mesin Anda. Prompt dan data pengujian Anda tidak pernah meninggalkan lingkungan Anda kecuali Anda memilih fitur cloud. Desain yang mengutamakan privasi ini membuatnya cocok untuk pengujian dengan data sensitif.

Masalah yang Dipecahkan Promptfoo

Sebagian besar tim menguji aplikasi LLM secara manual. Mereka mengirim beberapa prompt, membaca output, dan memutuskan apakah semuanya terlihat baik. Pendekatan ini memiliki tiga kelemahan fatal:

  1. Tidak ada deteksi regresi - Anda tidak dapat mengetahui apakah pembaruan model merusak fungsionalitas yang ada
  2. Celah cakupan - Pengujian manual melewatkan kasus tepi dan input yang merugikan
  3. Tidak ada metrik - Anda tidak dapat melacak peningkatan atau membandingkan model secara objektif

Promptfoo menggantinya dengan evaluasi otomatis yang berjalan di setiap perubahan. Anda mendefinisikan kasus uji sekali dan menjalankannya terhadap model apa pun. Hasilnya meliputi tingkat keberhasilan/kegagalan, perbandingan biaya, dan metrik latensi.

Siapa yang Menggunakan Promptfoo

Proyek ini memiliki 1,6 juta unduhan npm dan menggerakkan aplikasi LLM yang melayani lebih dari 10 juta pengguna akhir. Perusahaan menggunakannya untuk:

Pada Maret 2026, Promptfoo bergabung dengan OpenAI. Proyek ini tetap sumber terbuka dan berlisensi MIT, dengan pengembangan berkelanjutan di bawah kepemilikan baru.

Memulai: Instal dan Jalankan Evaluasi Pertama Anda

Anda dapat menginstal promptfoo secara global atau menjalankannya tanpa instalasi menggunakan npx.

Instalasi

# Instalasi global (disarankan)
npm install -g promptfoo

# Atau jalankan tanpa menginstal
npx promptfoo@latest

# Pengguna macOS juga bisa menggunakan Homebrew
brew install promptfoo

# Pengguna Python juga bisa menggunakan pip
pip install promptfoo

Atur kunci API Anda sebagai variabel lingkungan:

export OPENAI_API_KEY=sk-abc123
export ANTHROPIC_API_KEY=sk-ant-xxx

Buat Evaluasi Pertama Anda

Inisialisasi proyek contoh:

promptfoo init --example getting-started
cd getting-started

Ini membuat file promptfooconfig.yaml dengan contoh prompt, penyedia, dan kasus uji.

Jalankan evaluasi:

promptfoo eval

Lihat hasil di UI web:

promptfoo view

UI terbuka di localhost:3000 dan menunjukkan perbandingan berdampingan output dari setiap model, dengan status lulus/gagal untuk setiap penegasan.

Memahami File Konfigurasi

File promptfooconfig.yaml mendefinisikan rangkaian evaluasi Anda:

description: "Rangkaian Evaluasi Pertama Saya"

prompts:
  - prompts/greeting.txt
  - prompts/farewell.txt

providers:
  - openai:gpt-4o
  - anthropic:claude-sonnet-4-5

tests:
  - vars:
      input: "Hello"
    assert:
      - type: contains
        value: "Hi"
      - type: latency
        threshold: 3000

Anda dapat menskalakannya hingga ratusan kasus uji. Banyak tim menyimpan konfigurasi evaluasi dalam kontrol versi dan menjalankannya di CI pada setiap permintaan tarik.

Fitur Inti: Apa yang Dapat Dilakukan Promptfoo

1. Evaluasi Otomatis

Evaluasi otomatis adalah fondasi promptfoo. Anda mendefinisikan kasus uji dengan hasil yang diharapkan, dan alat ini menjalankannya terhadap model pilihan Anda.

Jenis Penegasan

Promptfoo menyertakan 30+ jenis penegasan bawaan:

Penegasan Tujuan
contains Output menyertakan substring
equals Kecocokan string yang tepat
regex Cocokkan dengan pola regex
json-schema Validasi struktur JSON
javascript Fungsi JS kustom mengembalikan lulus/gagal
python Fungsi Python kustom
llm-rubric Gunakan LLM untuk menilai output
similar Skor kesamaan semantik
latency Waktu respons di bawah ambang batas
cost Biaya per permintaan di bawah ambang batas

Contoh dengan beberapa penegasan:

tests:
  - vars:
      question: "What is the capital of France?"
    assert:
      - type: contains
        value: "Paris"
      - type: javascript
        value: output.length < 100
      - type: latency
        threshold: 2000
      - type: cost
        threshold: 0.001

Pengujian ini memeriksa bahwa jawaban menyebutkan Paris, tetap di bawah 100 karakter, merespons dalam waktu kurang dari 2 detik, dan biayanya kurang dari $0,001.

Evaluasi Berbasis LLM

Penegasan llm-rubric menggunakan satu LLM untuk menilai output LLM lain. Ini sangat berguna untuk kriteria subjektif seperti nada atau kebermanfaatan:

assert:
  - type: llm-rubric
    value: "Response should be helpful, harmless, and honest"

LLM penilai membaca output dan menilainya berdasarkan rubrik Anda. Anda dapat menggunakan model yang lebih murah untuk penilaian guna mengurangi biaya.

2. Red Teaming dan Pengujian Keamanan

Promptfoo menyertakan pengujian keamanan komprehensif melalui modul tim merahnya. Ini secara otomatis menghasilkan input yang merugikan untuk mencari kerentanan.

Vektor Serangan yang Didukung

Sistem tim merah mencakup 67+ plugin yang diatur berdasarkan kategori:

Kategori Apa yang Diujinya
Injeksi Prompt Serangan injeksi langsung, tidak langsung, dan konteks
Jailbreak DAN, penggantian persona, bypass role-play
Eksfiltrasi Data SSRF, ekstraksi prompt sistem, kebocoran prompt
Konten Berbahaya Ujaran kebencian, aktivitas berbahaya, permintaan melukai diri sendiri
Kepatuhan Kebocoran PII, pelanggaran HIPAA, paparan data keuangan
Audio/Visual Injeksi audio dan serangan berbasis gambar

Menjalankan Pemindaian Tim Merah

Inisialisasi konfigurasi tim merah:

promptfoo redteam init

Jalankan pemindaian keamanan:

promptfoo redteam run

Lihat laporan:

promptfoo redteam report [directory]

Perintah redteam run melakukan dua langkah:

  1. Menghasilkan probe serangan dinamis yang disesuaikan dengan aplikasi Anda
  2. Mengevaluasi probe terhadap target Anda dan menilai kerentanan

Hasilnya mencakup peringkat keparahan (Kritis, Tinggi, Sedang, Rendah), kasus uji yang dapat dieksploitasi, dan rekomendasi perbaikan.

Contoh Output Tim Merah

Vulnerability Summary:
- Kritis: 2 (kebocoran PII, ekstraksi prompt)
- Tinggi: 5 (jailbreak, serangan injeksi)
- Sedang: 12 (bias, respons tidak konsisten)
- Rendah: 23 (pelanggaran kebijakan minor)

Perbaiki masalah kritis sebelum deployment. Jalankan ulang pemindaian setelah perubahan untuk memverifikasi perbaikan.

3. Pemindaian Kode untuk Permintaan Tarik

Promptfoo berintegrasi dengan GitHub Actions untuk memindai permintaan tarik (pull requests) guna mencari masalah keamanan terkait LLM.

# .github/workflows/promptfoo-scan.yml
name: Promptfoo Code Scan
on: [pull_request]
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '22'
      - run: npm install -g promptfoo
      - run: promptfoo eval -c promptfooconfig.yaml
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

Ini menangkap:

4. Perbandingan Model

Bandingkan output dari beberapa model secara berdampingan untuk memilih yang terbaik untuk kasus penggunaan Anda.

# Jalankan evaluasi dengan beberapa penyedia
promptfoo eval

# Lihat perbandingan di UI web
promptfoo view

UI web menampilkan:

Pendekatan berbasis data ini mencegah bias terhadap model yang dikenal. Anda mungkin menemukan bahwa model yang lebih murah mengungguli GPT-4 pada evaluasi spesifik Anda.

Penyedia yang Didukung: 90+ Integrasi LLM

Promptfoo mendukung lebih dari 90 penyedia LLM secara langsung. Anda dapat menguji prompt yang sama di seluruh OpenAI, Anthropic, Google, Amazon, dan model lokal tanpa mengubah kode Anda.

Penyedia Utama

Penyedia Model
OpenAI GPT-4, GPT-4o, GPT-4o-mini, o1, o3
Anthropic Claude 3.5/3.7/4.5/4.6, Model pemikiran
Google Gemini 1.5/2.0, Vertex AI
Microsoft Azure OpenAI, Phi
Amazon Bedrock (Claude, Llama, Titan)
Meta Llama 3, 3.1, 3.2 (melalui beberapa penyedia)
Ollama Model lokal (Llama, Mistral, Phi)

Penyedia Kustom

Anda dapat menulis penyedia kustom dalam Python atau JavaScript jika model Anda tidak didukung.

Contoh Python:

# custom_provider.py
from typing import Any

class CustomProvider:
    async def call_api(self, prompt: str, options: dict, context: dict) -> dict:
        response = await my_async_api.generate(prompt)
        return {
            "output": response.text,
            "tokenUsage": {
                "total": response.usage.total_tokens,
                "prompt": response.usage.prompt_tokens,
                "completion": response.usage.completion_tokens
            }
        }

Contoh JavaScript:

// customProvider.js
export default class CustomProvider {
  async callApi(prompt) {
    return {
      output: await myApi.generate(prompt),
      tokenUsage: { total: 50, prompt: 20, completion: 30 }
    };
  }
}

Daftarkan penyedia kustom di konfigurasi Anda:

providers:
  - id: file://custom_provider.py
    config:
      api_key: ${MY_API_KEY}

Antarmuka Baris Perintah: Perintah Penting

CLI Promptfoo menyediakan semua fungsionalitas yang Anda butuhkan untuk alur kerja harian.

Perintah Inti

# Jalankan evaluasi
promptfoo eval -c promptfooconfig.yaml

# Buka UI web
promptfoo view

# Bagikan hasil secara online
promptfoo share

# Pengujian tim merah
promptfoo redteam init
promptfoo redteam run

# Konfigurasi
promptfoo init
promptfoo validate [config]

# Manajemen hasil
promptfoo list
promptfoo show <id>
promptfoo delete <id>
promptfoo export <id>

# Utilitas
promptfoo cache clear
promptfoo retry <id>

Bendera Berguna

--no-cache              # Nonaktifkan caching untuk hasil baru
--max-concurrency <n>   # Batasi panggilan API paralel
--output <file>         # Tulis hasil ke file JSON
--verbose               # Aktifkan pencatatan debug
--env-file <path>       # Muat variabel lingkungan dari file
--filter <pattern>      # Jalankan kasus uji tertentu

Contoh: Jalankan Evaluasi dengan Pengaturan Kustom

promptfoo eval \
  -c promptfooconfig.yaml \
  --no-cache \
  --max-concurrency 3 \
  --output results.json \
  --env-file .env

Ini menjalankan evaluasi baru (tanpa cache), membatasi konkurensi menjadi 3 panggilan paralel, menyimpan hasil ke JSON, dan memuat kunci API dari .env.

Integrasi CI/CD: Otomatisasi Pengujian LLM

Integrasikan promptfoo ke dalam pipeline CI/CD Anda untuk menangkap regresi sebelum deployment.

Contoh GitHub Actions

# .github/workflows/promptfoo-scan.yml
name: Promptfoo Code Scan
on: [push, pull_request]
jobs:
  eval:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '22'
      - run: npm install -g promptfoo
      - run: promptfoo eval -c promptfooconfig.yaml
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

Gerbang Kualitas

Atur ambang batas lulus/gagal di konfigurasi Anda:

commandLineOptions:
  threshold: 0.8  # Membutuhkan tingkat lulus 80%

Ini akan menyebabkan CI gagal jika evaluasi tidak memenuhi ambang batas, mencegah regresi digabungkan.

Caching di CI

Aktifkan caching untuk mempercepat eksekusi CI:

- uses: actions/cache@v4
  with:
    path: ~/.cache/promptfoo
    key: ${{ runner.os }}-promptfoo-${{ hashFiles('promptfooconfig.yaml') }}

Hasil cache melewati panggilan API untuk pengujian yang tidak berubah, mengurangi waktu dan biaya CI.

UI Web: Visualisasikan dan Bagikan Hasil

UI web bawaan (promptfoo view) menyediakan antarmuka interaktif untuk meninjau evaluasi.

Fitur

Akses dan Keamanan

UI berjalan di localhost:3000 secara default. Ini menyertakan perlindungan CSRF menggunakan header Sec-Fetch-Site dan Origin untuk memblokir permintaan lintas situs dari asal yang tidak tepercaya.

Jangan mengekspos server web lokal ke jaringan yang tidak tepercaya. Untuk akses tim, gunakan perintah promptfoo share untuk mengunggah hasil ke cloud, atau self-host dengan otentikasi.

Basis Data dan Caching

Lokasi Cache

Cache menyimpan hasil evaluasi untuk mempercepat eksekusi berulang. Gunakan --no-cache selama pengembangan untuk memastikan hasil yang baru.

Lokasi Basis Data

Basis data menyimpan riwayat eksekusi evaluasi untuk perbandingan dan analisis tren. Jangan hapus file ini kecuali Anda ingin kehilangan data historis.

Model Keamanan: Apa yang Bisa Anda Percayai

Promptfoo beroperasi pada model kepercayaan-berdasarkan-konfigurasi. Memahami ini mencegah kejutan keamanan.

Input Tepercaya (Diperlakukan sebagai Kode)

Input ini dieksekusi sebagai kode dan seharusnya hanya berasal dari sumber tepercaya:

Input Tidak Tepercaya (Hanya Data)

Input ini diperlakukan sebagai data dan seharusnya tidak memicu eksekusi kode:

Rekomendasi Pengerasan

Untuk lingkungan keamanan tinggi:

  1. Jalankan di dalam container atau VM dengan hak istimewa minimal
  2. Gunakan kunci API khusus dengan hak istimewa paling rendah
  3. Hindari menempatkan rahasia di prompt atau file konfigurasi
  4. Batasi keluar jaringan untuk kode pihak ketiga
  5. Jangan mengekspos server web lokal ke jaringan yang tidak tepercaya

Kinerja: Optimalkan Evaluasi Anda

Tip Optimasi

  1. Gunakan caching - Perilaku default mempercepat eksekusi berulang
  2. Sesuaikan konkurensi - --max-concurrency menyeimbangkan kecepatan vs. batas tingkat
  3. Filter tes - Gunakan --filter untuk menjalankan kasus uji tertentu selama pengembangan
  4. Sampel dataset - Gunakan --repeat dengan subset untuk iterasi sebelum eksekusi penuh

Skalakan untuk Evaluasi Besar

Untuk evaluasi skala besar dengan ribuan kasus uji:

Ekstensibilitas: Bangun Fitur Kustom

Penegasan Kustom

Tulis penegasan kustom untuk pemeriksaan spesifik domain:

// assertions/customCheck.js
export default function customCheck(output, context) {
  const pass = output.includes('expected');
  return {
    pass,
    score: pass ? 1 : 0,
    reason: pass ? 'Output matched' : 'Missing expected content'
  };
}

Gunakan di konfigurasi Anda:

assert:
  - type: file://assertions/customCheck.js

Server MCP

Promptfoo menyertakan server Model Context Protocol (MCP) untuk integrasi dengan asisten AI seperti Claude Code:

promptfoo mcp

Ini memungkinkan agen AI untuk:

Kasus Penggunaan Dunia Nyata

Chatbot Dukungan Pelanggan

Sebuah perusahaan SaaS menggunakan promptfoo untuk menguji chatbot dukungan mereka sebelum setiap deployment:

Hasil: Pengurangan 90% masalah yang dilaporkan pelanggan setelah menerapkan evaluasi otomatis.

Pipeline Pembuatan Konten

Sebuah tim pemasaran memvalidasi konten yang dihasilkan AI untuk suara merek:

Hasil: Suara merek yang konsisten di semua konten dengan biaya API 40% lebih rendah.

Aplikasi Kesehatan

Sebuah startup teknologi kesehatan memastikan kepatuhan dengan pengujian ketat:

Hasil: Lulus audit SOC 2 dengan evaluasi promptfoo sebagai bukti.

Kesimpulan

Promptfoo membawa pengujian sistematis ke aplikasi LLM. Ini menggantikan proses manual yang rawan kesalahan dengan evaluasi otomatis yang menangkap regresi, masalah keamanan, dan masalah kualitas sebelum deployment.

Poin-poin penting:

Masa depan pengembangan AI didorong oleh data. Dengan promptfoo, Anda memiliki alat untuk membangun, menguji, dan mengamankan aplikasi LLM dalam skala besar.

tombol

Jika Anda juga bekerja dengan API, pertimbangkan untuk menggunakan Apidog bersama promptfoo. Apidog menangani desain, pengujian, dan dokumentasi API, sementara promptfoo berfokus pada evaluasi LLM. Bersama-sama mereka mencakup seluruh tumpukan pengujian aplikasi modern.

FAQ

Untuk apa promptfoo digunakan?

Promptfoo digunakan untuk menguji dan mengevaluasi aplikasi LLM. Ini menjalankan tes otomatis terhadap prompt, membandingkan output di berbagai model, dan melakukan penilaian tim merah keamanan untuk menemukan kerentanan.

Apakah promptfoo gratis?

Ya, promptfoo adalah sumber terbuka dan berlisensi MIT. Anda dapat menggunakannya secara gratis untuk proyek pribadi dan komersial. Fitur cloud dan dukungan perusahaan mungkin memerlukan paket berbayar.

Bagaimana cara menginstal promptfoo?

Jalankan npm install -g promptfoo untuk instalasi global. Anda juga dapat menggunakan npx promptfoo@latest tanpa menginstal, atau menginstal melalui brew install promptfoo di macOS atau pip install promptfoo untuk Python.

Model apa saja yang didukung promptfoo?

Promptfoo mendukung 90+ penyedia LLM termasuk OpenAI (GPT-4, GPT-4o, o1), Anthropic (Claude 3.5/4/4.5), Google (Gemini), Microsoft (Azure OpenAI), Amazon Bedrock, dan model lokal melalui Ollama.

Bagaimana cara menjalankan pemindaian tim merah?

Jalankan promptfoo redteam init untuk membuat konfigurasi, lalu promptfoo redteam run untuk menjalankan pemindaian keamanan. Lihat hasilnya dengan promptfoo redteam report.

Bisakah saya menggunakan promptfoo di CI/CD?

Ya. Instal promptfoo di pipeline CI Anda dan jalankan promptfoo eval dengan file konfigurasi Anda. Atur gerbang kualitas dengan opsi threshold untuk membuat CI gagal jika evaluasi tidak memenuhi tingkat kelulusan.

Apakah promptfoo mengirim data saya ke server eksternal?

Tidak. Promptfoo berjalan 100% secara lokal secara default. Prompt dan data pengujian Anda tidak pernah meninggalkan mesin Anda kecuali Anda secara eksplisit memilih fitur cloud. File cache dan basis data disimpan secara lokal.

Bagaimana cara membandingkan model dengan promptfoo?

Cantumkan beberapa penyedia di file konfigurasi Anda, lalu jalankan promptfoo eval. Lihat perbandingannya di UI web dengan promptfoo view, yang menunjukkan tingkat lulus/gagal, biaya, dan latensi untuk setiap model.

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.