דילוג לתוכן

חיפוש בתיעוד

הקלידו כדי לחפש בכל דפי התיעוד.

תפריט התיעוד
מדריךקהל יעד · מפתחים, חוקרים ותורמים

בדיקות וסימולציות

שתי תשתיות בדיקה: בדיקות אינטגרציה מול תשתית אמיתית וסימולציות סוכנים בשיטת LLM-as-judge

דף זה תורגם באופן אוטומטי מאנגלית. אם יש הבדל כלשהו, המקור הוא הקובע.לקריאת המקור באנגלית

בדיקת סוכנים היא יכולת מרכזית של הפריימוורק, ולא מחשבה שנייה. Agent-Lab כולל שתי תשתיות בדיקה משלימות, שבהן אפשר להשתמש גם לאימות הפריימוורק עצמו וגם לאימות הסוכנים שבונים על גביו:

  • בדיקות אינטגרציה מפעילות את המערכת מול תשתית אמיתית (Postgres, Redis, Keycloak, embeddings, Headless Chrome) שמוקמת לפי דרישה עם testcontainers — ומכסות שירותים חיצוניים, פעולות מסד נתונים, חיפוש וקטורי ונקודות קצה של ה-API.
  • סימולציות סוכנים מעריכות את התנהגות הסוכנים מקצה לקצה מול LLMs חיים, עם ציון שנקבע על ידי LLM-as-judge ומעקב לאורך זמן ב-Langfuse וב-LangWatch.

התצורה העיקרית של בדיקות האינטגרציה נמצאת ב-tests/conftest.py; יש להתאים אותה לסביבה שלך.

הערה: בדיקות האינטגרציה והסימולציות מבצעות קריאות אמיתיות לשירותים חיצוניים ועלולות לגרום לעלויות. יש להריץ אותן בסביבה מבוקרת ולעקוב אחר השימוש.

בדיקות אינטגרציה

נדרש Docker (או סביבת הרצה אחרת לקונטיינרים) — חבילת הבדיקות מקימה קונטיינרים אמיתיים באמצעות testcontainers.

make test_unit         # fast lane: boots the app with no infrastructure
make test_integration  # the full real-infrastructure suite
make test              # both, with coverage (gate: 90%)

ההרצה הראשונה עשויה להימשך כמה דקות — ה-images של Docker ומודלי ה-embedding מורדים פעם אחת. הכיסוי של agent_lab/ נאכף ב-CI (SonarCloud).

הפרויקטים שנוצרים מהשלד משקפים זאת: tests/ מכיל בדיקות smoke ללא קונטיינרים ולצדן חבילת testcontainers אופציונלית.

סימולציות סוכנים

סימולציות הסוכנים מקצה לקצה נמצאות ב-tests/simulation/ וקוראות לספקי LLM חיים. הן מסומנות agent_test ואינן נבחרות כברירת מחדל; מריצים אותן עם:

make test_simulations
# or a single track:
make scenario_simulation
make langwatch_simulation
make langfuse_simulation

שלושה מסלולים משלימים חולקים את פונקציות העזר לאתחול הסוכנים, את השופט ואת הגדרות מערכי הנתונים תחת tests/simulation/datasets/:

  • tests/simulation/scenario/ — סימולציות שיחה באמצעות הפריימוורק langwatch-scenario: סימולטור משתמש מניע את הסוכן, וסוכן שופט נותן ציון לאינטראקציה.
  • tests/simulation/langfuse/ — ניסויים מבוססי מערכי נתונים באמצעות מערכי הנתונים של Langfuse. כל הרצה מסנכרנת את הגדרות מערכי הנתונים, מפעילה את הסוכן עבור כל פריט, נותנת ציון לפלט באמצעות LLM-as-judge בצד הלקוח, ורושמת את ההרצה ואת הציונים ב-Langfuse להשוואה לאורך זמן. המסלול מדולג אוטומטית כאשר LANGFUSE_BASE_URL (או LANGFUSE_HOST המיושן), LANGFUSE_PUBLIC_KEY ו-LANGFUSE_SECRET_KEY אינם מוגדרים.
  • tests/simulation/langwatch/ — אותם ניסויי מערכי נתונים, המשוכפלים ל- LangWatch באמצעות langwatch.experiment, עם רישום ציון השופט לכל פריט. ההגדרות מסונכרנות באופן אידמפוטנטי למערך נתונים מאוחד יחיד בשם simulations (עמודת dataset מזהה את הגדרת המקור, משום שהתוכנית החינמית של LangWatch מאפשרת לכל היותר 3 מערכי נתונים לפרויקט). המסלול מדולג אוטומטית כאשר LANGWATCH_ENDPOINT ו-LANGWATCH_API_KEY אינם מוגדרים.

סוכני הדוגמה המכוסים במסלולים: coordinator-planner-supervisor, react RAG, ראייה/מסמכים, אוטומציה של דפדפן, תזכירים קוליים ו-adaptive RAG.

הגדרת ה-LLM של השופט ושל הסוכנים

השופט (וסימולטור המשתמש של scenario) משתמשים במזהי מודל של litellm מול כל נקודת קצה התואמת ל-OpenAI API:

משתנה סביבה ברירת מחדל ייעוד
SIMULATION_JUDGE_MODEL openai/gpt-5-nano מזהה מודל litellm שבו משתמש ה-LLM-as-judge
SIMULATION_JUDGE_API_BASE ברירת המחדל של הספק נקודת קצה מותאמת תואמת OpenAI עבור מודל השופט
SIMULATION_JUDGE_API_KEY ברירת המחדל של הספק מפתח API לנקודת הקצה המותאמת

הסוכנים הנבדקים רצים על LLM ברירת מחדל שמוגש מכל נקודת קצה תואמת OpenAI (לדוגמה שרת inference ברשת המקומית), ומוקצה לכל בדיקה על ידי tests/simulation/common/llm_factory.py. החריג הוא סוכן התזכירים הקוליים, שנשאר על OpenAI (הוא זקוק לקלט שמע בצ'אט). ה-embeddings ממשיכים להשתמש בגיבוי EMBEDDINGS_ENDPOINT (קונטיינר ה-Ollama של הבדיקות שמגיש את bge-m3), בהתאמה ל-dump של pgvector. נקודת הקצה חייבת לתמוך ב-tool calling / פלט מובנה עבור החבילות המבוססות על supervisor (אוטומציה של דפדפן, supervisor):

משתנה סביבה ברירת מחדל ייעוד
SIMULATION_LLM_MODEL אין (חובה) תג המודל שמריץ את הסימולציות (לדוגמה qwen3:30b)
SIMULATION_LLM_API_BASE אין (חובה) נקודת קצה תואמת OpenAI שמגישה את המודל
SIMULATION_LLM_API_KEY dummy-key מפתח API, אם נקודת הקצה דורשת

הקמת פלטפורמות ההערכה

make test_simulations (ויעדי המסלולים הנפרדים) מריצים קודם את השלב sync_simulation_evals, שמשכפל את הגדרות מערכי הנתונים לכל פלטפורמה מוגדרת. כדי להקים גם את הגדרת ההערכה בצד השרת של Langfuse (חיבור LLM עבור מודל השופט, evaluator בשם simulation_llm_as_judge, וכלל הערכה אחד לכל מערך נתוני סימולציה — גלויים באזור Evaluations של Langfuse), מריצים:

uv run python tests/setup_simulation_evals.py

הסקריפט אידמפוטנטי ובטוח להרצה חוזרת.