DEV Community

Cover image for كيفية اختبار تطبيقات نماذج اللغة الكبيرة: دليل Promptfoo الكامل (2026)
Yusuf Khalidd
Yusuf Khalidd

Posted on • Originally published at apidog.com

كيفية اختبار تطبيقات نماذج اللغة الكبيرة: دليل Promptfoo الكامل (2026)

ملخص سريع (TL;DR)

Promptfoo هو إطار عمل مفتوح المصدر لتقييم واختبار نماذج اللغة الكبيرة (LLM) ضد الهجمات الأمنية (red-teaming)، ويوفر للمطورين طريقة منهجية لاختبار تطبيقات الذكاء الاصطناعي بشكل آلي وشامل. يدعم أكثر من 90 مزودًا للنماذج، ويوفر أكثر من 67 مكونًا إضافيًا لهجمات الأمان، ويعمل بشكل محلي بالكامل. مع أكثر من 1.6 مليون عملية تنزيل واستخدامه في الإنتاج لدى شركات كبرى، أصبح المعيار لاختبار LLMs. ابدأ على الفور:

npm install -g promptfoo
promptfoo init --example getting-started
Enter fullscreen mode Exit fullscreen mode

جرب Apidog اليوم

مقدمة

إذا كنت تطور روبوت دردشة أو تطبيقًا يعتمد على LLM، قد تبدو النتائج مثالية أثناء التطوير، لكن سرعان ما يكتشف المستخدمون ثغرات: تسريب بيانات، تجاوزات أمان، أو استجابات غير متسقة. الاعتماد على الاختبارات اليدوية والحدس غالبًا ما يؤدي لاكتشاف مشاكل بعد النشر، حيث تصبح معالجتها مكلفة ومعقدة.

Promptfoo يحل هذه المشكلة عبر اختبار مؤتمت ومنهجي لتطبيقات LLM. يمكنك إجراء تقييمات متعددة النماذج، وفحوصات أمان (red-team)، واكتشاف الانحدارات قبل وصولها للإنتاج.

في هذا الدليل العملي ستتعلم:

  • إعداد التقييمات وتشغيل الفحوصات الأمنية.
  • الدمج مع CI/CD.
  • تجنب الأخطاء الشائعة.
  • بناء مجموعة اختبارات عملية لتطبيقك.

💡إذا كنت تعمل مع اختبار واجهات برمجة التطبيقات (API testing) أو تحتاج إلى التحقق من سلوك واجهة برمجة التطبيقات جنبًا إلى جنب مع اختبارات نماذج اللغة الكبيرة الخاصة بك، فإن Apidog يوفر منصة موحدة لتصميم واجهات برمجة التطبيقات واختبارها وتوثيقها. يمكنك استخدام كلتا الأداتين معًا: Promptfoo لتقييم نماذج اللغة الكبيرة و Apidog للتحقق من طبقة واجهة برمجة التطبيقات.

ما هو Promptfoo ولماذا تحتاجه

Promptfoo هو أداة CLI ومكتبة Node.js تتيح تقييم واختبار تطبيقات LLM ضد سيناريوهات الأمان والهجمات. تم تصميمه خصيصًا للتعامل مع خصائص LLM المتغيرة وغير الحتمية.

مخطط يوضح كيف يعمل Promptfoo، مع مراحل الإدخال والاختبار والتقييم والإخراج.

بدلاً من الاعتماد على مطابقة السلاسل النصية فقط، يوفر Promptfoo:

  • تأكيدات دلالية: تحقق من المعنى وليس النص الحرفي.
  • تقييمات مصنفة بواسطة LLM: نموذج يقيّم مخرجات نموذج آخر.
  • مقارنة بين نماذج متعددة: نفس المطالبة على GPT-4، Claude، إلخ.
  • مكونات أمان إضافية: فحوصات تلقائية للثغرات.

كل شيء يعمل محليًا لضمان الخصوصية. فلا تخرج بياناتك إلا إذا اخترت ميزات سحابية.

المشكلة التي يحلها Promptfoo

الاختبار اليدوي لتطبيقات LLM يعجز عن:

  1. كشف الانحدارات: لا تكتشف كسر الوظائف بعد تحديث النماذج.
  2. الثغرات في التغطية: يفوت الحالات الهامشية والمدخلات العدائية.
  3. غياب المقاييس: لا توجد طريقة موضوعية للمقارنة أو التحسين.

Promptfoo يتيح تقييمًا مؤتمتًا مع كل تحديث، ويعطيك معدلات النجاح، التكلفة، وزمن الاستجابة.

من يستخدم Promptfoo

يخدم Promptfoo ملايين المستخدمين في روبوتات الدردشة، خطوط توليد المحتوى، تطبيقات الرعاية الصحية، والأنظمة المالية. في مارس 2026، انضم إلى OpenAI ويواصل التطوير كمشروع مفتوح المصدر.

البدء: تثبيت وتشغيل أول تقييم

التثبيت

اختر الطريقة الأنسب لنظامك:

# تثبيت عام (موصى به)
npm install -g promptfoo

# أو التشغيل بدون تثبيت
npx promptfoo@latest

# لمستخدمي macOS
brew install promptfoo

# أو بايثون
pip install promptfoo
Enter fullscreen mode Exit fullscreen mode

عيّن مفاتيح API كمتغيرات بيئة:

export OPENAI_API_KEY=sk-abc123
export ANTHROPIC_API_KEY=sk-ant-xxx
Enter fullscreen mode Exit fullscreen mode

إنشاء أول تقييم

تهيئة مشروع مثال:

promptfoo init --example getting-started
cd getting-started
Enter fullscreen mode Exit fullscreen mode

يشمل ملف promptfooconfig.yaml أمثلة للمطالبات والنماذج وحالات الاختبار.

لتشغيل التقييم:

promptfoo eval
Enter fullscreen mode Exit fullscreen mode

لعرض النتائج في واجهة المستخدم الويب:

promptfoo view
Enter fullscreen mode Exit fullscreen mode

واجهة المستخدم تظهر مقارنة مباشرة بين النماذج مع حالة النجاح/الفشل لكل تأكيد.

فهم ملف التكوين

ملف promptfooconfig.yaml يحدد كل شيء:

description: "My First Eval Suite"

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
Enter fullscreen mode Exit fullscreen mode
  • prompts: نصوص أو ملفات الاختبار.
  • providers: النماذج.
  • tests: حالات اختبار مع متغيرات وتأكيدات.

ضع الملف في نظام التحكم بالإصدار لتكرار التقييمات تلقائيًا مع كل تحديث.

الميزات الأساسية: ما يمكن أن يفعله Promptfoo

1. التقييمات المؤتمتة

حدد حالات الاختبار والنتائج المتوقعة، ودع الأداة تتولى التنفيذ.

أنواع التأكيدات

أكثر من 30 نوع تأكيد مدمج:

التأكيد الغرض
contains يتحقق من وجود نص معين
equals تطابق دقيق
regex مطابقة تعبير عادي
json-schema التحقق من بنية JSON
javascript دالة JS مخصصة
python دالة Python مخصصة
llm-rubric تقييم بواسطة LLM
similar تشابه دلالي
latency زمن الاستجابة
cost التكلفة

مثال عملي:

tests:
  - vars:
      question: "ما هي عاصمة فرنسا؟"
    assert:
      - type: contains
        value: "باريس"
      - type: javascript
        value: output.length < 100
      - type: latency
        threshold: 2000
      - type: cost
        threshold: 0.001
Enter fullscreen mode Exit fullscreen mode

التقييمات المصنفة بواسطة LLM (llm-rubric)

استخدم LLM لتقييم إجابة LLM آخر بناءً على معاييرك:

assert:
  - type: llm-rubric
    value: "يجب أن تكون الاستجابة مفيدة، غير ضارة، وصادقة"
Enter fullscreen mode Exit fullscreen mode

يمكنك استخدام نماذج أرخص للتقييم لتقليل التكاليف.

2. اختبار Red Teaming واختبار الأمان

Promptfoo يأتي بوحدة red team لفحص الثغرات تلقائيًا عبر إدخال مدخلات عدائية.

لقطة شاشة تعرض واجهة Promptfoo Red Teaming، تعرض تفاصيل أنواع الهجمات ونتائج الفحص.

متجهات الهجوم المدعومة

الفئة ماذا تختبر
Prompt Injection هجمات الحقن المباشر وغير المباشر
Jailbreaks تجاوزات الحماية وتغيير الشخصية
Data Exfiltration تسريب واستخراج البيانات
Harmful Content محتوى ضار أو غير قانوني
Compliance انتهاكات الخصوصية والقوانين
Audio/Visual هجمات صوتية أو مرئية

تشغيل فحص Red Team

تهيئة وتشغيل الفحص:

promptfoo redteam init
promptfoo redteam run
Enter fullscreen mode Exit fullscreen mode

لعرض التقرير:

promptfoo redteam report [directory]
Enter fullscreen mode Exit fullscreen mode

مثال ناتج:

ملخص الثغرات الأمنية:
- حرجة: 2 (تسريب معلومات تحديد الهوية الشخصية، استخراج المطالبة)
- عالية: 5 (كسر القيود، هجمات الحقن)
- متوسطة: 12 (تحيز، استجابات غير متسقة)
- منخفضة: 23 (انتهاكات بسيطة للسياسة)
Enter fullscreen mode Exit fullscreen mode

عالج الثغرات الحرجة وأعد الفحص للتحقق من الإصلاحات.

3. فحص الكود لطلبات السحب

ادمج مع GitHub Actions لفحص الكود تلقائيًا:

# .github/workflows/promptfoo-scan.yml
name: فحص كود Promptfoo
on: [push, 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 code-scan
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Enter fullscreen mode Exit fullscreen mode

يكشف عن مفاتيح API في التكوين، أنماط المطالبة غير الآمنة، والتحقق من المدخلات.

4. مقارنة النماذج

قارن نتائج عدة نماذج بسهولة:

promptfoo eval
promptfoo view
Enter fullscreen mode Exit fullscreen mode

واجهة المستخدم تعرض معدلات النجاح، الكلفة، زمن الاستجابة لكل نموذج.

المزودون المدعومون: أكثر من 90 تكاملًا لـ LLM

اختبر نفس المطالبة عبر OpenAI, Anthropic, Google, Amazon، أو نماذج محلية بدون تغيير الكود.

المزود النماذج المدعومة
OpenAI GPT-4, GPT-4o, o1, o3
Anthropic Claude 3.5/3.7/4.5/4.6
Google Gemini 1.5/2.0, Vertex AI
Microsoft Azure OpenAI, Phi
Amazon Bedrock (Claude, Llama, Titan)
Meta Llama 3+
Ollama نماذج محلية (Llama, Mistral, Phi)

مزودون مخصصون

اكتب مزودك الخاص إذا كان النموذج غير مدعوم:

مثال بايثون:

# 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
            }
        }
Enter fullscreen mode Exit fullscreen mode

مثال جافاسكريبت:

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

أضفها في التكوين:

providers:
  - id: file://custom_provider.py
    config:
      api_key: ${MY_API_KEY}
Enter fullscreen mode Exit fullscreen mode

واجهة سطر الأوامر: أوامر أساسية

الأوامر اليومية

# تشغيل التقييمات
promptfoo eval -c promptfooconfig.yaml

# فتح واجهة المستخدم الويب
promptfoo view

# مشاركة النتائج
promptfoo share

# اختبار Red Team
promptfoo redteam init
promptfoo redteam run

# التكوين والتحقق
promptfoo init
promptfoo validate [config]

# إدارة النتائج
promptfoo list
promptfoo show <id>
promptfoo delete <id>
promptfoo export <id>

# أدوات مساعدة
promptfoo cache clear
promptfoo retry <id>
Enter fullscreen mode Exit fullscreen mode

علامات مساعدة

--no-cache              # تعطيل التخزين المؤقت
--max-concurrency <n>   # عدد استدعاءات API المتوازية
--output <file>         # حفظ النتائج في ملف JSON
--verbose               # تمكين التصحيح
--env-file <path>       # تحميل متغيرات البيئة من ملف
--filter <pattern>      # تشغيل اختبارات محددة فقط
Enter fullscreen mode Exit fullscreen mode

مثال عملي

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

تكامل CI/CD: أتمتة اختبار LLM

ادمج Promptfoo مع أي نظام CI لاكتشاف الأخطاء قبل النشر.

مثال GitHub Actions

name: اختبارات LLM
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 }}
Enter fullscreen mode Exit fullscreen mode

بوابات الجودة

حدد عتبات النجاح:

commandLineOptions:
  threshold: 0.8  # يتطلب معدل نجاح 80%
Enter fullscreen mode Exit fullscreen mode

التخزين المؤقت في CI

لأداء أسرع واستهلاك أقل للـ API:

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

واجهة المستخدم الويب: تصور ومشاركة النتائج

promptfoo view تفتح واجهة تفاعلية لمراجعة التقييمات:

  • مصفوفة التقييم: مقارنة مباشرة
  • التصفية: حسب الحالة أو المزود
  • الاختلافات: مقارنة بين عمليات التشغيل
  • المشاركة: روابط قابلة للمشاركة
  • تحديثات لحظية: راقب التقييمات أثناء العمل

تعمل محليًا على localhost:3000 مع حماية CSRF.

قاعدة البيانات والتخزين المؤقت

  • macOS/Linux: ~/.cache/promptfoo
  • Windows: %LOCALAPPDATA%\promptfoo
  • قاعدة البيانات: ~/.promptfoo/promptfoo.db (SQLite)

استخدم --no-cache أثناء التطوير للحصول على نتائج حديثة.

نموذج الأمان: ما يمكنك الوثوق به

  • مدخلات موثوقة: ملفات التكوين، تأكيدات JS/Python مخصصة.
  • مدخلات غير موثوقة: نص المطالبة، المتغيرات، مخرجات النماذج.

توصيات الأمان

  • شغّل في حاوية أو VM مع صلاحيات محدودة.
  • استخدم مفاتيح API مخصصة.
  • لا تضع أسرارًا في المطالبات أو ملفات التكوين.
  • فعّل قيود الشبكة.
  • لا تعرض الخادم المحلي لشبكات غير آمنة.

الأداء: تحسين التقييمات

  • استخدم التخزين المؤقت لتسريع التكرار.
  • ضبط التزامن عبر --max-concurrency.
  • تصفية اختبارات التطوير عبر --filter.
  • تجربة مجموعات بيانات صغيرة أولاً عبر --repeat.

التوسع

للتقييمات الكبيرة:

  • استخدم المجدول للتشغيل الموزع.
  • صدر النتائج إلى Google Sheets.
  • فعّل التوليد عن بعد.

قابلية التوسع: بناء ميزات مخصصة

تأكيدات مخصصة

اكتب تأكيداتك الخاصة في JS أو Python:

// 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'
  };
}
Enter fullscreen mode Exit fullscreen mode

في التكوين:

assert:
  - type: file://assertions/customCheck.js
Enter fullscreen mode Exit fullscreen mode

خادم MCP

شغل خادم MCP للتكامل مع وكلاء الذكاء الاصطناعي:

promptfoo mcp
Enter fullscreen mode Exit fullscreen mode

يوفر:

  • تشغيل التقييمات من الدردشة.
  • الوصول لفحوصات red team.
  • استعلام النتائج.
  • إنشاء حالات اختبار جديدة.

حالات الاستخدام في العالم الحقيقي

روبوت دردشة دعم العملاء

  • 500 حالة اختبار تغطي الأسئلة الشائعة.
  • تقييم عبر GPT-4 وClaude.
  • فحوصات red team لتسريب PII.
  • تكامل CI يمنع نشرات غير آمنة.

النتيجة: انخفاض 90% في مشاكل العملاء بعد الاعتماد على التقييمات المؤتمتة.

مسار توليد المحتوى

  • تقييم النبرة والأسلوب بواسطة LLM.
  • عتبات زمن الاستجابة.
  • مراقبة التكلفة.
  • مقارنة النماذج لاختيار الأفضل.

النتيجة: صوت علامة تجارية متسق وتكلفة API أقل بـ40%.

تطبيق الرعاية الصحية

  • فحوصات red team لانتهاكات HIPAA.
  • تأكيدات مخصصة للدقة الطبية.
  • تشغيل محلي لحماية البيانات.
  • تدقيقات كاملة للامتثال.

النتيجة: اجتياز تدقيق SOC 2 باستخدام نتائج Promptfoo.

الخلاصة

Promptfoo يجلب اختبارًا منهجيًا وعمليًا لتطبيقات LLM. استبدل العمليات اليدوية بتقييمات مؤتمتة تكتشف الانحدارات والثغرات قبل الإنتاج.

للتنفيذ السريع:

  • ثبت عبر npm install -g promptfoo وابدأ بـ promptfoo init.
  • استخدم التأكيدات الدلالية، فحوصات الأمان، والتكامل مع CI/CD.
  • قارن النماذج ووسع الوظائف عبر مزودين وتأكيدات مخصصة.

مستقبل تطوير الذكاء الاصطناعي يعتمد على الأتمتة والاختبار المنهجي. استخدم Promptfoo لبناء تطبيقات LLM آمنة وموثوقة على نطاق واسع.

إذا كنت تعمل أيضًا مع واجهات برمجة التطبيقات، استخدم Apidog مع Promptfoo. يدير Apidog تصميم واختبار وتوثيق API، بينما يركز Promptfoo على تقييم LLMs. معًا يغطيان اختبار التطبيقات الحديثة بالكامل.

الأسئلة الشائعة

ما هو استخدام Promptfoo؟

Promptfoo يُستخدم لاختبار وتقييم تطبيقات LLM عبر اختبارات آلية للمطالبات، مقارنة مخرجات النماذج، وإجراء تقييمات أمان (red-team).

هل Promptfoo مجاني؟

نعم، Promptfoo مفتوح المصدر بترخيص MIT ومجاني للاستخدام الشخصي والتجاري. بعض الميزات السحابية قد تتطلب اشتراكًا مدفوعًا.

كيف أقوم بتثبيت Promptfoo؟

ثبت باستخدام:

npm install -g promptfoo
Enter fullscreen mode Exit fullscreen mode

أو:

npx promptfoo@latest
brew install promptfoo
pip install promptfoo
Enter fullscreen mode Exit fullscreen mode

ما النماذج التي يدعمها Promptfoo؟

أكثر من 90 مزودًا، من ضمنهم OpenAI (GPT-4, GPT-4o)، Anthropic (Claude)، Google (Gemini)، Microsoft، Amazon Bedrock، ونماذج Ollama المحلية.

كيف أشغل فحص red team؟

promptfoo redteam init
promptfoo redteam run
promptfoo redteam report
Enter fullscreen mode Exit fullscreen mode

هل يمكنني استخدام Promptfoo في CI/CD؟

نعم. ثبت في CI وشغل:

promptfoo eval
Enter fullscreen mode Exit fullscreen mode

حدد عتبة النجاح عبر threshold في التكوين.

هل يرسل Promptfoo بياناتي إلى خوادم خارجية؟

لا. يعمل محليًا بالكامل افتراضيًا، ولا يرسل بياناتك إلا إذا اخترت ذلك.

كيف أقارن النماذج باستخدام Promptfoo؟

أضف أكثر من مزود في التكوين، ثم:

promptfoo eval
promptfoo view
Enter fullscreen mode Exit fullscreen mode

سترى مقارنة بالنجاح/الفشل والتكلفة وزمن الاستجابة لكل نموذج.

Top comments (0)