Potato 2.3: التوصيف الوكيلي، الوضع الفردي، ومستقبل التقييم البشري
يقدم Potato 2.3.0 التوصيف الوكيلي مع 12 محوّل تنسيق مسارات، والوضع الفردي للتوسيم التعاوني بين الإنسان ونموذج اللغة الكبير، ومقياس الأفضل-الأسوأ، وSSO/OAuth، وتصدير Parquet، و15 مشروعاً تجريبياً.
Potato 2.3: التوصيف الوكيلي، الوضع الفردي، ومستقبل التقييم البشري
يسعدنا الإعلان عن Potato 2.3.0، أكبر إصدار في تاريخ Potato. يقدم هذا التحديث نظامين رئيسيين جديدين -- التوصيف الوكيلي والوضع الفردي -- إلى جانب مقياس الأفضل-الأسوأ، ومصادقة SSO/OAuth، وتصدير Parquet، و15 مشروعاً تجريبياً جديداً.
موضوع هذا الإصدار بسيط: الأشياء التي نحتاج لتوصيفها تغيرت، وأدواتنا تحتاج لمواكبة ذلك. لم يعد الباحثون يوسمون فقط المشاعر النصية والكيانات المسماة. إنهم يقيّمون مسارات وكلاء ذكاء اصطناعي متعددة الخطوات، ويقارنون مخرجات نماذج اللغة الكبيرة على نطاق واسع، ويبنون مجموعات بيانات لمهام معقدة بشكل متزايد. تم بناء Potato 2.3 لهذا الواقع الجديد.
التوصيف الوكيلي
الميزة الرئيسية في Potato 2.3 هي نظام كامل لتقييم وكلاء الذكاء الاصطناعي من خلال التوصيف البشري.
وكلاء الذكاء الاصطناعي -- أنظمة تتخذ إجراءات متعددة الخطوات لإنجاز المهام -- تتكاثر بسرعة. لكن تقييمها صعب. قد يتضمن تشغيل وكيل واحد عشرات من استدعاءات الأدوات وخطوات الاستدلال وتصفحات صفحات الويب والمخرجات الوسيطة. أدوات التوصيف الحالية تعرض مخرجات الوكلاء كنص مسطح، مما يفقد البنية الغنية التي يحتاجها المُقيّمون.
يحل نظام التوصيف الوكيلي في Potato هذا بثلاثة مكونات.
12 محوّل تنسيق مسارات
تأتي مسارات الوكلاء بتنسيقات مختلفة حسب الإطار. يوحّدها Potato جميعاً في تمثيل موحد:
| المحوّل | المصدر |
|---|---|
openai | OpenAI Assistants API / function calling |
anthropic | Anthropic Claude tool_use / Messages API |
swebench | SWE-bench task traces |
opentelemetry | OpenTelemetry span exports |
mcp | Model Context Protocol sessions |
multi_agent | CrewAI / AutoGen / LangGraph |
langchain | LangChain callback traces |
langfuse | LangFuse observation exports |
react | ReAct Thought/Action/Observation |
webarena | WebArena / VisualWebArena |
atif | Agent Trace Interchange Format |
raw_web | Raw browser recordings (HAR + screenshots) |
الإعداد بسيط:
agentic:
enabled: true
trace_converter: react
trace_file: "data/agent_traces.jsonl"الكشف التلقائي متاح للمشاريع التي تحتاج لاستيعاب مسارات من مصادر متعددة:
agentic:
enabled: true
trace_converter: autoثلاثة أنواع عرض
تحتاج وسائط الوكلاء المختلفة إلى تصوّرات مختلفة.
عرض مسار الوكيل يعرض مسارات وكلاء استخدام الأدوات كبطاقات خطوات ملونة مع ملاحظات قابلة للطي وتنسيق JSON جميل وشريط زمني جانبي:
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 تُظهر أهداف النقر وحقول الإدخال وشريط صور مصغرة للتنقل السريع:
agentic:
display_type: web_agent
web_agent_display:
screenshot_max_width: 900
overlay:
enabled: true
click_marker: "circle"
click_color: "#ef4444"
filmstrip:
enabled: trueعرض الدردشة التفاعلية يدعم كلاً من مراجعة المسار (تقييم محادثة مسجلة) والدردشة المباشرة (يتفاعل المُوصِّفون مع وكيل في الوقت الفعلي، ثم يقيّمون المحادثة):
agentic:
display_type: interactive_chat
interactive_chat_display:
mode: trace_review
trace_review:
show_token_counts: true
show_latency: trueتقييمات لكل دور
لأي نوع عرض، يمكن للمُوصِّفين تقييم الخطوات الفردية إلى جانب المسار الكلي:
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"المخططات الجاهزة
تغطي تسعة مخططات توصيف أبعاد تقييم الوكلاء الشائعة جاهزة للاستخدام:
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
- التوصيف الأولي -- يوسم الإنسان 50 نموذجاً متنوعاً
- معايرة نموذج اللغة الأولية -- يوسم النموذج دفعة معايرة باستخدام أمثلة البذور
- تحليل الارتباك -- تحديد أنماط الاختلاف المنهجي بين الإنسان والنموذج
- تحسين الإرشادات -- يقترح النموذج إرشادات محسّنة؛ يوافق الإنسان
- إنشاء دوال التوسيم -- قواعد برمجية مستوحاة من ALCHEmist للنماذج السهلة
- التوسيم النشط -- يوسم الإنسان النماذج الأكثر إفادة المتبقية
- حلقة التحسين الآلي -- إعادة توسيم تكرارية بإرشادات محدّثة
- استكشاف الاختلافات -- يحل الإنسان الحالات التي يتعارض فيها النموذج ودوال التوسيم
- تصنيع الحالات الحدية -- ينشئ النموذج أمثلة اصطناعية غامضة للتوسيم البشري
- تصعيد الثقة المتتالي -- يراجع الإنسان تسميات النموذج الأقل ثقة
- تحسين الموجّه -- بحث تلقائي عن أفضل موجّه مستوحى من DSPy
- التحقق النهائي -- مراجعة عينة عشوائية؛ نجاح أو إعادة الدورة
البدء السريع
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]تحديد أولوية النماذج متعدد الإشارات
يستخدم الوضع الفردي ست مجموعات مرجّحة لاختيار النماذج الأكثر قيمة للتوسيم البشري:
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 لنفس القوة الإحصائية.
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 -- نموذج ترتيب كامل لأقصى كفاءة في البيانات
سجّل النقاط من سطر الأوامر:
python -m potato.bws score --config config.yaml --method bradley_terry --output scores.csvتتضمن لوحة تحكم المدير علامة تبويب BWS مع توزيعات النقاط ومخططات التقارب ومقاييس موثوقية النصف المقسوم.
اقرأ توثيق مقياس الأفضل-الأسوأ →
مصادقة SSO و OAuth
تحتاج عمليات نشر التوصيف الإنتاجية إلى مصادقة سليمة. يدعم Potato 2.3 ثلاث طرق OAuth:
Google OAuth
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: trueGitHub OAuth مع تقييد المنظمة
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:
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"تدعم جميع الطرق تقييد النطاق والتسجيل التلقائي والوضع المختلط (طرق مصادقة متعددة في صفحة تسجيل دخول واحدة).
تصدير Parquet
يُستهلك بيانات التوصيف بشكل متزايد بواسطة أدوات علوم البيانات التي تتوقع تنسيقات عمودية. يمكن لـ Potato 2.3 تصدير التوصيفات مباشرة إلى Apache Parquet، منتجاً ثلاثة ملفات مهيكلة:
- annotations.parquet -- صف واحد لكل (نموذج، مُوصِّف، مخطط) مع القيم والطوابع الزمنية والمدد
- spans.parquet -- صف واحد لكل نطاق مُوصّف مع الإزاحات والتسميات والروابط
- items.parquet -- البيانات الوصفية للنماذج مع عدد التوصيفات والحالة
parquet_export:
enabled: true
output_dir: "output/parquet/"
compression: zstd
auto_export: trueحمّل مباشرة في pandas أو DuckDB أو PyArrow أو Polars أو Hugging Face Datasets:
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، والتصدير التدريجي مع التقسيم حسب التاريخ/المُوصِّف، وترميز القاموس لأعمدة السلاسل النصية.
15 مشروعاً تجريبياً جديداً
يأتي Potato 2.3 مع 15 مشروعاً تجريبياً جديداً في مجلد project-hub/، تغطي الميزات الجديدة:
عروض التوصيف الوكيلي
- react-agent-eval -- تقييم مسارات وكيل ReAct مع تقييمات على مستوى الخطوة
- web-agent-eval -- تقييم مسارات WebArena مع تراكبات لقطات الشاشة
- chatbot-eval -- تقييم دردشة تفاعلية مع وكيل وسيط مباشر
- multi-agent-eval -- تقييم أنظمة وكلاء متعددين CrewAI
- swebench-eval -- تقييم مسارات SWE-bench لوكلاء البرمجة
عروض الوضع الفردي
- solo-sentiment -- تصنيف المشاعر بالوضع الفردي على مراجعات المنتجات
- solo-ner -- التعرف على الكيانات المسماة بالوضع الفردي
- solo-toxicity -- كشف السمّية بالوضع الفردي مع تصنيع الحالات الحدية
عروض مقياس الأفضل-الأسوأ
- bws-translation -- ترتيب جودة الترجمة الآلية
- bws-summarization -- مقارنة جودة التلخيص
- bws-image-quality -- ترتيب جودة إنشاء الصور
عروض المصادقة
- google-oauth-demo -- مثال إعداد Google OAuth
- github-oauth-demo -- GitHub OAuth مع تقييد المنظمة
عروض التصدير
- parquet-export-demo -- تصدير Parquet مع سكربت تحليل DuckDB
- huggingface-upload -- التصدير إلى Parquet والرفع إلى Hugging Face Hub
يتضمن كل عرض config.yaml كاملاً وبيانات عيّنة وREADME مع تعليمات الإعداد. ابدأ أي عرض بـ:
cd project-hub/react-agent-eval
potato start config.yamlتعزيز الأمان
يتضمن Potato 2.3 عدة تحسينات أمنية:
- رموز الجلسة تستخدم إنشاء عشوائي آمن تشفيرياً مع انتهاء صلاحية قابل للإعداد
- حماية CSRF مُفعّلة افتراضياً لجميع إرسالات النماذج
- تحديد المعدل على نقاط نهاية المصادقة (قابل للإعداد، افتراضي 10 محاولات في الدقيقة)
- تنقية المدخلات لجميع المحتوى المقدم من المستخدم المعروض في واجهة التوصيف
- تدقيق التبعيات -- تحديث جميع تبعيات Python وJavaScript لأحدث الإصدارات الآمنة
- رؤوس سياسة أمان المحتوى مُضافة لمنع XSS
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
pip install --upgrade potato-annotationجميع إعدادات الإصدار 2.2 متوافقة تماماً مع الإصدارات السابقة. لا تُطلب تغييرات على الإعدادات الحالية.
تبعيات جديدة
تصدير Parquet يتطلب PyArrow:
pip install potato-annotation[parquet]الوضع الفردي يتطلب SDK مزود نموذج لغة كبير:
pip install potato-annotation[solo] # installs openai + anthropic SDKsأو ثبّت كل شيء:
pip install potato-annotation[all]ما التالي
يمثل Potato 2.3 توسعاً كبيراً لما يمكن لأدوات التوصيف فعله. نعمل بالفعل على المجموعة التالية من الميزات:
- مقارنة التوصيفات -- مقارنة التوصيفات عبر الجولات والمُوصِّفين مع فروقات بصرية
- التوصيف الموحّد -- تنسيق التوصيف عبر نسخ Potato متعددة
- مصادر البيانات المتدفقة -- توصيف البيانات من Kafka وPub/Sub وأنظمة التدفق الأخرى
- واجهة محسّنة للأجهزة المحمولة -- توصيف متجاوب للأجهزة اللوحية والهواتف
نودّ سماع ملاحظاتكم. أرسلوا مشكلات على GitHub، انضموا للنقاش في GitHub Discussions، أو تواصلوا مع الفريق مباشرة.