؟ توفر Megabots تطبيقات LLM الجاهزة على أحدث طراز ، مما يجعلها سهلة ، لذلك لا يتعين عليك بناءها من نقطة الصفر؟ إنشاء روبوت الآن؟
يمكن استخدام مكتبة Megabots لإنشاء روبوتات:
؟ مدعوم Megabots ببعض الأدوات الأكثر شهرة لإنتاج الذكاء الاصطناعي. يستخدم Langchain لإدارة سلاسل LLM ، Langchain Serve لإنشاء واجهة برمجة تطبيقات جاهزة للإنتاج ، Gradio لإنشاء واجهة مستخدم. في الوقت الحالي ، يستخدم Openai لإنشاء إجابات ، لكننا نخطط لدعم LLMs الأخرى في المستقبل.
ملاحظة: هذا عمل مستمر. واجهة برمجة التطبيقات قد تتغير.
pip install megabots from megabots import bot
import os
os . environ [ "OPENAI_API_KEY" ] = "my key"
# Create a bot with one line of code. Automatically loads your data from ./index or index.pkl.
# Keep in mind that you need to have one or another.
qnabot = bot ( "qna-over-docs" )
# Ask a question
answer = qnabot . ask ( "How do I use this bot?" )
# Save the index to save costs (GPT is used to create the index)
qnabot . save_index ( "index.pkl" )
# Load the index from a previous run
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" )
# Or create the index from a directory of documents
qnabot = bot ( "qna-over-docs" , index = "./index" )
# Change the model
qnabot = bot ( "qna-over-docs" , model = "text-davinci-003" ) يمكنك تغيير الروبوتات promnpt لتخصيصها لاحتياجاتك. في نوع BOT qna-over-docs ستحتاج إلى تمرير متغيرين context (تم تفتيش knwoledge من الفهرس) question (السؤال البشري).
from megabots import bot
prompt = """
Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
Answer in the style of Tony Stark.
{context}
Question: {question}
Helpful humorous answer:"""
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" , prompt = prompt )
qnabot . ask ( "what was the first roster of the avengers?" ) يمكنك بسهولة إضافة ذاكرة إلى bot باستخدام معلمة memory . يقبل سلسلة بنوع الذاكرة المراد استخدامها. هذا الافتراضيات لبعض العاقل العاقل. إذا كنت بحاجة إلى مزيد من التكوين ، يمكنك استخدام وظيفة memory وتمرير نوع الذاكرة والتكوين الذي تحتاجه.
from megabots import bot
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" , memory = "conversation-buffer" )
print ( qnabot . ask ( "who is iron man?" ))
print ( qnabot . ask ( "was he in the first roster?" ))
# Bot should understand who "he" refers to. أو استخدام وظيفة مصنع memory
from megabots import bot , memory
mem ( "conversation-buffer-window" , k = 5 )
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" , memory = mem )
print ( qnabot . ask ( "who is iron man?" ))
print ( qnabot . ask ( "was he in the first roster?" )) ملاحظة: بالنسبة إلى روبوت qna-over-docs ، عند استخدام الذاكرة وتمرير موجه المخصص الخاص بك ، من المهم أن تتذكر تمرير متغير آخر إلى موجه المخصص لتسهيل سجل الدردشة. الاسم المتغير هو history .
from megabots import bot
prompt = """
Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
{context}
{history}
Human: {question}
AI:"""
qnabot = bot ( "qna-over-docs" , prompt = prompt , index = "./index.pkl" , memory = "conversation-buffer" )
print ( qnabot . ask ( "who is iron man?" ))
print ( qnabot . ask ( "was he in the first roster?" )) يمكن لـ Megabots bot أيضًا استخدام Milvus كخلف لمحرك البحث الخاص به. يمكنك العثور على مثال على كيفية القيام بذلك أدناه.
من أجل تشغيل Milvus ، تحتاج إلى اتباع هذا الدليل لتنزيل ملف Docker وتشغيله. الأمر هو:
wget https://raw.githubusercontent.com/milvus-io/pymilvus/v2.2.7/examples/hello_milvus.pyيمكنك بعد ذلك تثبيت ATTU كأداة إدارة لـ Milvus
from megabots import bot
# Attach a vectorstore by passing the name of the database. Default port for milvus is 19530 and default host is localhost
# Point it to your files directory so that it can index the files and add them to the vectorstore
bot = bot ( "qna-over-docs" , index = "./examples/files/" , vectorstore = "milvus" )
bot . ask ( "what was the first roster of the avengers?" ) أو استخدم وظيفة مصنع vectorstore لمزيد من التخصيص
from megabots import bot , vectorstore
milvus = vectorstore ( "milvus" , host = "localhost" , port = 19530 )
bot = bot ( "qna-over-docs" , index = "./examples/files/" , vectorstore = milvus ) يمكنك أيضًا فضح نقاط نهاية الروبوت محليًا باستخدام Langchain Serve. يتم توفير عينة ملف api.py في مجلد megabots .
لفضح واجهة برمجة التطبيقات محليًا ، يمكنك القيام بذلك
lc-serve deploy local megabots.api يجب أن تكون قادرًا بعد ذلك على زيارة http://localhost:8000/docs لرؤية وثائق API والتفاعل معها.
لنشر واجهة برمجة التطبيقات على السحابة ، يمكنك القيام بذلك والاتصال بأجهزة واجهة برمجة التطبيقات (API) باستخدام نقطة النهاية المقدمة في الإخراج.
lc-serve deploy jcloud megabots.api يمكنك فضح واجهة مستخدم Gradio لـ BOT باستخدام وظيفة create_interface . على افتراض أن ملفك يسمى ui.py Run gradio qnabot/ui.py لتشغيل واجهة المستخدم محليًا. يجب أن تكون قادرًا بعد ذلك على زيارة http://127.0.0.1:7860 لمشاهدة وثائق API.
from megabots import bot , create_interface
demo = create_interface ( bot ( "qna-over-docs" )) يجب أن تكون وظيفة bot بمثابة نقطة انطلاق لإنشاء وتخصيص الروبوت. فيما يلي قائمة بالوسائط المتاحة في bot .
| دعوى | وصف |
|---|---|
| مهمة | نوع الروبوت لإنشاء. الخيارات المتاحة: qna-over-docs . المزيد من القادم قريبا |
| فِهرِس | يحدد الفهرس لاستخدامه في الروبوت. يمكن أن يكون إما ملف فهرس محفوظ (على سبيل المثال ، index.pkl ) أو دليل المستندات (على سبيل المثال ، ./index ). في حالة الدليل ، سيتم إنشاء الفهرس تلقائيًا. إذا لم يتم تحديد أي فهرس سيبحث bot عن index.pkl أو ./index |
| نموذج | اسم النموذج لاستخدامه في الروبوت. يمكنك تحديد نموذج مختلف من خلال توفير اسمه ، مثل "Text-Davinci-003". النماذج المدعومة: gpt-3.5-turbo (افتراضي) ، text-davinci-003 أكثر قابلية. |
| اِسْتَدْعَى | قالب سلسلة للمطالبة ، والذي يحدد تنسيق السؤال والسياق الذي تم تمريره إلى النموذج. يجب أن يتضمن القالب متغيرات العناصر النائمة مثل SO: context ، {question} وفي حالة استخدام history الذاكرة. |
| ذاكرة | نوع الذاكرة لاستخدامها من قبل الروبوت. يمكن أن تكون سلسلة مع نوع الذاكرة أو يمكنك استخدام وظيفة مصنع memory . الذكريات المدعومة: conversation-buffer ، conversation-buffer-window |
| VectorStore | vectorstore لاستخدامه في الفهرس. يمكن أن تكون سلسلة باسم البيانات أو يمكنك استخدام وظيفة مصنع vectorstore . مدعوم DBS: milvus . |
نماذج اللغة الكبيرة (LLMS) قوية ، لكن لا يمكنها الإجابة على أسئلة حول المستندات التي لم يروها. إذا كنت ترغب في استخدام LLM للإجابة على أسئلة حول المستندات التي لم يتم تدريبها ، فيجب عليك تقديم معلومات حول هذه المستندات. لحل هذا ، نستخدم "الجيل المعزز للاسترجاع".
بعبارات بسيطة ، عندما يكون لديك سؤال ، تبحث أولاً عن المستندات ذات الصلة. بعد ذلك ، تعطي المستندات والسؤال إلى نموذج اللغة لإنشاء إجابة. لجعل هذا العمل ، تحتاج إلى مستنداتك بتنسيق قابل للبحث (فهرس). تتضمن هذه العملية خطوتين رئيسيتين: (1) إعداد المستندات الخاصة بك لسهولة الاستعلام ، و (2) باستخدام طريقة التوليد المعززة للاسترجاع.
تستخدم qna-over-docs FAISS لإنشاء فهرس من المستندات و GPT لإنشاء إجابات.
Sequencediagram
مستخدم الممثل
واجهة برمجة تطبيقات المشاركين
المشارك LLM
مشارك VectorStore
المشارك الابتلاع
المشارك Datalake
أوتون
ملاحظة على API ، Datalake: مرحلة الابتلاع
حلقة في كل x مرة
الابتلاع ->> Datalake: تحميل المستندات
Datalake ->> الابتلاع: إرجاع البيانات
الابتلاع ->> الابتلاع: مستندات تقسيم وإنشاء التضمينات
IncestionEngine ->> VectorStore: مستندات المتجر والتضمينات
نهاية
ملاحظة على API ، Datalake: مرحلة التوليد
المستخدم ->> API: استلم سؤال المستخدم
API ->> VectorStore: مستندات البحث في الفهرس ذات الصلة بالسؤال
API ->> API: قم ببناء مطالبة من السؤال وأي مستندات ذات صلة
API ->> LLM: تمرير موجه إلى النموذج
LLM ->> API: احصل على استجابة من النموذج
API ->> المستخدم: رد الإرجاع