
[الإنجليزية] | [中文]
BOT on INTORY هو منشئ chatbot AI قوي يسمح لك ببناء chatbots بسرعة وتشغيله في أي مكان.
يمكن للمطورين إنشاء وتشغيل روبوت حوار ذكي عن طريق تحديد اتصال بين مختلف النماذج الكبيرة من الذكاء الاصطناعي وقنوات التطبيق مع تكوين خفيف الوزن. وهو يدعم سهولة التبديل بين مسارات متعددة داخل مشروع واحد. هذه الهندسة المعمارية لها قابلية التوسع قوية. يمكن لكل تطبيق إعادة استخدام إمكانيات النموذج الحالية ، ويمكن تشغيل كل طراز جديد على جميع قنوات التطبيق.
النماذج:
التطبيقات:
يدعم أنظمة Linux و MacOS و Windows و Python. يوصى باستخدام إصدار Python بين 3.7.1 و 3.10.
استنساخ رمز المشروع وتثبيت التبعيات:
git clone https://github.com/zhayujie/bot-on-anything
cd bot-on-anything/
pip3 install -r requirements.txt ملف التكوين الأساسي هو config.json ، ويتم توفير ملف config-template.json في المشروع ، والذي يمكن نسخه لإنشاء ملف config.json النهائي:
cp config-template.json config.jsonكل نموذج وقناة لها كتلة تكوين خاصة بها ، والتي تشكل معًا ملف تكوين كامل. الهيكل العام كما يلي:
{
" model " : {
" type " : " openai " , # Selected AI model
" openai " : {
# openAI configuration
}
},
" channel " : {
" type " : " slack " , # Channel to be integrated
" slack " : {
# slack configuration
},
" telegram " : {
# telegram configuration
}
}
} يتم تقسيم ملف التكوين إلى أقسام model channel في المستوى الخارجي. قسم النموذج هو لتكوين النموذج ، حيث يحدد type أي نموذج يجب استخدامه ؛ يحتوي قسم القناة على التكوين لقنوات التطبيق ، ويحدد حقل type التطبيق الذي سيتم دمجه.
عند الاستخدام ، تحتاج فقط إلى تغيير حقل type ضمن كتل تكوين النموذج والقناة للتبديل بين أي نموذج وتطبيق ، وتوصيل مسارات مختلفة. أدناه ، سيتم تقديم كل نموذج وتشكيل التطبيق وعملية التشغيل بدوره.
قم بتشغيل الأمر التالي في دليل جذر المشروع ، حيث تكون القناة الافتراضية هي المحطة:
python3 app.py النموذج الافتراضي هو gpt-3.5-turbo . لمزيد من التفاصيل ، راجع الوثائق الرسمية. كما يدعم gpt-4.0 ، فقط قم بتعديل معلمة نوع النموذج.
pip3 install --upgrade openaiملاحظة: يجب أن يكون إصدار Openai أعلى من
0.27.0. في حالة فشل التثبيت ، يمكنك أولاً ترقية PIP معpip3 install --upgrade pip.
{
" model " : {
" type " : " chatgpt " ,
" openai " : {
" api_key " : " YOUR API KEY " ,
" model " : " gpt-3.5-turbo " , # Model name
" proxy " : " http://127.0.0.1:7890 " , # Proxy address
" character_desc " : " You are ChatGPT, a large language model trained by OpenAI, aimed at answering and solving any questions people have, and can communicate in multiple languages. When asked who you are, you should also tell the questioner that entering #clear_memory can start a new topic exploration. Entering draw xx can create a picture for you. " ,
" conversation_max_tokens " : 1000, # Maximum number of characters in the reply, total for input and output
" temperature " :0.75, # Entropy, between [0,1], the larger the value, the more random the selected candidate words, the more uncertain the reply, it is recommended to use either this or the top_p parameter, the greater the creativity task, the better, the smaller the precision task
" top_p " :0.7, # Candidate word list. 0.7 means only considering the top 70% of candidate words, it is recommended to use either this or the temperature parameter
" frequency_penalty " :0.0, # Between [-2,2], the larger this value, the more it reduces the repetition of words in the model's output, leaning towards producing different content
" presence_penalty " :1.0, # Between [-2,2], the larger this value, the less restricted by the input, encouraging the model to generate new words not present in the input, leaning towards producing different content
}
}api_key : املأ OpenAI API KEY عند تسجيل حسابك.model : اسم النموذج ، يدعم حاليًا gpt-3.5-turbo ، gpt-4 ، gpt-4-32k (GPT-4 API غير مفتوح بعد).proxy : عنوان عميل الوكيل ، راجع #56 للحصول على التفاصيل.character_desc : يحفظ هذا التكوين جزءًا من النص الذي تقوله لـ ChatGpt ، وسيتذكر هذا النص كإعداد له ؛ يمكنك تخصيص أي شخصية لذلك.max_history_num [اختياري]: الحد الأقصى لطول الذاكرة للمحادثة ، فإن تجاوز هذا الطول سوف يزيل الذاكرة السابقة.{
" model " : {
" type " : " linkai " ,
" linkai " : {
" api_key " : " " ,
" api_base " : " https://api.link-ai.tech " ,
" app_code " : " " ,
" model " : " " ,
" conversation_max_tokens " : 1000,
" temperature " :0.75,
" top_p " :0.7,
" frequency_penalty " :0.0,
" presence_penalty " :1.0,
" character_desc " : " You are an intelligent assistant. "
},
}api_key : مفتاح الاتصال بخدمة Linkai ، والتي يمكن إنشاؤها في وحدة التحكم.app_code : رمز تطبيق Linkai أو سير العمل ، اختياري ، راجع إنشاء التطبيق.model : يدعم النماذج الشائعة من المصادر المحلية والدولية ، راجع قائمة النماذج. يمكن تركه فارغًا ، ويمكن تعديل النموذج الافتراضي للتطبيق في منصة Linkai. التطبيق الذي يبدأ افتراضيًا في قالب التكوين هو المحطة ، والتي لا تتطلب تكوينًا إضافيًا. يمكنك بدء البرنامج من خلال تنفيذ python3 app.py مباشرة في دليل المشروع. يتفاعل المستخدمون مع نموذج الحوار من خلال إدخال سطر الأوامر ، ويدعم تأثيرات استجابة الدفق.

المساهم: نظام
التبعيات
pip3 install PyJWT flask flask_socketioإعدادات
" channel " : {
" type " : " http " ,
" http " : {
" http_auth_secret_key " : " 6d25a684-9558-11e9-aa94-efccd7a0659b " , // JWT authentication secret key
" http_auth_password " : " 6.67428e-11 " , // Authentication password, just for personal use, a preliminary defense against others scanning ports and DDOS wasting tokens
" port " : " 80 " // Port
}
} تشغيل محليًا: بعد تشغيل python3 app.py ، وصول http://127.0.0.1:80 .
قم بتشغيل خادم: بعد النشر ، الوصول إلى http://public domain or IP:port .
المتطلبات: خادم وحساب اشتراك.
تثبيت تبعية Werobot:
pip3 install werobot " channel " : {
" type " : " wechat_mp " ,
" wechat_mp " : {
" token " : " YOUR TOKEN " , # Token value
" port " : " 8088 " # Port the program listens on
}
} تشغيل python3 app.py في دليل المشروع. إذا تعرض المحطة ما يلي ، فإنه يشير إلى التشغيل الناجح:
[INFO][2023-02-16 01:39:53][app.py:12] - [INIT] load config: ...
[INFO][2023-02-16 01:39:53][wechat_mp_channel.py:25] - [WX_Public] Wechat Public account service start!
Bottle v0.12.23 server starting up (using AutoServer())...
Listening on http://127.0.0.1:8088/
Hit Ctrl-C to quit.
انتقل إلى حساب الاشتراك الشخصي في منصة WeChat الرسمية وتمكين تكوين الخادم:

تكوين عنوان الخادم (URL) : إذا كان يمكنك الوصول إلى برنامج Python على الخادم من خلال عنوان URL الذي تم تكوينه في المتصفح (الاستماع الافتراضي على المنفذ 8088) ، فإنه يشير إلى أن التكوين صالح. نظرًا لأن حساب الاشتراك يمكنه تكوين المنافذ 80/443 فقط ، يمكنك تعديل التكوين للاستماع مباشرة على المنفذ 80 (يتطلب أذونات Sudo) أو استخدام إعادة توجيه الوكيل العكسي (مثل Nginx). وفقًا للوثائق الرسمية ، يمكنك ملء IP العام أو اسم المجال هنا.
تكوين الرمز المميز : يجب أن يكون متسقًا مع الرمز المميز في تكوين config.json .
لعمليات التشغيل التفصيلية ، راجع الوثائق الرسمية.
بعد متابعة المستخدمين حساب الاشتراك ، يمكنهم إرسال الرسائل.
ملاحظة: بعد إرسال المستخدمين للرسائل ، ستضغط الواجهة الخلفية لـ WeChat إلى عنوان عنوان URL الذي تم تكوينه ، ولكن إذا لم يكن هناك رد في غضون 5 ثوانٍ ، فسيتم فصل الاتصال ، وسيتم إعادة محاولته 3 مرات. ومع ذلك ، فإن الطلب إلى واجهة Openai غالبًا ما يستغرق أكثر من 5 ثوان. في هذا المشروع ، أدت طرق التزامن والتخزين المؤقت غير المتزامن إلى تحسين حد المهلة لمدة 5 ثوان إلى 15 ثانية ، ولكن تجاوز هذا الوقت لا يزال لا يسمح بالردود العادية. في الوقت نفسه ، في كل مرة يتم فيها فصل الاتصال بعد 5 ثوان ، سيقوم إطار الويب بالإبلاغ عن خطأ ، سيتم تحسينه لاحقًا.
المتطلبات: خادم وحساب خدمة معتمد.
في حساب خدمة المؤسسة ، يتم حل إصدار المهلة المتقدمة لمدة 15 ثانية من حساب الاشتراك الشخصي عن طريق أولاً الوصول إلى واجهة Openai بشكل غير متزامن ثم الضغط على المستخدم بشكل استباقي من خلال واجهة خدمة العملاء. يشبه تكوين وضع المطور لحساب الخدمة حساب حساب الاشتراك. لمزيد من التفاصيل ، راجع الوثائق الرسمية.
لا يحتاج تكوين config.json لحساب خدمة المؤسسة فقط إلى تغيير النوع إلى wechat_mp_service ، لكن كتلة التكوين لا تزال تعيد استخدام wechat_mp ، وبالإضافة إلى ذلك ، تحتاج إلى إضافة عناصر تكوين: app_id و app_secret .
" channel " : {
" type " : " wechat_mp_service " ,
" wechat_mp " : {
" token " : " YOUR TOKEN " , # Token value
" port " : " 8088 " , # Port the program listens on
" app_id " : " YOUR APP ID " , # App ID
" app_secret " : " YOUR APP SECRET " # App secret
}
}ملاحظة: يجب تكوين عنوان IP الخادم في "القائمة البيضاء IP" ؛ خلاف ذلك ، لن يتلقى المستخدمون الرسائل التي تم دفعها بشكل استباقي.
المتطلبات: جهاز كمبيوتر أو خادم (شبكة محلية) وحساب QQ.
يتطلب تشغيل BOT QQ بالإضافة إلى تشغيل برنامج go-cqhttp ، وهو مسؤول عن تلقي رسائل QQ وإرسالها ، في حين أن برنامج bot-on-anything مسؤول عن الوصول إلى Openai لإنشاء محتوى حوار.
قم بتنزيل برنامج الجهاز المقابل من إصدار GO-CQHTTP ، وقم بإلغاء الضغط عليه ، ووضع ملف go-cqhttp الثنائي في bot-on-anything/channel/qq . تم إعداد ملف تكوين config.yml هنا ؛ تحتاج فقط إلى ملء تكوين حساب QQ (الحساب-UIN).
استخدم AIOCQHTTP للتفاعل مع GO-CQHTTP ، وقم بتنفيذ الأمر التالي لتثبيت التبعية:
pip3 install aiocqhttp ما عليك سوى تغيير type في كتلة قناة config.json Configuration إلى qq :
" channel " : {
" type " : " qq "
} أولاً ، انتقل إلى الدليل الجذر لمشروع bot-on-anything ويتم تشغيله في المحطة 1:
python3 app.py # This will listen on port 8080 في الخطوة الثانية ، Open Terminal 2 ، انتقل إلى الدليل حيث يوجد cqhttp ، وتشغيله:
cd channel/qq
./go-cqhttpملحوظة:
protocol في ملف device.json في نفس الدليل مثل GO-CQHTTP من 5 إلى 2 ، راجع هذه المشكلة.المساهم: Brucelt1993
6.1 احصل على رمز
التقدم بطلب للحصول على روبوت برقية يمكن العثور عليه بسهولة على Google ؛ الشيء المهم هو الحصول على معرف الربع الربوت.
6.2 تركيب التبعية
pip install pyTelegramBotAPI6.3 التكوين
" channel " : {
" type " : " telegram " ,
" telegram " :{
" bot_token " : " YOUR BOT TOKEN ID "
}
}المتطلبات: خادم وحساب Gmail.
المساهم: سيمون
اتبع الوثائق الرسمية لإنشاء كلمة مرور تطبيق لحساب Google الخاص بك ، وتكوينها على النحو التالي ، ثم هتافات !!!
" channel " : {
" type " : " gmail " ,
" gmail " : {
" subject_keyword " : [ " bot " , " @bot " ],
" host_email " : " [email protected] " ,
" host_password " : " GMAIL ACCESS KEY "
}
}❉ لم يعد يتطلب خادمًا أو عنوان IP العام
المساهم: AMAOO
التبعيات
pip3 install slack_boltإعدادات
" channel " : {
" type " : " slack " ,
" slack " : {
" slack_bot_token " : " xoxb-xxxx " ,
" slack_app_token " : " xapp-xxxx "
}
}اضبط نطاق رمز الروبوت - Oauth و Semorce
اكتب رمز Oauth مستخدم BOT في ملف التكوين slack_bot_token .
app_mentions:read
chat:write
تمكين وضع المقبس - وضع المقبس
إذا لم تكن قد قمت بإنشاء رمز على مستوى التطبيق ، فسيتم مطالبتك بإنشاء واحد. اكتب الرمز المميز الذي تم إنشاؤه في ملف التكوين slack_app_token .
اشتراك الحدث (اشتراكات الأحداث) - اشترك في أحداث الروبوت
app_mention
الوثائق المرجعية
https://slack.dev/bolt-python/tutorial/getting-started
متطلبات:
التبعيات
pip3 install requests flaskإعدادات
" channel " : {
" type " : " dingtalk " ,
" dingtalk " : {
" image_create_prefix " : [ " draw " , " draw " , " Draw " ],
" port " : " 8081 " , # External port
" dingtalk_token " : " xx " , # Access token of the webhook address
" dingtalk_post_token " : " xx " , # Verification token carried in the header when DingTalk posts back messages
" dingtalk_secret " : " xx " # Security encryption signature string in the group robot
}
}الوثائق المرجعية :
توليد الروبوت
العنوان: https://open-dev.dingtalk.com/fe/app#/corp/robot أضف روبوتًا ، وقم بتعيين عنوان IP الخارجي للخادم في إدارة التطوير ، وعنوان استلام الرسالة (العنوان الخارجي في التكوين ، مثل https://xx.xx.com:8081).
التبعيات
pip3 install requests flaskإعدادات
" channel " : {
" type " : " feishu " ,
" feishu " : {
" image_create_prefix " : [
" draw " ,
" draw " ,
" Draw "
],
" port " : " 8082 " , # External port
" app_id " : " xxx " , # Application app_id
" app_secret " : " xxx " , # Application Secret
" verification_token " : " xxx " # Event subscription Verification Token
}
}توليد الروبوت
العنوان: https://open.feishu.cn/app/
المتطلبات: خادم ومؤسسة معتمدة WeChat.
يحتاج تكوين config.json لـ Enterprise WeChat فقط إلى تغيير النوع إلى wechat_com ، مع عنوان خادم الرسائل الافتراضية: http: // IP: 8888/WeChat.
" channel " : {
" type " : " wechat_com " ,
" wechat_com " : {
" wechat_token " : " YOUR TOKEN " , # Token value
" port " : " 8888 " , # Port the program listens on
" app_id " : " YOUR APP ID " , # App ID
" app_secret " : " YOUR APP SECRET " , # App secret
" wechat_corp_id " : " YOUR CORP ID " ,
" wechat_encoding_aes_key " : " YOUR AES KEY "
}
}ملاحظة: يجب تكوين عنوان IP الخادم في قائمة "IP الموثوق بها للمؤسسة" ؛ خلاف ذلك ، لن يتلقى المستخدمون الرسائل التي تم دفعها بشكل استباقي.
الوثائق المرجعية :
clear_memory_commands : أوامر حوار داخلية لمسح الذاكرة السابقة بشكل نشط ، يمكن لصفيف السلسلة تخصيص الاسم المستعار للأمر.