نظرة عامة على الواجهة البرمجية
مرجع واجهة HTTP البرمجية في Potato — نقاط طرفية للمشرف لإدارة المُعلّقين، وإطلاق عمليات التصدير، والاستعلام عن إحصاءات التقدّم، والتكامل مع خطوط خارجية.
يوفّر Potato نقاطًا طرفية لواجهة HTTP برمجية للتكامل مع واجهات أمامية مخصصة أو نصوص أتمتة أو أنظمة خارجية.
نظرة عامة
عنوان URL الأساسي
http://localhost:8000
المصادقة
تتطلب معظم النقاط الطرفية جلسة نشطة تُنشأ عبر نقاط تسجيل الدخول وتُحفظ عبر الكوكيز.
للوصول البرمجي:
- استخدم كوكيز الجلسة من متصفح
- استخدم وضع التصحيح مع إنشاء مستخدم تلقائي
- نفّذ تدفق تسجيل الدخول برمجيًّا
صيغة الاستجابة
تُعيد جميع النقاط الطرفية استجابات JSON. وتتضمن استجابات الخطأ حقل error.
إدارة الجلسات
تسجيل الدخول
POST /auth
Content-Type: application/x-www-form-urlencoded
username=your_username&password=your_passwordفحص الجلسة
GET /api/current_instanceالاستجابة:
{
"instance_id": "item_001",
"current_index": 0,
"total_instances": 100
}تسجيل الخروج
POST /logoutنقاط التعليق الطرفية
الحصول على العنصر الحالي
GET /api/current_instanceيُعيد معلومات عن عنصر التعليق الحالي للمستخدم.
الحصول على محتوى العنصر
GET /api/spans/{instance_id}يُعيد المحتوى النصي وتعليقات النطاقات الموجودة.
الاستجابة:
{
"instance_id": "item_001",
"text": "The quick brown fox jumps over the lazy dog.",
"spans": [
{
"id": "span_123",
"schema": "entities",
"label": "ANIMAL",
"start": 16,
"end": 19,
"text": "fox",
"color": "#ff6b6b"
}
]
}الحصول على التعليقات
GET /get_annotations?instance_id={instance_id}يُعيد كل تعليقات عنصر بعينه.
إرسال تعليق
POST /updateinstance
Content-Type: application/json
{
"instance_id": "item_001",
"annotations": {
"sentiment:positive": "1"
},
"span_annotations": [
{
"schema": "entities",
"name": "PERSON",
"start": 0,
"end": 5,
"value": "true"
}
]
}الاستجابة (نجاح):
{
"status": "success",
"processing_time_ms": 15
}الاستجابة (مع ضبط الجودة):
{
"status": "success",
"qc_result": {
"type": "gold_standard",
"correct": false,
"gold_label": {"sentiment": "positive"}
}
}الانتقال إلى عنصر
POST /go_to
Content-Type: application/json
{"go_to": "item_005"}أو بحسب الإجراء:
{"action": "next_instance"}معلومات المخطط
الحصول على مخططات التعليق
GET /api/schemasالحصول على ألوان التصنيفات
GET /api/colorsالحصول على تظليلات الكلمات المفتاحية
GET /api/keyword_highlights/{instance_id}نقاط واجهة المشرف الطرفية
تتطلب نقاط المشرف الطرفية صلاحيات مشرف.
فحص السلامة
GET /admin/healthنظرة عامة على لوحة التحكم
GET /admin/api/overviewالاستجابة:
{
"total_items": 1000,
"total_annotations": 5000,
"total_users": 25,
"completion_rate": 0.45
}الحصول على المُعلّقين
GET /admin/api/annotatorsالحصول على العناصر
GET /admin/api/instances?status=completed&limit=100الحصول على الإعدادات
GET /admin/api/configتحديث الإعدادات
POST /admin/api/config
Content-Type: application/json
{"setting_name": "value"}واجهة ضبط الجودة البرمجية
مقاييس ضبط الجودة
GET /admin/api/quality_controlيُعيد إحصاءات فحوص الانتباه والمعيار الذهبي.
مقاييس الاتفاق
GET /admin/api/agreementيُعيد ألفا لكريبندورف حسب المخطط.
واجهة مساعد الذكاء الاصطناعي البرمجية
الحصول على اقتراح من الذكاء الاصطناعي
GET /get_ai_suggestion?instance_id={instance_id}الحصول على مساعدة من مساعد الذكاء الاصطناعي
GET /api/ai_assistant?instance_id={instance_id}&schema={schema_name}مثال: تدفق تعليق كامل
import requests
BASE_URL = "http://localhost:8000"
session = requests.Session()
# 1. Login
session.post(f"{BASE_URL}/auth", data={
"username": "annotator1",
"password": "password123"
})
# 2. Get current instance
response = session.get(f"{BASE_URL}/api/current_instance")
instance_id = response.json()["instance_id"]
# 3. Get instance content
response = session.get(f"{BASE_URL}/api/spans/{instance_id}")
print(f"Text: {response.json()['text']}")
# 4. Submit annotation
session.post(f"{BASE_URL}/updateinstance", json={
"instance_id": instance_id,
"annotations": {"sentiment:positive": "1"}
})
# 5. Navigate to next instance
session.post(f"{BASE_URL}/go_to", json={"action": "next_instance"})مثال: مراقبة المشرف
import requests
BASE_URL = "http://localhost:8000"
# Get overview
overview = requests.get(f"{BASE_URL}/admin/api/overview").json()
print(f"Progress: {overview['completion_rate']*100:.1f}%")
# Get agreement metrics
agreement = requests.get(f"{BASE_URL}/admin/api/agreement").json()
print(f"Agreement: alpha = {agreement['overall']['average_krippendorff_alpha']:.3f}")استجابات الخطأ
قد تُعيد أي نقطة طرفية استجابات خطأ:
{"error": "Description of the error"}رموز حالة HTTP الشائعة:
400- طلب خاطئ (معاملات غير صالحة)401- غير مصرّح (لا جلسة)403- ممنوع (صلاحيات غير كافية)404- غير موجود500- خطأ داخلي في الخادم
قراءات إضافية
- لوحة تحكم المشرف - واجهة مشرف عبر الويب
- ضبط الجودة - واجهة مقاييس الجودة البرمجية
- التتبّع السلوكي - واجهة تتبّع التفاعل البرمجية
للاطلاع على تفاصيل التنفيذ، انظر التوثيق المصدري.