Skip to content
Announcements10 min read

Potato 2.3: التوصيف الوكيلي، الوضع الفردي، ومستقبل التقييم البشري

يقدم Potato 2.3.0 التوصيف الوكيلي مع 12 محوّل تنسيق مسارات، والوضع الفردي للتوسيم التعاوني بين الإنسان ونموذج اللغة الكبير، ومقياس الأفضل-الأسوأ، وSSO/OAuth، وتصدير Parquet، و15 مشروعاً تجريبياً.

Potato Team·

Potato 2.3: التوصيف الوكيلي، الوضع الفردي، ومستقبل التقييم البشري

يسعدنا الإعلان عن Potato 2.3.0، أكبر إصدار في تاريخ Potato. يقدم هذا التحديث نظامين رئيسيين جديدين -- التوصيف الوكيلي والوضع الفردي -- إلى جانب مقياس الأفضل-الأسوأ، ومصادقة SSO/OAuth، وتصدير Parquet، و15 مشروعاً تجريبياً جديداً.

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


التوصيف الوكيلي

الميزة الرئيسية في Potato 2.3 هي نظام كامل لتقييم وكلاء الذكاء الاصطناعي من خلال التوصيف البشري.

وكلاء الذكاء الاصطناعي -- أنظمة تتخذ إجراءات متعددة الخطوات لإنجاز المهام -- تتكاثر بسرعة. لكن تقييمها صعب. قد يتضمن تشغيل وكيل واحد عشرات من استدعاءات الأدوات وخطوات الاستدلال وتصفحات صفحات الويب والمخرجات الوسيطة. أدوات التوصيف الحالية تعرض مخرجات الوكلاء كنص مسطح، مما يفقد البنية الغنية التي يحتاجها المُقيّمون.

يحل نظام التوصيف الوكيلي في Potato هذا بثلاثة مكونات.

12 محوّل تنسيق مسارات

تأتي مسارات الوكلاء بتنسيقات مختلفة حسب الإطار. يوحّدها Potato جميعاً في تمثيل موحد:

المحوّلالمصدر
openaiOpenAI Assistants API / function calling
anthropicAnthropic Claude tool_use / Messages API
swebenchSWE-bench task traces
opentelemetryOpenTelemetry span exports
mcpModel Context Protocol sessions
multi_agentCrewAI / AutoGen / LangGraph
langchainLangChain callback traces
langfuseLangFuse observation exports
reactReAct Thought/Action/Observation
webarenaWebArena / VisualWebArena
atifAgent Trace Interchange Format
raw_webRaw browser recordings (HAR + screenshots)

الإعداد بسيط:

yaml
agentic:
  enabled: true
  trace_converter: react
  trace_file: "data/agent_traces.jsonl"

الكشف التلقائي متاح للمشاريع التي تحتاج لاستيعاب مسارات من مصادر متعددة:

yaml
agentic:
  enabled: true
  trace_converter: auto

ثلاثة أنواع عرض

تحتاج وسائط الوكلاء المختلفة إلى تصوّرات مختلفة.

عرض مسار الوكيل يعرض مسارات وكلاء استخدام الأدوات كبطاقات خطوات ملونة مع ملاحظات قابلة للطي وتنسيق JSON جميل وشريط زمني جانبي:

yaml
agentic:
  display_type: agent_trace
  agent_trace_display:
    colors:
      thought: "#6E56CF"
      action: "#3b82f6"
      observation: "#22c55e"
      error: "#ef4444"
    collapse_observations: true
    show_step_numbers: true

عرض مسار وكيل الويب يعرض مسارات وكلاء التصفح مع لقطات شاشة كاملة وتراكبات SVG تُظهر أهداف النقر وحقول الإدخال وشريط صور مصغرة للتنقل السريع:

yaml
agentic:
  display_type: web_agent
  web_agent_display:
    screenshot_max_width: 900
    overlay:
      enabled: true
      click_marker: "circle"
      click_color: "#ef4444"
    filmstrip:
      enabled: true

عرض الدردشة التفاعلية يدعم كلاً من مراجعة المسار (تقييم محادثة مسجلة) والدردشة المباشرة (يتفاعل المُوصِّفون مع وكيل في الوقت الفعلي، ثم يقيّمون المحادثة):

yaml
agentic:
  display_type: interactive_chat
  interactive_chat_display:
    mode: trace_review
    trace_review:
      show_token_counts: true
      show_latency: true

تقييمات لكل دور

لأي نوع عرض، يمكن للمُوصِّفين تقييم الخطوات الفردية إلى جانب المسار الكلي:

yaml
annotation_schemes:
  - annotation_type: likert
    name: overall_quality
    min: 1
    max: 5
 
  - annotation_type: per_turn_rating
    name: step_correctness
    target: agentic_steps
    rating_type: radio
    labels:
      - "Correct"
      - "Partially Correct"
      - "Incorrect"

المخططات الجاهزة

تغطي تسعة مخططات توصيف أبعاد تقييم الوكلاء الشائعة جاهزة للاستخدام:

yaml
annotation_schemes:
  - preset: agent_task_success
  - preset: agent_step_correctness
  - preset: agent_error_taxonomy
  - preset: agent_safety

المخططات الجاهزة المتاحة: agent_task_success، agent_step_correctness، agent_error_taxonomy، agent_safety، agent_efficiency، agent_instruction_following، agent_explanation_quality، agent_web_action_correctness، agent_conversation_quality.

اقرأ توثيق التوصيف الوكيلي →


الوضع الفردي

الميزة الرئيسية الثانية في Potato 2.3 هي الوضع الفردي: سير عمل من 12 مرحلة يستبدل نموذج المُوصِّفين المتعددين التقليدي بخبير بشري واحد يتعاون مع نموذج لغة كبير.

المشكلة

يتطلب التوصيف التقليدي مُوصِّفين متعددين للموثوقية. لكن توظيف فريق وتدريبه وتنسيقه مكلف وبطيء. للعديد من المشاريع البحثية، عنق الزجاجة في التوصيف ليس الواجهة -- بل اللوجستيات.

الحل

يتيح الوضع الفردي لخبير مجال واحد توسيم مجموعة فرعية مختارة استراتيجياً من البيانات. يتعلم نموذج اللغة الكبير من هذه التسميات، ويقترح تسميات للنماذج المتبقية، ويراجع الإنسان فقط الحالات التي يعاني فيها النموذج. سير عمل من 12 مرحلة ينظّم هذا تلقائياً.

في المعايير الداخلية، حقق الوضع الفردي اتفاقاً بنسبة 95%+ مع خطوط أنابيب المُوصِّفين المتعددين الكاملة مع الحاجة فقط إلى 10-15% من إجمالي التسميات البشرية.

المراحل الـ 12

  1. التوصيف الأولي -- يوسم الإنسان 50 نموذجاً متنوعاً
  2. معايرة نموذج اللغة الأولية -- يوسم النموذج دفعة معايرة باستخدام أمثلة البذور
  3. تحليل الارتباك -- تحديد أنماط الاختلاف المنهجي بين الإنسان والنموذج
  4. تحسين الإرشادات -- يقترح النموذج إرشادات محسّنة؛ يوافق الإنسان
  5. إنشاء دوال التوسيم -- قواعد برمجية مستوحاة من ALCHEmist للنماذج السهلة
  6. التوسيم النشط -- يوسم الإنسان النماذج الأكثر إفادة المتبقية
  7. حلقة التحسين الآلي -- إعادة توسيم تكرارية بإرشادات محدّثة
  8. استكشاف الاختلافات -- يحل الإنسان الحالات التي يتعارض فيها النموذج ودوال التوسيم
  9. تصنيع الحالات الحدية -- ينشئ النموذج أمثلة اصطناعية غامضة للتوسيم البشري
  10. تصعيد الثقة المتتالي -- يراجع الإنسان تسميات النموذج الأقل ثقة
  11. تحسين الموجّه -- بحث تلقائي عن أفضل موجّه مستوحى من DSPy
  12. التحقق النهائي -- مراجعة عينة عشوائية؛ نجاح أو إعادة الدورة

البدء السريع

yaml
solo_mode:
  enabled: true
  llm:
    endpoint_type: openai
    model: "gpt-4o"
    api_key: ${OPENAI_API_KEY}
  seed_count: 50
  accuracy_threshold: 0.92
  confidence_threshold: 0.85
 
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    labels: [Positive, Neutral, Negative]

تحديد أولوية النماذج متعدد الإشارات

يستخدم الوضع الفردي ست مجموعات مرجّحة لاختيار النماذج الأكثر قيمة للتوسيم البشري:

yaml
solo_mode:
  prioritization:
    pools:
      - name: uncertain
        weight: 0.30
      - name: disagreement
        weight: 0.25
      - name: boundary
        weight: 0.20
      - name: novel
        weight: 0.10
      - name: error_pattern
        weight: 0.10
      - name: random
        weight: 0.05

اقرأ توثيق الوضع الفردي →


مقياس الأفضل-الأسوأ

يضيف Potato 2.3 مقياس الأفضل-الأسوأ (BWS)، المعروف أيضاً بمقياس الفرق الأقصى. يرى المُوصِّفون مجموعة من العناصر (عادةً 4) ويختارون الأفضل والأسوأ وفقاً لمعيار ما. ينتج BWS درجات عددية موثوقة من أحكام ثنائية بسيطة، متطلباً توصيفات أقل بكثير من مقاييس Likert لنفس القوة الإحصائية.

yaml
annotation_schemes:
  - annotation_type: best_worst_scaling
    name: fluency
    description: "Select the BEST and WORST translation"
    items_key: "translations"
    tuple_size: 4
    best_label: "Most Fluent"
    worst_label: "Least Fluent"
    randomize_order: true
 
    tuple_generation:
      method: balanced_incomplete
      tuples_per_item: 5
 
    scoring:
      method: bradley_terry
      auto_compute: true
      include_confidence: true

ثلاث طرق تسجيل متاحة:

  • العدّ -- (عدد_الأفضل - عدد_الأسوأ) / الظهورات بسيط
  • Bradley-Terry -- نموذج مقارنة ثنائية (الافتراضي الموصى به)
  • Plackett-Luce -- نموذج ترتيب كامل لأقصى كفاءة في البيانات

سجّل النقاط من سطر الأوامر:

bash
python -m potato.bws score --config config.yaml --method bradley_terry --output scores.csv

تتضمن لوحة تحكم المدير علامة تبويب BWS مع توزيعات النقاط ومخططات التقارب ومقاييس موثوقية النصف المقسوم.

اقرأ توثيق مقياس الأفضل-الأسوأ →


مصادقة SSO و OAuth

تحتاج عمليات نشر التوصيف الإنتاجية إلى مصادقة سليمة. يدعم Potato 2.3 ثلاث طرق OAuth:

Google OAuth

yaml
authentication:
  method: google_oauth
  google_oauth:
    client_id: ${GOOGLE_CLIENT_ID}
    client_secret: ${GOOGLE_CLIENT_SECRET}
    redirect_uri: "https://annotation.example.com/auth/google/callback"
    allowed_domains:
      - "umich.edu"
    auto_register: true

GitHub OAuth مع تقييد المنظمة

yaml
authentication:
  method: github_oauth
  github_oauth:
    client_id: ${GITHUB_CLIENT_ID}
    client_secret: ${GITHUB_CLIENT_SECRET}
    redirect_uri: "https://annotation.example.com/auth/github/callback"
    allowed_organizations:
      - "my-research-lab"
    scopes:
      - "read:user"
      - "read:org"

OIDC العام

اتصل بـ Okta أو Azure AD أو Auth0 أو Keycloak أو أي مزود متوافق مع OIDC:

yaml
authentication:
  method: oidc
  oidc:
    discovery_url: "https://accounts.example.com/.well-known/openid-configuration"
    client_id: ${OIDC_CLIENT_ID}
    client_secret: ${OIDC_CLIENT_SECRET}
    redirect_uri: "https://annotation.example.com/auth/oidc/callback"

تدعم جميع الطرق تقييد النطاق والتسجيل التلقائي والوضع المختلط (طرق مصادقة متعددة في صفحة تسجيل دخول واحدة).

اقرأ توثيق SSO و OAuth →


تصدير Parquet

يُستهلك بيانات التوصيف بشكل متزايد بواسطة أدوات علوم البيانات التي تتوقع تنسيقات عمودية. يمكن لـ Potato 2.3 تصدير التوصيفات مباشرة إلى Apache Parquet، منتجاً ثلاثة ملفات مهيكلة:

  • annotations.parquet -- صف واحد لكل (نموذج، مُوصِّف، مخطط) مع القيم والطوابع الزمنية والمدد
  • spans.parquet -- صف واحد لكل نطاق مُوصّف مع الإزاحات والتسميات والروابط
  • items.parquet -- البيانات الوصفية للنماذج مع عدد التوصيفات والحالة
yaml
parquet_export:
  enabled: true
  output_dir: "output/parquet/"
  compression: zstd
  auto_export: true

حمّل مباشرة في pandas أو DuckDB أو PyArrow أو Polars أو Hugging Face Datasets:

python
import pandas as pd
annotations = pd.read_parquet("output/parquet/annotations.parquet")
 
# Or with DuckDB for SQL queries
import duckdb
duckdb.sql("""
  SELECT instance_id, value, COUNT(*) as n
  FROM 'output/parquet/annotations.parquet'
  WHERE schema_name = 'sentiment'
  GROUP BY instance_id, value
""")

يدعم ضغط snappy وgzip وzstd وlz4 وbrotli، والتصدير التدريجي مع التقسيم حسب التاريخ/المُوصِّف، وترميز القاموس لأعمدة السلاسل النصية.

اقرأ توثيق تصدير Parquet →


15 مشروعاً تجريبياً جديداً

يأتي Potato 2.3 مع 15 مشروعاً تجريبياً جديداً في مجلد project-hub/، تغطي الميزات الجديدة:

عروض التوصيف الوكيلي

  1. react-agent-eval -- تقييم مسارات وكيل ReAct مع تقييمات على مستوى الخطوة
  2. web-agent-eval -- تقييم مسارات WebArena مع تراكبات لقطات الشاشة
  3. chatbot-eval -- تقييم دردشة تفاعلية مع وكيل وسيط مباشر
  4. multi-agent-eval -- تقييم أنظمة وكلاء متعددين CrewAI
  5. swebench-eval -- تقييم مسارات SWE-bench لوكلاء البرمجة

عروض الوضع الفردي

  1. solo-sentiment -- تصنيف المشاعر بالوضع الفردي على مراجعات المنتجات
  2. solo-ner -- التعرف على الكيانات المسماة بالوضع الفردي
  3. solo-toxicity -- كشف السمّية بالوضع الفردي مع تصنيع الحالات الحدية

عروض مقياس الأفضل-الأسوأ

  1. bws-translation -- ترتيب جودة الترجمة الآلية
  2. bws-summarization -- مقارنة جودة التلخيص
  3. bws-image-quality -- ترتيب جودة إنشاء الصور

عروض المصادقة

  1. google-oauth-demo -- مثال إعداد Google OAuth
  2. github-oauth-demo -- GitHub OAuth مع تقييد المنظمة

عروض التصدير

  1. parquet-export-demo -- تصدير Parquet مع سكربت تحليل DuckDB
  2. huggingface-upload -- التصدير إلى Parquet والرفع إلى Hugging Face Hub

يتضمن كل عرض config.yaml كاملاً وبيانات عيّنة وREADME مع تعليمات الإعداد. ابدأ أي عرض بـ:

bash
cd project-hub/react-agent-eval
potato start config.yaml

تعزيز الأمان

يتضمن Potato 2.3 عدة تحسينات أمنية:

  • رموز الجلسة تستخدم إنشاء عشوائي آمن تشفيرياً مع انتهاء صلاحية قابل للإعداد
  • حماية CSRF مُفعّلة افتراضياً لجميع إرسالات النماذج
  • تحديد المعدل على نقاط نهاية المصادقة (قابل للإعداد، افتراضي 10 محاولات في الدقيقة)
  • تنقية المدخلات لجميع المحتوى المقدم من المستخدم المعروض في واجهة التوصيف
  • تدقيق التبعيات -- تحديث جميع تبعيات Python وJavaScript لأحدث الإصدارات الآمنة
  • رؤوس سياسة أمان المحتوى مُضافة لمنع XSS
yaml
security:
  csrf_protection: true
  rate_limiting:
    auth_attempts: 10            # per minute
    api_requests: 100            # per minute
  session:
    token_length: 64
    lifetime_hours: 24
  content_security_policy: true

الترقية

من Potato 2.2.x

bash
pip install --upgrade potato-annotation

جميع إعدادات الإصدار 2.2 متوافقة تماماً مع الإصدارات السابقة. لا تُطلب تغييرات على الإعدادات الحالية.

تبعيات جديدة

تصدير Parquet يتطلب PyArrow:

bash
pip install potato-annotation[parquet]

الوضع الفردي يتطلب SDK مزود نموذج لغة كبير:

bash
pip install potato-annotation[solo]    # installs openai + anthropic SDKs

أو ثبّت كل شيء:

bash
pip install potato-annotation[all]

ما التالي

يمثل Potato 2.3 توسعاً كبيراً لما يمكن لأدوات التوصيف فعله. نعمل بالفعل على المجموعة التالية من الميزات:

  • مقارنة التوصيفات -- مقارنة التوصيفات عبر الجولات والمُوصِّفين مع فروقات بصرية
  • التوصيف الموحّد -- تنسيق التوصيف عبر نسخ Potato متعددة
  • مصادر البيانات المتدفقة -- توصيف البيانات من Kafka وPub/Sub وأنظمة التدفق الأخرى
  • واجهة محسّنة للأجهزة المحمولة -- توصيف متجاوب للأجهزة اللوحية والهواتف

نودّ سماع ملاحظاتكم. أرسلوا مشكلات على GitHub، انضموا للنقاش في GitHub Discussions، أو تواصلوا مع الفريق مباشرة.


الروابط