? Megabots menyediakan aplikasi LLM siap yang canggih dibuat mega-mudah, jadi Anda tidak perlu membangunnya dari awal? Buat bot, sekarang?
Perpustakaan Megabots dapat digunakan untuk membuat bot itu:
? Megabots didukung oleh beberapa alat paling terkenal untuk AI produksional. Ini menggunakan Langchain untuk mengelola rantai LLM, Langchain-Serve untuk membuat API Ready Production, Gradio untuk membuat UI. Saat ini menggunakan OpenAi untuk menghasilkan jawaban, tetapi kami berencana untuk mendukung LLM lain di masa depan.
Catatan: Ini adalah pekerjaan yang sedang berlangsung. API mungkin berubah.
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" ) Anda dapat mengubah promnpt bot untuk menyesuaikannya dengan kebutuhan Anda. Dalam jenis bot qna-over-docs Anda perlu melewati 2 variabel untuk context (Knwoledge dicari dari indeks) dan question (pertanyaan manusia).
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?" ) Anda dapat dengan mudah menambahkan memori ke bot Anda menggunakan parameter memory . Ia menerima string dengan jenis memori yang akan digunakan. Ini default untuk beberapa dafault waras. Jika Anda membutuhkan lebih banyak konfigurasi, Anda dapat menggunakan fungsi memory dan melewati jenis memori dan konfigurasi yang Anda butuhkan.
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. Atau menggunakan fungsi pabrik 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?" )) Catatan: Untuk bot qna-over-docs , saat menggunakan memori dan melewati prompt kustom Anda, penting untuk diingat untuk meneruskan satu variabel lagi ke prompt khusus Anda untuk memfasilitasi riwayat obrolan. Nama variabelnya adalah 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 juga dapat menggunakan Milvus sebagai backend untuk mesin pencari. Anda dapat menemukan contoh cara melakukannya di bawah ini.
Untuk menjalankan Milvus, Anda harus mengikuti panduan ini untuk mengunduh file Compose Docker dan menjalankannya. Perintahnya adalah:
wget https://raw.githubusercontent.com/milvus-io/pymilvus/v2.2.7/examples/hello_milvus.pyAnda kemudian dapat menginstal Attu sebagai alat manajemen untuk 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?" ) Atau gunakan fungsi pabrik vectorstore untuk lebih banyak kustomisasi
from megabots import bot , vectorstore
milvus = vectorstore ( "milvus" , host = "localhost" , port = 19530 )
bot = bot ( "qna-over-docs" , index = "./examples/files/" , vectorstore = milvus ) Anda juga dapat mengekspos titik akhir bot secara lokal menggunakan Langchain-Serve. File sampel api.py disediakan di folder megabots .
Untuk mengekspos API secara lokal, Anda dapat melakukannya
lc-serve deploy local megabots.api Anda kemudian harus dapat mengunjungi http://localhost:8000/docs untuk melihat & berinteraksi dengan dokumentasi API.
Untuk menggunakan API Anda ke cloud, Anda dapat melakukan dan menghubungkan ke API menggunakan titik akhir yang disediakan dalam output.
lc-serve deploy jcloud megabots.api Anda dapat mengekspos gradio UI untuk bot menggunakan fungsi create_interface . Dengan asumsi file Anda disebut ui.py run gradio qnabot/ui.py untuk menjalankan UI secara lokal. Anda kemudian harus dapat mengunjungi http://127.0.0.1:7860 untuk melihat dokumentasi API.
from megabots import bot , create_interface
demo = create_interface ( bot ( "qna-over-docs" )) Fungsi bot harus berfungsi sebagai titik awal untuk membuat dan menyesuaikan bot Anda. Di bawah ini adalah daftar argumen yang tersedia dalam bot .
| Argumen | Keterangan |
|---|---|
| tugas | Jenis bot yang akan dibuat. Opsi yang tersedia: qna-over-docs . Lebih banyak datang segera |
| indeks | Menentukan indeks yang akan digunakan untuk bot. Ini bisa berupa file indeks yang disimpan (misalnya, index.pkl ) atau direktori dokumen (misalnya, ./index ). Dalam hal direktori indeks akan dibuat secara otomatis. Jika tidak ada indeks yang ditentukan bot akan mencari index.pkl atau ./index |
| model | Nama model untuk digunakan untuk bot. Anda dapat menentukan model yang berbeda dengan memberikan namanya, seperti "Text-Davinci-003". Model yang Didukung: gpt-3.5-turbo (default), text-davinci-003 Lebih Segera Segera. |
| mengingatkan | Templat string untuk prompt, yang mendefinisikan format pertanyaan dan konteks yang diteruskan ke model. Templat harus mencakup variabel placeholder seperti So: context , {question} dan dalam kasus menggunakan history memori. |
| ingatan | Jenis memori yang akan digunakan oleh bot. Dapat berupa string dengan jenis memori atau Anda dapat menggunakan fungsi pabrik memory . Kenangan yang Didukung: conversation-buffer , conversation-buffer-window |
| Vektorstore | Vektorstore yang akan digunakan untuk indeks. Dapat menjadi string dengan nama databse atau Anda dapat menggunakan fungsi pabrik vectorstore . DBS yang Didukung: milvus . |
Model bahasa besar (LLM) sangat kuat, tetapi mereka tidak dapat menjawab pertanyaan tentang dokumen yang belum mereka lihat. Jika Anda ingin menggunakan LLM untuk menjawab pertanyaan tentang dokumen yang tidak dilatih, Anda harus memberinya informasi tentang dokumen -dokumen itu. Untuk menyelesaikan ini, kami menggunakan "pengambilan generasi augmented."
Secara sederhana, ketika Anda memiliki pertanyaan, Anda terlebih dahulu mencari dokumen yang relevan. Kemudian, Anda memberikan dokumen dan pertanyaan kepada model bahasa untuk menghasilkan jawaban. Untuk membuat ini berfungsi, Anda memerlukan dokumen Anda dalam format yang dapat dicari (indeks). Proses ini melibatkan dua langkah utama: (1) Mempersiapkan dokumen Anda untuk permintaan yang mudah, dan (2) menggunakan metode pembuatan augmented pengambilan.
qna-over-docs menggunakan FAISS untuk membuat indeks dokumen dan GPT untuk menghasilkan jawaban.
Sequencediagram
Pengguna Aktor
API Peserta
Peserta LLM
Peserta Vektorstore
Peserta ingestionEngine
DataLake Peserta
bilangan auton
CATATAN OVER API, DATALAKE: Fase konsumsi
Loop setiap x waktu
IngestionEngine ->> Datalake: Muat dokumen
DataLake ->> ingestionEngine: pengembalian data
IngestionEngine ->> ingestionEngine: split dokumen dan buat embeddings
IngestionEngine ->> VectorStore: Store Documents and Embeddings
akhir
Catatan over API, Datalake: Fase Pembuatan
Pengguna ->> API: Terima pertanyaan pengguna
API ->> VectorStore: Dokumen pencarian dalam indeks yang relevan dengan pertanyaan
API ->> API: Bangun prompt dari pertanyaan dan dokumen yang relevan
API ->> llm: Lewati prompt ke model
Llm ->> API: Dapatkan respons dari model
API ->> Pengguna: Return Response