تنسيق JSON للأدوات الذكية

طريقة محمولة لمشاركة الأدوات الذكية من SkyDeck.AI المكتوبة بلغة البرمجة Python

الشامل

لإنشاء أداة ذكية على SkyDeck.AI، يجب عليك رفع مجموعة من الملفات وفقًا للمواصفات المذكورة في قسم البنية الملفية. بمجرد الرفع، ستقوم منصتنا بإجراء الإعداد الأولي، والذي قد يستغرق بضع دقائق. بعد ذلك، ستكون الأداة متاحة في مساحة العمل GenStudio.

هيكل الملف

<اسم_الأداة>.json

يتم تكوين سلوك الأداة أيضًا من خلال ملف JSON. فيما يلي نظرة عامة موجزة على الحقول الرئيسية في التكوين:

  • النسخة: النسخة الحالية للأداة.

  • اسم_الأداة: اسم الأداة. يجب أن يكون هذا الاسم فريدًا في مساحة العمل الخاصة بك.

  • كود_الأداة: يحتوي على الكود البرمجي Python الذي سيتم تنفيذه. سيتم توضيح المزيد من التفاصيل حول هذا الحقل في القسم التالي.

  • الوصف: وصف موجز لما تقوم به الأداة.

  • ملاحظات_الاستخدام: التعليمات حول كيفية استخدام الأداة.

  • نسخة_النموذج: حدد النماذج التي يُسمح باستخدامها للأسئلة اللاحقة. لتحديد جميع النماذج، استخدم ["gpt-4", "gpt-3.5", "claude", "chat-bison"].

  • المُنشئ: معلومات حول منشئ الأداة، بما في ذلك الاسم، البريد الإلكتروني والمنظمة.

  • المتغيرات: مصفوفة من المتغيرات التي يستخدمها الأداة. لكل متغير اسم، وصف، وقيمة افتراضية. تتبع ترتيب المتغيرات في الواجهة الرسومية الترتيب في هذه المصفوفة.

  • الناتج_المتوقع: نوع الناتج الذي تنتجه الأداة. خلال مرحلة التطوير، يجب أن تكون القيمة نصًا دائمًا.

  • نوع_الصورة_الرمزية: تنسيق الصورة الرمزية المستخدمة في واجهة الأداة.

  • الطابع الزمني: التاريخ والوقت الذي تم فيه تحديث الأداة للمرة الأخيرة.

  • المتطلبات: تحدد الحزم المطلوبة لتشغيل البرنامج النصي في كود_الأداة.

  • الصورة_الرمزية: السلسلة التي تمثل شعار هذه الأداة

اتفاقية tool_code:

تتضمن هذه البرامج النصية وظائف أداتك. العنصر الرئيسي لهذه البرامج النصية هو الدالة execute ، التي لها المتطلبات التالية:

  • يجب أن تحتوي الدالة على معامل إدخال واحد يسمى variables، يكون على شكل قاموس. يتوافق كل مفتاح في هذا القاموس مع حقل يدخله المستخدم في أداتك.

  • يجب أن ترجع الدالة سلسلة، سيتم عرضها كرد في واجهة المستخدم في GenStudio.

أدوات المثال

توليد الصور باستخدام DALL-E 2

الوصف:

تقبل هذه الأداة وصف الصورة كإدخال وتولد رابطًا مماثلاً للصورة. يتضمن الإخراج الرابط مع ملاحظة انتهاء صلاحيته. تعمل الأداة بإرسال الاستعلام إلى DALL-E API الخاص بـ OpenAI واستعادة الرد.

المدخلات

  • الوصف: وصف الصورة، مثلا "قط فروي أبيض"

الإخراج

  • رسالة مع الرابط المولد للصورة إلى جانب ملاحظة انتهاء الصلاحية.

سكريبت Python (الذي سيكون حقلًا داخل image_generation.json):

import openai
def execute(variables):
    openai.api_key = '<مفتاح API للمستخدم>'
    description = variables['الوصف']
    response = openai.Image.create(
        prompt=description,
        n=1,
        size="1024x1024"
    )
    image_url = response['data'][0]['url']
    return f"هنا رابط لصورتك:{image_url}. سينتهي الرابط خلال ساعة واحدة."

image_generation.json

{
    "الإصدار": "0.1",
    "البيانات الوصفية": {
        "اسم_الأداة": "توليد الصور",
        "كود_الأداة": "قم بالاستيراد openai\n\ndef execute(variables):\n openai.api_key = ''\n الوصف = variables['الوصف']\n الرد = openai.الصورة.خلق(\n فورية=الوصف,\n n=1,\n حجم=\"1024x1024\"\n )\n\n رابط_الصورة = الرد['البيانات'][0]['الرابط']\n return f\"هنا الرابط لصورتك:{رابط_الصورة}. الرابط سيتم انتهاءه في 1 ساعة.\"\n",
        "الوصف": "تم توليد صورة استنادًا إلى الوصف باستخدام نموذج DALL-E التابع لـ OpenAI.",
        "ملاحظات_الاستخدام": "صف الصورة بالتفصيل وضعها في حقل الوصف. فإن رابط الصورة سيتم إرجاعه. عمر الرابط يبلغ حوالي 1 ساعة ، لذا تأكد من تحميله قبل انتهاء الصلاحية",
        "نسخة_النموذج": ["gpt-3.5","gpt-3.5-توربو", "gpt-4", "كلود"],
        "المنشئ": {
            "الاسم": "SkyDeck AI",
            "البريد الإلكتروني": "skydeck@eastagile.com",
            "المنظمة": "East Agile"
        },
        "المتغيرات": [
            {
                "الاسم": "الوصف",
                "الوصف": "وصف الصورة",
                "الافتراضي": "قط سيامى ابيض"
            }
        ],
        "المخرجات_المتوقعة": {
            "نوع": "نص"
        },
        "نوع_الصورة": "base64",
        "التوقيت": "2023-05-23T10:00:00Z",
        "المتطلبات": "openai>=0.27.4",
        "الصورة": ""
    }
}

التقرير الجوي الفوري باستخدام Open-Meteo API

الوصف:

تقوم هذه الأداة بالاستفادة من واجهة برمجة التطبيقات (API) الخاصة بـ Open-Meteo لتقديم معلومات طقس فورية بناءً على أسئلة المستخدمين. عن طريق طرح سؤال حول الطقس، مثل درجة الحرارة، أو الهطول المطري، أو ظروف الرياح، تقوم الأداة بالتحصيل على البيانات الأكثر صلة وتحديثًا.

تعتمد وظيفة هذه الأداة على APIChain – وهي ميزة من مكتبة LangChain - للوصول إلى توثيقات واجهة برمجة التطبيقات الخاصة بـ Open-Meteo. هذا يمكن الأداة من التعلم حول كيفية إجراء مكالمات الواجهة البرمجية بشكل صحيح والاستعادة المعلومات المطلوبة بدون عناء.

الإدخال:

  • السؤال: اطرح سؤالًا محددًا حول الطقس، مثل: "ما هي درجة الحرارة الحالية في مدينة نيويورك؟"

الخروج:

  • رد يقدم المعلومات الجوية المطلوبة.

البرنامج النصي لـ Python (والذي سيكون حقلًا داخل weather_reporter.json):

from langchain.chains.api import open_meteo_docs
from langchain.chat_models import ChatOpenAI
from langchain.chains import APIChain
def execute(variables):
    question = variables['Question']
    llm = ChatOpenAI(
        model_name='gpt-3.5-turbo',
        openai_api_key='<مفتاح API للمستخدم>'
    )
    api_chain = APIChain.from_llm_and_api_docs(
        llm, open_meteo_docs.OPEN_METEO_DOCS, verbose=False
    )
    result = api_chain.run(question)
    return result

weather_reporter.json

{
  "version": "0.1",
  "metadata": {
    "tool_name": "مُبلغ الطقس",
    "tool_code": "from langchain.chains.api import open_meteo_docs\nfrom langchain.chat_models import ChatOpenAI\nfrom langchain.chains import APIChain\n\n\ndef execute(variables):\n question = variables['Question']\n llm = ChatOpenAI(model_name='gpt-3.5-turbo',\n openai_api_key='')\n api_chain = APIChain.from_llm_and_api_docs(\n llm, open_meteo_docs.OPEN_METEO_DOCS, verbose=False)\n result = api_chain.run(question)\n return result\n",
    "description": "استفد من Open-Meteo API للحصول على تفاصيل الطقس الحالية",
    "usage_notes": "أدخل سؤالك المتعلق بالطقس في الحقل المُحدد",
    "model_version": ["gpt-3.5", "gpt-3.5-turbo", "gpt-4", "claude"],
    "creator": {
      "name": "SkyDeck AI",
      "email": "skydeck@eastagile.com",
      "organization": "East Agile"
    },
    "variables": [
      {
        "name": "Question",
        "description": "اسأل عن ظروف الطقس",
        "default": "ما هي درجة الحرارة الحالية في ميونيخ, ألمانيا، مُعبر عنها بدرجات مئوية؟"
      }
    ],
    "expected_output": {
      "type": "text"
    },
    "avatar_type": "base64",
    "timestamp": "2023-07-13T10:00:00Z",
    "requirements": "openai>=0.27.4\nlangchain>=0.0.229",
    "avatar": ""
  }
}

القيود

يسمح AWS Lambda بتشغيل الوظيفة لمدة 15 دقيقة كحد أقصى و 10GB من الرام فقط. لذا يجب أن تنتهي الأدوات من تنفيذها في غضون هذا القيد.

Last updated