pip install -U bida
from bida import ChatLLM
llm = ChatLLM (
model_type = 'openai' , # 调用openai的chat模型
model_name = 'gpt-4' ) # 设定模型为:gpt-4,默认是gpt3.5
result = llm . chat ( "从1加到100等于多少?只计算奇数相加呢?" )
print ( result )
from bida import ChatLLM
llm = ChatLLM (
model_type = "baidu" , # 调用百度文心一言
stream_callback = ChatLLM . stream_callback_func ) # 使用默认的流式输出函数
llm . chat ( "你好呀,请问你是谁?" )
شركة نموذجية | نوع النموذج | اسم النموذج | سواء لدعم | يوضح |
---|---|---|---|---|
OpenAI | محادثة | جي بي تي-3.5، جي بي تي-4 | √ | يدعم جميع موديلات gpt3.5 وgpt4 |
إكمال النص | النص دافينشي-003 | √ | نموذج فئة توليد النص | |
التضمين | تضمين النص-ada-002 | √ | نموذج متجه | |
بايدو ون شين ييان | محادثة | إرني بوت، إرني بوت توربو | √ | نموذج الدردشة التجارية بايدو |
التضمين | embedding_v1 | √ | نموذج ناقل بايدو التجاري | |
نموذج مستضاف | نماذج مختلفة مفتوحة المصدر | √ | بالنسبة للنماذج المتنوعة مفتوحة المصدر التي تستضيفها Baidu، يرجى تكوينها بنفسك باستخدام بروتوكول الوصول إلى نماذج الطرف الثالث من Baidu للحصول على التفاصيل، راجع قسم الوصول إلى النماذج أدناه. | |
علي بابا كلاود-تونجي كيانوين | محادثة | qwen-v1، qwen-plus-v1، qwen-7b-chat-v1 | √ | نماذج الدردشة التجارية ومفتوحة المصدر من Alibaba Cloud |
التضمين | تضمين النص-v1 | √ | نموذج التوجيه التجاري لـ Alibaba Cloud | |
نموذج مستضاف | نماذج مختلفة مفتوحة المصدر | √ | بالنسبة للأنواع الأخرى من النماذج مفتوحة المصدر التي تستضيفها Alibaba Cloud، يرجى تكوينها بنفسك باستخدام بروتوكول الوصول إلى نماذج الطرف الثالث على Alibaba Cloud للحصول على التفاصيل، راجع قسم الوصول إلى النموذج أدناه. | |
ميني ماكس | محادثة | abab5, abab5.5 | √ | نموذج الدردشة التجارية MiniMax |
الدردشة برو | abab5.5 | √ | يدعم نموذج الدردشة التجارية MiniMax، الذي يستخدم وضع Chatcompletion pro المخصص، سيناريوهات المحادثة متعددة الأشخاص والروبوتات المتعددة، ونماذج المحادثات، وقيود تنسيق الإرجاع، واستدعاءات الوظائف، والمكونات الإضافية والوظائف الأخرى | |
التضمين | امبو-01 | √ | نموذج المتجه التجاري MiniMax | |
طيف الحكمة AI-ChatGLM | محادثة | ChatGLM-Pro, Std, Lite, Characterglm | √ | Zhipu AI نموذج تجاري كبير متعدد الإصدارات |
التضمين | تضمين النص | √ | Zhipu AI نموذج ناقل النص التجاري | |
آي فلايتيك سبارك | محادثة | سبارك ديسك V1.5، V2.0 | √ | نموذج iFlytek Spark المعرفي الكبير |
التضمين | التضمين | √ | نموذج ناقل النص iFlytek Spark | |
سينس تايم-RiRiXin | محادثة | نوفا-ptc-xl-v1، نوفا-ptc-xs-v1 | √ | SenseNova SenseTime نموذج كبير جديد يوميًا |
الاستخبارات بايتشوان | محادثة | بايتشوان-53ب-v1.0.0 | √ | بايتشوان 53B نموذج كبير |
تينسنت هونيوان | محادثة | تينسنت هونيوان | √ | تينسنت هونيوان نموذج كبير |
نموذج مفتوح المصدر تم نشره ذاتيًا | الدردشة، الإكمال، التضمينات | نماذج مختلفة مفتوحة المصدر | √ | باستخدام النماذج مفتوحة المصدر التي يتم نشرها بواسطة FastChat وعمليات النشر الأخرى، تتبع واجهة Web API المتوفرة واجهات برمجة تطبيقات RESTful المتوافقة مع OpenAI ويمكن دعمها مباشرة للحصول على التفاصيل، راجع فصل الوصول إلى النموذج أدناه. |
يلاحظ :
تعد تقنيتا نموذج LLM وموجِّه الكلمات في AIGC جديدتين جدًا وتتطوران بسرعة، كما أن النظرية والبرامج التعليمية والأدوات والجوانب الهندسية والجوانب الأخرى غير متوفرة للغاية، ولا تتداخل مجموعة التكنولوجيا المستخدمة تقريبًا مع تجربة المطورين الرئيسيين الحاليين :
تصنيف | التنمية السائدة الحالية | مشروع سريع | تطوير النماذج، وضبط النماذج |
---|---|---|---|
لغة التنمية | جافا، .Net، جافسكريبت، ABAP، إلخ. | اللغة الطبيعية، بايثون | بايثون |
أدوات التطوير | كثيرا وناضجا | لا أحد | ناضجة |
عتبة التنمية | أقل وناضجة | منخفضة ولكنها غير ناضجة للغاية | عالية جدا |
تكنولوجيا التنمية | واضحة وثابتة | من السهل البدء ولكن من الصعب جدًا تحقيق إنتاج ثابت | معقدة ومتنوعة |
التقنيات شائعة الاستخدام | كائنية التوجه، قاعدة البيانات، البيانات الضخمة | الضبط الفوري، والتعلم في سياقه، والتضمين | المحولات، RLHF، Finetunning، LoRA |
دعم مفتوح المصدر | غنية وناضجة | مربكة للغاية على المستوى الأدنى | غنية ولكن غير ناضجة |
تكلفة التطوير | قليل | أعلى | عالية جدا |
المطور | ثري | نادرة للغاية | نادرة جدا |
تطوير النموذج التعاوني | التطوير وفقًا للمستندات التي قدمها مدير المنتج | يمكن لشخص واحد أو فريق بسيط التعامل مع جميع العمليات بدءًا من المتطلبات وحتى التسليم | وضعت وفقا لاتجاهات البحث النظرية |
في الوقت الحاضر، تسير جميع شركات التكنولوجيا وشركات الإنترنت وشركات البيانات الضخمة تقريبًا في هذا الاتجاه، لكن الشركات التقليدية لا تزال في حالة من الارتباك. لا يعني ذلك أن المؤسسات التقليدية لا تحتاج إليها، ولكن: 1) ليس لديها احتياطيات من المواهب التقنية، لذا فهي لا تعرف ما يجب القيام به. 2) ليس لديها احتياطيات من الأجهزة، ولا تملكها 3) درجة رقمنة الأعمال منخفضة، وتحويل AIGC وترقيته له دورة طويلة ونتائج بطيئة.
في الوقت الحاضر، هناك عدد كبير جدًا من النماذج التجارية ومفتوحة المصدر في الداخل والخارج، وهي تتطور بسرعة كبيرة، ومع ذلك، فإن واجهات برمجة التطبيقات وكائنات البيانات الخاصة بالنماذج مختلفة الإصدار الجديد)، يتعين علينا قراءة مستندات التطوير وتعديل كود التطبيق الخاص بك للتكيف، وأعتقد أن كل مطور تطبيق قد اختبر العديد من النماذج ولا بد أنه عانى منها.
في الواقع، على الرغم من اختلاف قدرات النموذج، فإن أوضاع توفير القدرات هي نفسها بشكل عام، لذلك، أصبح وجود إطار عمل يمكنه التكيف مع عدد كبير من واجهات برمجة التطبيقات النموذجية وتوفير وضع اتصال موحد حاجة ملحة للعديد من المطورين.
أولاً، ليس المقصود من Bida أن تحل محل langchain، ولكن مفاهيم تحديد الموقع المستهدف والتطوير الخاصة بها مختلفة تمامًا أيضًا:
تصنيف | com.langchain | بيدا |
---|---|---|
المجموعة المستهدفة | حشد التطوير الكامل في اتجاه AIGC | المطورون الذين لديهم حاجة ملحة للجمع بين AIGC وتطوير التطبيقات |
دعم النموذج | يدعم نماذج مختلفة للنشر المحلي أو البعيد | يتم دعم استدعاءات النماذج التي توفر واجهة برمجة تطبيقات الويب فقط. حاليًا، يمكن لمعظم النماذج التجارية توفيرها أيضًا. |
هيكل الإطار | لأنه يوفر العديد من الإمكانات وبنية معقدة للغاية، اعتبارًا من أغسطس 2023، يحتوي الكود الأساسي على أكثر من 1700 ملف و150000 سطر من التعليمات البرمجية، وعتبة التعلم عالية. | يوجد أكثر من عشرة رموز أساسية وحوالي 2000 سطر من التعليمات البرمجية. من السهل نسبيًا تعلم الكود وتعديله. |
دعم الوظيفة | توفير تغطية كاملة لمختلف النماذج والتقنيات ومجالات التطبيق في اتجاه AIGC | حاليًا، يوفر الدعم لإكمالات الدردشة والإكمالات والتضمينات واستدعاء الوظائف وغيرها من الوظائف متعددة الوسائط مثل الصوت والصورة. |
اِسْتَدْعَى | يتم توفير قوالب المطالبة، ولكن المطالبات المستخدمة بواسطة وظائفها الخاصة تكون مضمنة في التعليمات البرمجية، مما يجعل تصحيح الأخطاء والتعديل أمرًا صعبًا. | يتم توفير قوالب المطالبة حاليًا، ولا توجد وظيفة مضمنة لاستخدام المطالبة. إذا تم استخدامها في المستقبل، فسيتم استخدام وضع التحميل اللاحق القائم على التكوين لتسهيل تعديلات المستخدم. |
المحادثة والذاكرة | دعم وتوفير أساليب إدارة الذاكرة المتعددة | الدعم، ودعم استمرارية المحادثة (المحفوظة في duckdb)، وتوفر الذاكرة إمكانات جلسة أرشفة محدودة، ويمكن توسيع القدرات الأخرى من خلال إطار عمل الامتداد |
الوظيفة والبرنامج المساعد | دعم وتوفير إمكانات التوسع الغنية، ولكن تأثير الاستخدام يعتمد على القدرات الخاصة للنموذج الكبير | متوافق مع الطرز الكبيرة التي تستخدم مواصفات استدعاء الوظائف الخاصة بـ OpenAI |
الوكيل والسلسلة | دعم وتوفير إمكانات التوسع الغنية، ولكن تأثير الاستخدام يعتمد على القدرات الخاصة للنموذج الكبير | غير مدعوم، نخطط لفتح مشروع آخر لتنفيذه، أو يمكننا التوسع والتطوير بمفردنا بناءً على الإطار الحالي. |
وظائف أخرى | يدعم العديد من الوظائف الأخرى، مثل تقسيم المستندات (يتم التضمين بعد التقسيم، ويستخدم لتنفيذ chatpdf وغيرها من الوظائف المشابهة) | لا توجد حاليًا أي وظائف أخرى، إذا تمت إضافتها، فسيتم تنفيذها عن طريق فتح مشروع متوافق جديد، ويمكن تنفيذها حاليًا باستخدام مجموعة الإمكانات التي توفرها المنتجات الأخرى. |
الكفاءة التشغيلية | أفاد العديد من المطورين أنه أبطأ من استدعاء واجهة برمجة التطبيقات مباشرة، والسبب غير معروف. | إنه يقوم فقط بتغليف عملية الاتصال وتوحيد واجهة الاتصال، ولا يختلف الأداء عن استدعاء واجهة برمجة التطبيقات مباشرة. |
باعتبارها مشروعًا رائدًا مفتوح المصدر في الصناعة، قدمت langchain مساهمات كبيرة في الترويج للنماذج الكبيرة والذكاء الاصطناعي العام، وقد طبقناها أيضًا في المشروع، وفي الوقت نفسه، اعتمدنا أيضًا على العديد من نماذجها وأفكارها عند التطوير بيدا. لكن langchain يريد أن يكون أداة كبيرة وشاملة، الأمر الذي يؤدي حتماً إلى العديد من العيوب. المقالات التالية لها آراء مماثلة: ماكس وولف - صيني، Hacker News - صيني.
هناك قول مأثور في الدائرة يلخص الأمر بشكل جيد للغاية: langchain هو كتاب مدرسي سيتعلمه الجميع، ولكن في النهاية سوف يتخلصون منه.
قم بتثبيت أحدث عرض من النقطة أو pip3
pip install -U bida
استنساخ رمز المشروع من جيثب إلى الدليل المحلي:
git clone https://github.com/pfzhou/bida.git
pip install -r requirements.txt
قم بتعديل الملف ضمن الدليل الجذر للتعليمة البرمجية الحالية: يصبح ملحق ".env.template" هو ملف متغير البيئة ".env" . يرجى تكوين مفتاح النموذج الذي تقدمت بطلب للحصول عليه وفقًا للتعليمات الموجودة في الملف.
يرجى ملاحظة : تمت إضافة هذا الملف إلى قائمة التجاهل ولن يتم نقله إلى خادم git.
أمثلة1. بيئة التهيئة.ipynb
سيستخدم رمز العرض التوضيحي التالي مجموعة متنوعة من النماذج التي تدعمها bida. يرجى تعديل واستبدال قيمة **[model_type]** في الكود باسم شركة الطراز المقابل وفقًا للطراز الذي اشتريته، ويمكنك التبديل بسرعة بين النماذج المختلفة للخبرة:
# 更多信息参看bidamodels*.json中的model_type配置
# openai
llm = ChatLLM ( model_type = "openai" )
# baidu
llm = ChatLLM ( model_type = "baidu" )
# baidu third models(llama-2...)
llm = ChatLLM ( model_type = "baidu-third" )
# aliyun
llm = ChatLLM ( model_type = "aliyun" )
# minimax
llm = ChatLLM ( model_type = "minimax" )
# minimax ccp
llm = ChatLLM ( model_type = "minimax-ccp" )
# zhipu ai
llm = ChatLLM ( model_type = "chatglm2" )
# xunfei xinghuo
llm = ChatLLM ( model_type = "xfyun" )
# senstime
llm = ChatLLM ( model_type = "senstime" )
# baichuan ai
llm = ChatLLM ( model_type = "baichuan" )
# tencent ai
llm = ChatLLM ( model_type = "tencent" )
وضع الدردشة: ChatCompletion، وضع التفاعل السائد الحالي في LLM، يدعم bida إدارة الجلسة والمثابرة وإدارة الذاكرة.
from bida import ChatLLM
llm = ChatLLM ( model_type = 'baidu' )
result = llm . chat ( "你好呀,请问你是谁?" )
print ( result )
from bida import ChatLLM
# stream调用
llm = ChatLLM ( model_type = "baidu" , stream_callback = ChatLLM . stream_callback_func )
result = llm . chat ( "你好呀,请问你是谁?" )
from bida import ChatLLM
llm = ChatLLM ( model_type = "baidu" , stream_callback = ChatLLM . stream_callback_func )
result = llm . chat ( "你是一个服务助理,请简洁回答我的问题。我的名字是老周。" )
result = llm . chat ( "我的名字是?" )
للحصول على التعليمات البرمجية المفصلة أعلاه والمزيد من الأمثلة الوظيفية، يرجى الرجوع إلى دفتر الملاحظات أدناه:
أمثلة2.1.وضع الدردشة.ipynb
بناء chatbot باستخدام التدرج
Gradio هو إطار عمل شائع جدًا لواجهة معالجة اللغة الطبيعية
يمكن لـ bida + grario إنشاء تطبيق قابل للاستخدام باستخدام بضعة أسطر فقط من التعليمات البرمجية
import gradio as gr
from bida import ChatLLM
llm = ChatLLM ( model_type = 'openai' )
def predict ( message , history ):
answer = llm . chat ( message )
return answer
gr . ChatInterface ( predict ). launch ()
لمزيد من التفاصيل، راجع: العرض التوضيحي لبرنامج chatbot الخاص بـ bida+gradio
وضع الإكمال: الإكمال أو إكمال النص، وضع تفاعل LLM من الجيل السابق، يدعم فقط المحادثات أحادية الجولة، ولا يحفظ سجلات الدردشة، وكل مكالمة هي اتصال جديد.
يرجى ملاحظة ما يلي: في مقالة OpenAI بتاريخ 6 يوليو 2023، ذكر هذا النموذج بوضوح أنه سيتم التخلص منه تدريجيًا. لا توفر النماذج الجديدة بشكل أساسي الوظائف ذات الصلة، ومن المتوقع أن تتبع النماذج المدعومة OpenAI ومن المتوقع التخلص منها تدريجيًا مستقبل. .
from bida import TextLLM
llm = TextLLM ( model_type = "openai" )
result = llm . completion ( "你是一个服务助理,请简洁回答我的问题。我的名字是老周。" )
print ( result )
للحصول على تفاصيل نموذج التعليمات البرمجية، راجع:
أمثلة2.2.وضع الإكمال.ipynb
تعد كلمة "موجه" أهم وظيفة في نموذج اللغة الكبير، فهي تقلب نموذج التطوير التقليدي الموجه للكائنات وتحوله إلى: مشروع موجه . يتم تنفيذ إطار العمل هذا باستخدام "Prompt Templete"، الذي يدعم وظائف مثل علامات الاستبدال، وتعيين كلمات مطالبة مختلفة لنماذج متعددة، والاستبدال التلقائي عندما يقوم النموذج بالتفاعل.
يتوفر PromptTemplate_Text حاليًا: يدعم استخدام نص السلسلة لإنشاء قوالب موجهة، كما يدعم Bida أيضًا قوالب مخصصة مرنة، ويخطط لتوفير القدرة على تحميل القوالب من json وقواعد البيانات في المستقبل.
يرجى الاطلاع على الملف التالي للحصول على نموذج التعليمات البرمجية التفصيلي:
أمثلة2.3.المطالبة بكلمة ipynb
تعليمات هامة في الكلمات السريعة
بشكل عام، يوصى بأن تتبع الكلمات السريعة بنية مكونة من ثلاث فقرات: تحديد الأدوار، وتوضيح المهام، وإعطاء السياق (المعلومات أو الأمثلة ذات الصلة) . يمكنك الرجوع إلى طريقة الكتابة في الأمثلة.
سلسلة دورات Andrew Ng https://learn.deeplearning.ai/login النسخة الصينية الترجمة الفورية
كتاب الطبخ أوبيناي https://github.com/openai/openai-cookbook
وثائق Microsoft Azure: مقدمة إلى هندسة النصائح، وتكنولوجيا هندسة النصائح
الدليل الهندسي الفوري الأكثر شهرة على جيثب، النسخة الصينية
استدعاء الوظائف هي وظيفة تم إصدارها بواسطة OpenAI في 13 يونيو 2023. نعلم جميعًا أن البيانات التي تم تدريبها بواسطة ChatGPT تستند إلى ما قبل عام 2021. إذا طرحت بعض الأسئلة ذات الصلة في الوقت الفعلي، فلن نتمكن من الإجابة عليك، وسنعمل يتيح الاتصال في الوقت الفعلي إمكانية الحصول على بيانات الشبكة، مثل التحقق من توقعات الطقس، والتحقق من المخزون، والتوصية بالأفلام الحديثة، وما إلى ذلك.
تعد تقنية التضمين هي التقنية الأكثر أهمية لتنفيذ التعلم السريع في السياق، مقارنةً باسترجاع الكلمات الرئيسية السابقة، فهي خطوة أخرى إلى الأمام.
ملاحظة : تضمين البيانات من نماذج مختلفة ليس عالميًا، لذلك يجب استخدام نفس النموذج لتضمين السؤال أثناء الاسترجاع.
اسم النموذج | أبعاد الإخراج | عدد السجلات الدفعية | حد رمز نصي واحد |
---|---|---|---|
OpenAI | 1536 | لا يوجد حد | 8191 |
بايدو | 384 | 16 | 384 |
علي | 1536 | 10 | 2048 |
ميني ماكس | 1536 | لا يوجد حد | 4096 |
طيف الحكمة الذكاء الاصطناعي | 1024 | أعزب | 512 |
آي فلايتيك سبارك | 1024 | أعزب | 256 |
ملحوظة: تدعم واجهة التضمين الخاصة بـ Bida معالجة الدُفعات إذا تم تجاوز حد معالجة الدُفعات النموذجية، فستتم معالجتها تلقائيًا على دفعات وإعادتها معًا. إذا تجاوز محتوى جزء واحد من النص العدد المحدود من الرموز المميزة، اعتمادًا على منطق النموذج، فسيقوم البعض بالإبلاغ عن خطأ وسيقوم البعض الآخر باقتطاعه.
للحصول على أمثلة تفصيلية، راجع: example2.6.Embeddingsembedding model.ipynb
├─bida # bida框架主目录
│ ├─core # bida框架核心代码
│ ├─functions # 自定义function文件
│ ├─ *.json # function定义
│ ├─ *.py # 对应的调用代码
│ ├─models # 接入模型文件
│ ├─ *.json # 模型配置定义:openai.json、baidu.json等
│ ├─ *_api.py # 模型接入代码:openai_api.py、baidu_api.py等
│ ├─ *_sdk.py # 模型sdk代码:baidu_sdk.py等
│ ├─prompts # 自定义prompt模板文件
│ ├─*.py # 框架其他代码文件
├─docs # 帮助文档
├─examples # 演示代码、notebook文件和相关数据文件
├─test # pytest测试代码
│ .env.template # .env的模板
│ LICENSE # MIT 授权文件
│ pytest.ini # pytest配置文件
│ README.md # 本说明文件
│ requirements.txt # 相关依赖包
نأمل أن نتكيف مع المزيد من النماذج، ونرحب بآرائكم القيمة لتزويد المطورين بمنتجات أفضل معًا!