Skip to content

نظرة عامة على الواجهة البرمجية

مرجع واجهة HTTP البرمجية في Potato — نقاط طرفية للمشرف لإدارة المُعلّقين، وإطلاق عمليات التصدير، والاستعلام عن إحصاءات التقدّم، والتكامل مع خطوط خارجية.

يوفّر Potato نقاطًا طرفية لواجهة HTTP برمجية للتكامل مع واجهات أمامية مخصصة أو نصوص أتمتة أو أنظمة خارجية.

نظرة عامة

عنوان URL الأساسي

text
http://localhost:8000

المصادقة

تتطلب معظم النقاط الطرفية جلسة نشطة تُنشأ عبر نقاط تسجيل الدخول وتُحفظ عبر الكوكيز.

للوصول البرمجي:

  1. استخدم كوكيز الجلسة من متصفح
  2. استخدم وضع التصحيح مع إنشاء مستخدم تلقائي
  3. نفّذ تدفق تسجيل الدخول برمجيًّا

صيغة الاستجابة

تُعيد جميع النقاط الطرفية استجابات JSON. وتتضمن استجابات الخطأ حقل error.

إدارة الجلسات

تسجيل الدخول

http
POST /auth
Content-Type: application/x-www-form-urlencoded
 
username=your_username&password=your_password

فحص الجلسة

http
GET /api/current_instance

الاستجابة:

json
{
  "instance_id": "item_001",
  "current_index": 0,
  "total_instances": 100
}

تسجيل الخروج

http
POST /logout

نقاط التعليق الطرفية

الحصول على العنصر الحالي

http
GET /api/current_instance

يُعيد معلومات عن عنصر التعليق الحالي للمستخدم.

الحصول على محتوى العنصر

http
GET /api/spans/{instance_id}

يُعيد المحتوى النصي وتعليقات النطاقات الموجودة.

الاستجابة:

json
{
  "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"
    }
  ]
}

الحصول على التعليقات

http
GET /get_annotations?instance_id={instance_id}

يُعيد كل تعليقات عنصر بعينه.

إرسال تعليق

http
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"
    }
  ]
}

الاستجابة (نجاح):

json
{
  "status": "success",
  "processing_time_ms": 15
}

الاستجابة (مع ضبط الجودة):

json
{
  "status": "success",
  "qc_result": {
    "type": "gold_standard",
    "correct": false,
    "gold_label": {"sentiment": "positive"}
  }
}

الانتقال إلى عنصر

http
POST /go_to
Content-Type: application/json
 
{"go_to": "item_005"}

أو بحسب الإجراء:

json
{"action": "next_instance"}

معلومات المخطط

الحصول على مخططات التعليق

http
GET /api/schemas

الحصول على ألوان التصنيفات

http
GET /api/colors

الحصول على تظليلات الكلمات المفتاحية

http
GET /api/keyword_highlights/{instance_id}

نقاط واجهة المشرف الطرفية

تتطلب نقاط المشرف الطرفية صلاحيات مشرف.

فحص السلامة

http
GET /admin/health

نظرة عامة على لوحة التحكم

http
GET /admin/api/overview

الاستجابة:

json
{
  "total_items": 1000,
  "total_annotations": 5000,
  "total_users": 25,
  "completion_rate": 0.45
}

الحصول على المُعلّقين

http
GET /admin/api/annotators

الحصول على العناصر

http
GET /admin/api/instances?status=completed&limit=100

الحصول على الإعدادات

http
GET /admin/api/config

تحديث الإعدادات

http
POST /admin/api/config
Content-Type: application/json
 
{"setting_name": "value"}

واجهة ضبط الجودة البرمجية

مقاييس ضبط الجودة

http
GET /admin/api/quality_control

يُعيد إحصاءات فحوص الانتباه والمعيار الذهبي.

مقاييس الاتفاق

http
GET /admin/api/agreement

يُعيد ألفا لكريبندورف حسب المخطط.

واجهة مساعد الذكاء الاصطناعي البرمجية

الحصول على اقتراح من الذكاء الاصطناعي

http
GET /get_ai_suggestion?instance_id={instance_id}

الحصول على مساعدة من مساعد الذكاء الاصطناعي

http
GET /api/ai_assistant?instance_id={instance_id}&schema={schema_name}

مثال: تدفق تعليق كامل

python
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"})

مثال: مراقبة المشرف

python
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}")

استجابات الخطأ

قد تُعيد أي نقطة طرفية استجابات خطأ:

json
{"error": "Description of the error"}

رموز حالة HTTP الشائعة:

  • 400 - طلب خاطئ (معاملات غير صالحة)
  • 401 - غير مصرّح (لا جلسة)
  • 403 - ممنوع (صلاحيات غير كافية)
  • 404 - غير موجود
  • 500 - خطأ داخلي في الخادم

قراءات إضافية

للاطلاع على تفاصيل التنفيذ، انظر التوثيق المصدري.