AGENTO
v1.1.0 · التوثيق
التوثيق/أدلة ومراجع/وصفات عملية

وصفات عملية

2026-10-15·المصدر 4bebed4·4 دقائق للقراءة·26 / 27

ستتعلم: اختر نمطًا يناسب حالتك واقرأ متطلباته قبل دمجه.

اختر الوصفة حسب السلوك المطلوب

توضح هذه الأمثلة إعدادات لسلوك محدد. ابدأ بملف Config يعمل ويحتوي version: "2"، مثل أول Tool، ثم أضف القسم المناسب. المقطع الذي يبدأ بـ - id: عنصر في قائمة tools، أما request: أو behavior: فهما قسم داخل Tool موجودة.

قبل نسخ المقطع، عرّف كل Input path يقرأه، وكل Dependency يسميها، وكل Tool ينتقل إليها. استخدم مثال الحجز إذا أردت ملفًا كاملًا يعمل دون تجميع.

افهم النتيجة قبل نسخ النمط

لا يحمل GET العام بيانات اعتماد مستخدم، ويجب أن يعرض بيانات عامة فقط. يمرّر GET بمصادقة session قيمة Token ويعتمد صلاحيات API. ويمثل service key الخادم؛ استخدمه عندما تتوافق سلطة الخادم مع صلاحيات REST Endpoint.

عند إضافة Confirmation، يعيد AGENTO الحالة needs_confirmation وينتظر الموافقة قبل تنفيذ الكتابة. ويغيّر إخفاء option ID ما يراه العميل، وليس قيمة API الداخلية المستخدمة في Mapping. وتغيّر إضافة مخزن أو limiter مخصص مكان حفظ الحالة، مع ضرورة الالتزام بقواعد الـ Runtime للتخزين والتزامن.

تحقّق من الوصفة بعد تركيبها

تحقق من الإعداد بعد الدمج، ثم استدعِ Tool القراءة على بيئة اختبار من API لديك وقارن الطلب المتوقع. استخدم Responses محفوظة أو Mock لاختبار الأخطاء وتكرار الكتابة دون إحداث تغييرات حقيقية. اختبر القيمة الغائبة ومسار الرفض أيضًا. لا تنسخ معاينة تقرأ $.service_name دون تعريف الحقل وتعبئته، ولا تضف Recovery لـ availability دون تعريفها كـ Dependency في الـ Tool نفسها.

تفترض مقاطع التطبيق أدناه وجود قيم Session ورسالة والـ Token مصرح بها، ودوال عرض من تطبيقك. هي أمثلة ربط، ويظل التعامل مع الحالات في مسار التشغيل مطلوبًا.

كل مقطع أدناه يعالج قرارًا محددًا. لا يمثل ملف إعداد كاملًا إلا إذا احتوى جذر version وقائمة tools وما تشير إليه من Tools. راجع المتطلبات الموضحة أعلاه قبل الدمج.

GET عامة للقراءة فقط

- id: list-categories
  tool:
    description: List public categories.
    input_schema:
      type: object
      properties: {}
  request:
    method: GET
    url: https://api.example.com/categories

GET بمصادقة المستخدم

- id: my-bookings
  tool:
    description: List the signed-in user's bookings.
    input_schema:
      type: object
      properties: {}
  request:
    method: GET
    url: https://api.example.com/bookings
    auth:
      type: session

في التطبيق المضيف:

runtime.chat({
  sessionId,
  message: "Show my bookings",
  auth: { token: accessToken },
});

API key لخدمة

request:
  auth:
    type: api-key
    env: PARTNER_API_KEY
    header: X-API-Key

POST مع Confirmation

behavior:
  effect: side-effect
  confirmation:
    required: true
    preview:
      service: $.service_name
      date: $.date
request:
  method: POST
  url: https://api.example.com/bookings

إجراء مدمّر للبيانات

behavior:
  effect: destructive
  confirmation:
    required: true

استخدم معاينة واضحة وواجهة في التطبيق المضيف تميّز بصريًا أثر الإجراء المدمّر.

استدعاء مباشر دون AI Model

const runtime = await AgentRuntime.create({
  configPath: "./config.yml",
  presentation: "raw",
});

await runtime.invoke({
  sessionId,
  tool: "list-categories",
  arguments: {},
});

محادثة بالـ AI Model مع واجهة تعتمد على البيانات الخام

const result = await runtime.chat({
  sessionId,
  message,
  presentation: "both",
});

renderNaturalLanguage(result.message);
renderStructuredCards(result.data);

سياق tenant موثوق

await runtime.chat({
  sessionId,
  message,
  context: {
    tenant: { id: tenantId },
  },
});
request:
  map:
    headers:
      X-Tenant-Id:
        source: session
        path: $.tenant.id

إلغاء طلب

const controller = new AbortController();

const promise = runtime.chat({
  sessionId,
  message,
  signal: controller.signal,
});

controller.abort();

إخفاء الـ ID الأصلي للخيار

selection:
  items_path: $.accounts
  id_path: $.internal_id
  label_path: $.display_name
  id_sensitive: true

التعافي عند تغيّر التوافر

behavior:
  effect: side-effect
  confirmation:
    required: true
  recovery:
    refresh_dependency: availability
    statuses: [409, 410]

استخدمه عندما يمكن أن تصبح بيانات الكتابة المؤكدة قديمة بين Selection والتنفيذ. يحدّث Runtime الـ Dependency المخصصة للقراءة فقط، ويسأل المستخدم مجددًا، بدل إعادة الكتابة بصمت.

محدّد معدل مخصص

const runtime = await AgentRuntime.create({
  configPath: "./config.yml",
  rateLimiter: sharedLimiter,
});

نفّذ الواجهة:

interface RateLimiter {
  consume(key: string, limit: number, windowMs: number): Promise<void>;
}

Retriever مخصص لآلاف الـ Tools

const runtime = await AgentRuntime.create({
  configPath: "./config.yml",
  retriever: myVectorOrDomainRetriever,
});

أعد IDs لـ Tools موجودة ودرجات مطابقتها فقط؛ يستمر ToolRouter في التحقق من المرشحين واستدعاءات الـ Tools النهائية.