الانتقال إلى المحتوى الرئيسي

الإجراءات و MCP

الإجراءات (تسمى أيضاً الأدوات في الواجهة الخلفية) هي الوظائف التي يمكن لعمالك تنفيذها للتفاعل مع الأنظمة والخدمات الخارجية. إنها توسع قدرات وكلائك إلى ما بعد نموذج اللغة فقط.الإجراءات المدمجة:
NameDescriptionRequires ConfigProvider Choices
Internal SearchSearch through your organization’s indexed documents and knowledge baseYesBuilt-in with swappable components
Web SearchSearch the internet for real-time information and current eventsYesGoogle, Serper, Exa, Firecrawl (optional)
Code InterpreterExecute Python code, analyze data, and generate visualizationsNoBuilt-in
Image GenerationCreate images from text descriptions using AI modelsYesOpenAI, Azure OpenAI
دعم SCIM لموفري الهوية الشائع قريباً!
الإجراءات المخصصة:
  • تكاملات API: الاتصال بـ REST APIs الخارجية
  • عمليات قواعد البيانات: الاستعلام وتحديث قواعد البيانات
  • أتمتة سير العمل: تشغيل عمليات الأعمال
  • عمليات الملفات: القراءة والكتابة ومعالجة الملفات
يمكنك تعريف الإجراءات المخصصة الخاصة بك في لوحة الإدارة باستخدام مواصفات OpenAPI.
بروتوكول سياق النموذج (MCP) هو معيار مفتوح يتيح لمساعدي الذكاء الاصطناعي الوصول بأمان إلى مصادر البيانات والأدوات الخارجية. يمكن تهيئة Gorbit كعميل MCP للتفاعل مع الأنظمة وقواعد البيانات، و APIs بطريقة محكومة.الميزات الرئيسية لـ MCP:
  • الوصول للبيانات الخارجية: الاتصال بقواعد البيانات و APIs وأنظمة الملفات
  • المصادقة: التمرير عبر OAuth لضمان الوصول الآمن لخادم MCP الخاص بك.
في بعض الأحيان، تحتاج إلى مزيد من التحكم في إجرك أكثر مما هو ممكن مع الإجراء المخصص. بما أن Gorbit مفتوح المصدر، يمكنك توسيع الإجراءات المدمجة حسب رغبتك!للعثور على قوالب الإجراءات المدمجة، راجع backend/gorbit/tools/tool_implementations في مستودع Gorbit.
توسيع قاعدة الكود غير موصى به لمعظم المستخدمين. قبل أن تبدأ، يرجى التواصل معنا على Slack أو Discord للحصول على الدعم!

الوكلاء

الوكلاء هم مساعدي ذكاء اصطناعي مع تعليمات وإجراءات ووصول للبيانات مخصصة توسع قدرات LLM الأساسية.
The terms Personas, Assistants, and Agents are used interchangeably throughout Gorbit and refer to the same concept.
الوكلاء المدمجون:
  • id: 0 وكيل البحث - يستخدم أداة البحث للإجابة على الأسئلة من قاعدة المعرفة الخاصة بك
  • id: -1 الوكيل العام - محادثة أساسية بدون أدوات (محادثة أساسية مع LLM)
  • id: -2 وكيل إعادة الصياغة - يستخدم أداة البحث ويقتبس مقتطفات دقيقة من المصادر
  • id: -3 وكيل الفن - ينشئ صوراً ومحتوى مرئياً
يمكنك إنشاء وكلائك الخاصين في لوحة الإدارة أو عبر API.معظم نقاط نهاية المحادثة تتطلب معرف الوكيلللعثور على معرف الوكيل الخاص بك، يمكنك:
  • استخدام نقطة نهاية API GET /persona لعرض قائمة جميع الوكلاء
  • في لوحة الإدارة: انقر على وكيل وتحقق من الرقم الأول في URL

المحادثة

يستخدم نظام استجابة المحادثة بنية قائمة على الحزم لتقديم استجابات في الوقت الفعلي للمستخدمين. بدلاً من انتظار استجابة كاملة، يقوم النظام بتقسيم تفاعل المحادثة إلى حزم منفصلة يمكن بثها بشكل تدريجي.كل حزمة تتبع بنية متسقة محددة بواسطة فئة Packet:
class Packet(BaseModel):
  ind: int        # فهرس تسلسلي للترتيب
  obj: PacketObj  # المحتوى الفعلي بما في ذلك نوع الحزمة
تدفق البث:
  • يطلب طلب المحادثة تشغيل عملية البث
  • يتم إنشاء أنواع مختلفة من الحزم بناءً على العمليات المطلوبة (التفكير، استدعاءات الأدوات، استجابة AI، المستندات، الاستشهادات، إلخ)
  • يتم إرسال الحزم بفهارس تسلسلية للحفاظ على الترتيب
  • تعالج الواجهة الأمامية الحزم في الوقت الفعلي لتحديث واجهة المستخدم
  • حزمة OverallStop تشير إلى الاكتمال
MessageStart و MessageDeltaتشكل هذه الحزم جوهر نظام الاستجابة المبثوقة:
  • MessageStart: تبدأ رسالة جديدة بمحتوى أولي ومستندات البحث النهائية (إن وجدت)
  • MessageDelta: تقدم محتوى نصي تزايدي أثناء إنشائه
إدارة الجلسة والقسمتدير حزم التحكم تدفق ودورة حياة عملية البث:
  • OverallStop: تشير إلى نهاية جلسة البث بالكامل
  • SectionEnd: تحدد اكتمال نوع حزمة (التفكير، الرسالة، الاستشهادات، إلخ)
يتم بث استجابات الأدوات بنفس طريقة استجابة الرسالة الرئيسية.أدوات البحث
  • SearchToolStart و SearchToolDelta تتعامل مع عمليات البحث في المستندات
توليد الصور
  • ImageGenerationToolStart و ImageGenerationToolDelta و ImageGenerationToolHeartbeat تدير إنشاء صور AI
الأدوات المخصصة
  • CustomToolStart و CustomToolDelta تُستخدم لـ MCP والإجراءات المخصصة
حزمة البداية تشير إلى بدء استجابة الأداة. حزم الدلتا تبث النتائج كما تصبح متاحة.
يتم بث أي خطوات تفكير لتتمكن الواجهة الأمامية من عرضها أثناء معالجة النظام. حزم التفكير عادةً هي الأولى التي يتم إرسالها.
  • ReasoningStart: تبدأ قسم التفكير
  • ReasoningDelta: تبث عملية تفكير AI
تربط حزم الاستشهاد معرفات الاستشهاد بمعرفات المستندات.
  • CitationStart: تبدأ نتائج الاستشهاد
  • CitationDelta: تقدم استشهادات ومراجع المصادر

الموصلات

عندما ترى مصطلح Connector في Gorbit أو في مكان آخر من هذا التوثيق، نشير عموماً إلى ConnectorCredentialPairs
Connectors في Gorbit تحدد البيانات التي تريد فهرستها
  • name: لا يُعرض فعلياً في الواجهة إذا تم تعيين ConnectorCredentialPairMetadata:name
  • source: النظام الذي سيتم الاتصال به (راجع قسم DocumentSource أدناه)
  • input_type: كيف يسترجع Connector البيانات (راجع قسم InputType أدناه)
  • connector_specific_config: إعدادات خاصة بالمصدر مثل مسارات المجلدات أو القنوات. ستحتاج إلى مراجعة /backend/gorbit/connectors للتكوينات الخاصة بكل موصل.
  • refresh_freq: مدى التكرار للتحقق من المحتوى الجديد أو المحدث بالثواني
  • prune_freq: مدى التكرار لإزالة المحتوى القديم من Gorbit بالثواني
  • indexing_start: تاريخ ووقت اختياري لتحديد متى يجب أن تبدأ الفهرسة
Python
class ConnectorBase(BaseModel):
  name: str
  source: DocumentSource
  input_type: InputType
  connector_specific_config: dict[str, Any]
  refresh_freq: int | None = None
  prune_freq: int | None = None
  indexing_start: datetime | None = None
تحتوي Credentials على تفاصيل المصادقة اللازمة للوصول إلى مصادر البيانات. تشمل مفاتيح API، رموز OAuth، رموز الوصول الشخصية (PATs)، أو بيانات اعتماد حساب الخدمة التي تسمح لـ Gorbit بالاتصال بأمان بأنظمتك الخارجية.أنواع Credentials:
  • مفاتيح API: مصادقة بسيطة قائمة على الرمز
  • رموز OAuth: تفويض مفوض مع إمكانيات التحديث
  • حسابات الخدمة: مصادقة آلة إلى آلة
  • رموز الوصول الشخصية: بيانات اعتماد وصول خاصة بالمستخدم
خلف الكواليس، يتم دمج Connectors و Credentials في ConnectorCredentialPair (CC-pair). CC-pair هو اتصال نشط يمكنه مزامنة البيانات من مصادرك الخارجية إلى Gorbit. CC-pairs هي ما تراه وتديره في صفحة Connectors في الإدارة.وظائف CC-pair:
  • الاتصالات النشطة: مزامنة البيانات المباشرة بين المصدر و Gorbit
  • مراقبة الحالة: تتبع صحة المزامنة والأداء
  • التحكم في الوصول: إدارة من يمكنه رؤية البيانات من هذا الاتصال
  • إدارة التكوين: تحديث إعدادات المزامنة وبيانات الاعتماد
إذا كنت تنشئ Connectors من خلال API، يجب ربطها بـ Credential (CC-pair) لجعلها نشطة!
يحدد ConnectorCredentialPairMetadata التكوين وإعدادات الوصول لـ CC-pair.خيارات التكوين:
  • name: اسم عرض اختياري لـ CC-pair (يتجاوز اسم Connector)
  • access_type: من يمكنه الوصول إلى البيانات من هذا CC-pair (راجع قسم AccessType أدناه)
  • auto_sync_options: تكوين اختياري لإعدادات المزامنة التلقائية
  • groups: قائمة معرفات المجموعات التي لديها حق الوصول إلى هذا CC-pair
Python
class ConnectorCredentialPairMetadata(BaseModel):
  name: str | None = None
  access_type: AccessType
  auto_sync_options: dict[str, Any] | None = None
  groups: list[int] = Field(default_factory=list)

المستندات

DocumentBase هي بنية أساسية تُستخدم في جميع أنحاء Gorbit لتخزين وإدارة بيانات المستندات. لاحظ أن التضمينات مخزنة في Vespa بشكل منفصل.
  • id: معرف فريد. يتم إنشاؤه بواسطة Gorbit إذا لم يتم توفيره
  • sections: قائمة أقسام المحتوى (راجع TextSection و ImageSection)
  • source: النظام الذي نشأ منه هذا المستند (راجع DocumentSource)
  • semantic_identifier: يُعرض في الواجهة كاسم المستند
  • metadata: string أو list[string] عشوائي سيتم حفظه كوسوم لهذا المستند
  • doc_updated_at: طابع زمني UTC عندما تم تحديث المستند آخر مرة
  • chunk_count: عدد القطع التي تم تقسيم المستند إليها للمعالجة
  • primary_owners: بيانات وصفية عن الأشخاص المرتبطين بالمستند
  • secondary_owners: بيانات وصفية عن الأشخاص المرتبطين بالمستند
  • title: يُستخدم للبحث (افتراضياً semantic_identifier إذا لم يتم تحديده)
  • from_ingestion_api: ما إذا كان هذا المستند قادماً من Ingestion API
  • additional_info: معلومات خاصة بالموصل قد تحتاجها أجزاء أخرى من الكود
  • external_access: بيانات مزامنة الأذونات (نسخة Enterprise فقط)
توسع Ingestion API تعريف DocumentBase لتشمل cc_pair_id لربط مستند تلقائياً بـ CC-pair.
Python
class DocumentBase(BaseModel):
  """تُستخدم لـ Gorbit ingestion api، يتم استنتاج ID قبل الاستخدام إذا لم يتم توفيره"""

  id: str | None = None
  sections: list[TextSection | ImageSection]
  source: DocumentSource | None = None
  semantic_identifier: str
  metadata: dict[str, str | list[str]]

  doc_updated_at: datetime | None = None
  chunk_count: int | None = None

  primary_owners: list[BasicExpertInfo] | None = None
  secondary_owners: list[BasicExpertInfo] | None = None
  title: str | None = None
  from_ingestion_api: bool = False
  additional_info: Any = None

  external_access: ExternalAccess | None = None
DocumentSource هو تعداد يحدد المصادر الصالحة للمستند. يتطلب رفع الملفات إلى Ingestion API وإنشاء Connectors برمجياً تحديد DocumentSource.
Python
class DocumentSource(str, Enum):
  INGESTION_API = "ingestion_api"     # حالة خاصة، مستند تم تمريره عبر Gorbit APIs بدون تحديد نوع المصدر
  SLACK = "slack"
  WEB = "web"
  GOOGLE_DRIVE = "google_drive"
  GMAIL = "gmail"
  REQUESTTRACKER = "requesttracker"
  GITHUB = "github"
  GITBOOK = "gitbook"
  GITLAB = "gitlab"
  GURU = "guru"
  BOOKSTACK = "bookstack"
  CONFLUENCE = "confluence"
  JIRA = "jira"
  SLAB = "slab"
  PRODUCTBOARD = "productboard"
  FILE = "file"
  NOTION = "notion"
  ZULIP = "zulip"
  LINEAR = "linear"
  HUBSPOT = "hubspot"
  DOCUMENT360 = "document360"
  GONG = "gong"
  GOOGLE_SITES = "google_sites"
  ZENDESK = "zendesk"
  LOOPIO = "loopio"
  DROPBOX = "dropbox"
  SHAREPOINT = "sharepoint"
  TEAMS = "teams"
  SALESFORCE = "salesforce"
  DISCOURSE = "discourse"
  AXERO = "axero"
  CLICKUP = "clickup"
  MEDIAWIKI = "mediawiki"
  WIKIPEDIA = "wikipedia"
  ASANA = "asana"
  S3 = "s3"
  R2 = "r2"
  GOOGLE_CLOUD_STORAGE = "google_cloud_storage"
  OCI_STORAGE = "oci_storage"
  XENFORO = "xenforo"
  NOT_APPLICABLE = "not_applicable"
  DISCORD = "discord"
  FRESHDESK = "freshdesk"
  FIREFLIES = "fireflies"
  EGNYTE = "egnyte"
  AIRTABLE = "airtable"
  HIGHSPOT = "highspot"

  IMAP = "imap"

  # حالة خاصة فقط لاختبارات التكامل
  MOCK_CONNECTOR = "mock_connector"
TextSection هي جزء من مستند في Gorbit.
  • text: المحتوى النصي الفعلي للقسم
  • link: URL اختياري يتعلق به قسم النص هذا أو مصدر منه
Python
class TextSection(Section):
  text: str
  link: str | None = None
ImageSection هي صورة مستخرجة من مستند في Gorbit.
  • image_file_id: UUID لملف الصورة المخزن في مخزن ملفات Gorbit
  • text: وصف نصي اختياري أو تعليق للصورة
  • link: URL اختياري تتعلق به قسم الصورة هذا أو مصدر منه
Python
class ImageSection(Section):
  image_file_id: str
  text: str | None = None
  link: str | None = None
AccessType يحدد من يمكنه الوصول إلى البيانات من Connector في Gorbit.
  • PUBLIC: يمكن لجميع مستخدمي Gorbit الوصول إلى البيانات من هذا Connector
  • PRIVATE: فقط المستخدم الذي أنشأ Connector والمجموعات المحددة يمكنهم الوصول إلى البيانات من هذا Connector
  • SYNC: فقط Connectors مع دعم مزامنة الأذونات يمكن ضبطها على SYNC. سيقوم Connector بمزامنة أذونات الوصول مع النظام المصدر.
Python
class AccessType(str, Enum):
  PUBLIC = "public"
  PRIVATE = "private"
  SYNC = "sync"
InputType يحدد كيف يسترجع Connector البيانات من نظام المصدر الخاص به.
  • LOAD_STATE: تحميل واحد للبيانات من المصدر
  • POLL: استطلاع مستمر للبيانات الجديدة من المصدر (يبدأ بتحميل كامل)
  • EVENT: غير مطبق لمعظم Connectors
  • SLIM_RETRIEVAL: لـ Connectors مع مزامنة الأذونات
Python
class InputType(str, Enum):
  LOAD_STATE = "load_state"
  POLL = "poll"
  EVENT = "event"
  SLIM_RETRIEVAL = "slim_retrieval"

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