الانتقال إلى المحتوى الرئيسي
نوصي بترحيل أي استخدام لـ /chat/send-message و /chat/send-message-simple-api إلى هذه الواجهة الجديدة بحلول 1 فبراير 2026.
واجهة /chat/send-chat-message API تُستخدم لإرسال رسالة إلى Gorbit. إنها نفس الواجهة التي تستخدمها الواجهة الأمامية لـ Gorbit لإرسال واستلام الرسائل. لديك خيار تلقي استجابة مبثوثة أو الاستجابة الكاملة كسلسلة. سيرشدك هذا الدليل إلى جميع المعلمات التي يمكنك تمريرها إلى الواجهة ويوفر نموذج رمز.

معلمات الطلب

المعلمةالوصف
messageرسالة المستخدم لإرسالها إلى الوكيل.
llm_overrideتمرير كائن لتجاوز إعدادات LLM الافتراضية لهذا الطلب. إذا None، ستحصل على سلوك Gorbit الافتراضي.

يمكنك تمرير أو استبعاد أي من الحقول التالية:
model_provider
model_version
temperature

إذا مررت تكوينًا غير صالح (مثل تحديد claude-sonnet-4.5 عندما يكون model_provider الافتراضي هو OpenAI)، سيفشل طلبك.
allowed_tool_idsيتم إنشاء الوكلاء مع مجموعة من الإجراءات المسموح لهم باستدعاؤها. يمكنك تكوين هذه المجموعة بشكل أكبر لتفاعلك الفوري باستخدام هذه المعلمة. راجع قائمة الإجراءات ومعرفاتها عبر نقطة النهاية GET /tool. مرر قائمة فارطة لتعطيل جميع الإجراءات. مرر None للسماح بجميع الإجراءات المكونة للوكيل.
forced_tool_idإجبار الوكيل على استخدام إجراء محدد لهذا الطلب. قد يقوم الوكيل بتشغيل إجراءات أخرى قبل إرجاع استجابته النهائية، لكنه مضمون لاستخدام هذا الإجراء. اتركه فارغًا للسماح للوكيل بتحديد الإجراءات التي سيستخدمها.
file_descriptorsقائمة الملفات لتضمينها مع طلبك. يمكن العثور على معرفات الملفات عبر نقاط النهاية POST /user/projects/file/upload و GET /user/projects/file/.
search_filtersمرشحات لتضييق نتائج البحث الداخلية المستخدمة من قبل الوكيل. جميع معاملات المرشح اختيارية ويمكن دمجها:

source_type – أنواع المصادر مثل web، slack، google_drive، confluence
document_set – اسم مجموعات المستندات للبحث فيها
time_cutoff – تنسيق ISO 8601: YYYY-MM-DDTHH:MM:SSZ
tags – التنسيق: {"tag_key": "tag_value"}
deep_researchتفعيل وضع البحث العميق لهذا الطلب.

ملاحظة: هذا الوضع يستهلك رموزًا أكثر بكثير، لذا كن حذرًا عند الوصول إليه عبر API.
parent_message_idمعرف الرسالة الأصل في سجل المحادثة (المفتاح الأساسي للرسالة السابقة في شجرة سجل المحادثة). إذا لم يتم تمريره، يُفترض أن رسالتك الجديدة تأتي تسلسليًا بعد الرسالة الأخيرة.

تحذير: إذا تم التعيين على None، يتم إعادة تعيين سجل المحادثة وتُعتبر الرسالة الجديدة أول رسالة في سجل المحادثة.
chat_session_idلمتابعة محادثة موجودة، مرر معرف جلسة المحادثة التي يجب إرسال الرسالة إليها. إذا تُرك فارغًا، سيتم إنشاء جلسة محادثة جديدة وفقًا لـ chat_session_info.
chat_session_infoتفاصيل حول جلسة المحادثة التي سيتم استخدامها لجميع الرسائل في الجلسة. يمكن ترك الحقول فارغة لاستخدام الإعدادات الافتراضية.

persona_id – معرف الوكيل المراد استخدامه لجلسة المحادثة
project_id – معرف المشروع إذا كان يجب تحديد نطاق المحادثة إلى مشروع
streamإذا كان صحيحًا، يستجيب بدفق SSE من الحزم الفردية (نفس المجموعة المستخدمة لواجهة Gorbit). يجب تجميع حقول مثل الإجابة، والرموز المميزة للتفكير، واستدعاءات الأداة التكرارية من الرموز المميزة المبثوثة.
include_citationsإذا كان صحيحًا، ستتضمن الردود استشهادات للمصادر المستخدمة لإنشاء الإجابة.
additional_contextسلسلة من السياق الإضافي المحقونة في استدعاء LLM لهذا الطلب. يتم تمرير السياق إلى النموذج لكنه غير مخزن في قاعدة البيانات ولن يظهر في سجل المحادثة.
استخدم هذا لتوفير معلومات مؤقتة محددة النطاق بالطلب (مثل URL الصفحة الحالية للمستخدم، أو بيانات الجلسة الوصفية، أو أي سياق وقت التشغيل) دون تلويث سجل المحادثة المستمر.
مرر null أو احذف الحقل لعدم استخدام سياق إضافي.

تنسيق الاستجابة

الاستجابة المبثوثة

تُرجع Gorbit أنواعًا مختلفة من الحزم في الاستجابة المبثوثة اعتمادًا على سلوك LLM. راجع streaming_models.py على GitHub للحصول على القائمة الكاملة لأنواع الحزم وحقولها المقابلة.
class StreamingType(Enum):
    """تعداد يحدد جميع أنواع حزم البث."""

    SECTION_END = "section_end"
    STOP = "stop"
    TOP_LEVEL_BRANCHING = "top_level_branching"
    ERROR = "error"

    MESSAGE_START = "message_start"
    MESSAGE_DELTA = "message_delta"
    SEARCH_TOOL_START = "search_tool_start"
    SEARCH_TOOL_QUERIES_DELTA = "search_tool_queries_delta"
    SEARCH_TOOL_DOCUMENTS_DELTA = "search_tool_documents_delta"
    OPEN_URL_START = "open_url_start"
    OPEN_URL_URLS = "open_url_urls"
    OPEN_URL_DOCUMENTS = "open_url_documents"
    IMAGE_GENERATION_START = "image_generation_start"
    IMAGE_GENERATION_HEARTBEAT = "image_generation_heartbeat"
    IMAGE_GENERATION_FINAL = "image_generation_final"
    PYTHON_TOOL_START = "python_tool_start"
    PYTHON_TOOL_DELTA = "python_tool_delta"
    CUSTOM_TOOL_START = "custom_tool_start"
    CUSTOM_TOOL_DELTA = "custom_tool_delta"
    REASONING_START = "reasoning_start"
    REASONING_DELTA = "reasoning_delta"
    REASONING_DONE = "reasoning_done"
    CITATION_INFO = "citation_info"

    DEEP_RESEARCH_PLAN_START = "deep_research_plan_start"
    DEEP_RESEARCH_PLAN_DELTA = "deep_research_plan_delta"
    RESEARCH_AGENT_START = "research_agent_start"
    INTERMEDIATE_REPORT_START = "intermediate_report_start"
    INTERMEDIATE_REPORT_DELTA = "intermediate_report_delta"
    INTERMEDIATE_REPORT_CITED_DOCS = "intermediate_report_cited_docs"

الاستجابة غير المبثوثة

class ChatFullResponse(BaseModel):
    """استجابة كاملة غير مبثوثة مع جميع البيانات المتاحة."""

    # حقول الاستجابة الأساسية
    answer: str
    answer_citationless: str
    pre_answer_reasoning: str | None = None
    tool_calls: list[ToolCallResponse] = []

    # المستندات والاستشهادات
    top_documents: list[SearchDoc]
    citation_info: list[CitationInfo]

    # البيانات الوصفية
    message_id: int
    chat_session_id: UUID | None = None
    error_msg: str | None = None

نموذج طلب

import requests

API_BASE_URL = "https://cloud.gorbit.app/api"  # أو نطاقك الخاص
API_KEY = "YOUR_KEY_HERE"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

response = requests.post(
    f"{API_BASE_URL}/chat/send-chat-message",
    headers=headers,
    json={
        "message": "ما هو Gorbit؟",
    }
)

data = response.json()
print("الإجابة:", data["answer"])
print("معرف الرسالة:", data["message_id"])

الخطوات التالية