Daftar Isi[Bersembunyi][Menunjukkan]
LangChain adalah alat canggih dan tangguh yang dikembangkan untuk memanfaatkan kekuatan Model Bahasa Besar (LLM).
LLM ini memiliki kemampuan luar biasa dan efisien dapat menangani beragam tugas. Namun, penting untuk dicatat bahwa kekuatan mereka terletak pada sifat umum mereka daripada keahlian domain yang mendalam. Popularitasnya berkembang pesat sejak diperkenalkannya GPT-4.
Sementara LLM unggul dalam menangani berbagai tugas, mereka mungkin menghadapi keterbatasan dalam memberikan jawaban spesifik atau menangani tugas yang membutuhkan pengetahuan domain yang mendalam. Pertimbangkan, misalnya, memanfaatkan LLM untuk menjawab pertanyaan atau melakukan tugas dalam bidang khusus seperti kedokteran atau hukum.
Sementara LLM pasti dapat menjawab pertanyaan umum tentang bidang ini, mungkin kesulitan untuk menawarkan jawaban yang lebih rinci atau bernuansa yang memerlukan pengetahuan atau keahlian khusus.
Ini karena LLM dilatih pada sejumlah besar data teks dari berbagai sumber, memungkinkan mereka mempelajari pola, memahami konteks, dan menghasilkan respons yang koheren. Namun, pelatihan mereka biasanya tidak melibatkan akuisisi pengetahuan khusus domain atau khusus pada tingkat yang sama dengan pakar manusia di bidang tersebut.
Oleh karena itu, meskipun LangChain, bersama dengan LLM, dapat menjadi alat yang sangat berharga untuk berbagai tugas, penting untuk diketahui bahwa keahlian domain yang mendalam mungkin masih diperlukan dalam situasi tertentu. Pakar manusia dengan pengetahuan khusus dapat memberikan kedalaman yang diperlukan, pemahaman bernuansa, dan wawasan khusus konteks yang mungkin berada di luar kemampuan LLM saja.
Kami menyarankan untuk melihat dokumen LangChain atau GitHub repositori untuk pemahaman yang lebih menyeluruh tentang kasus penggunaan tipikalnya. Sangat disarankan untuk mendapatkan gambaran yang lebih besar tentang bundel ini.
Bagaimana cara kerjanya?
Untuk memahami tujuan dan pekerjaan LangChain, mari pertimbangkan contoh praktisnya. Kami menyadari bahwa GPT-4 memiliki pengetahuan umum yang mengesankan dan dapat memberikan jawaban yang andal untuk berbagai pertanyaan.
Namun, bagaimana jika kita menginginkan informasi spesifik dari data kita sendiri, seperti dokumen pribadi, buku, file PDF, atau database hak milik?
LangChain memungkinkan kita untuk menghubungkan a model bahasa besar seperti GPT-4 ke sumber data kami sendiri. Ini lebih dari sekadar menempelkan potongan teks ke antarmuka obrolan. Sebagai gantinya, kita dapat mereferensikan seluruh database yang diisi dengan data kita sendiri.
Setelah kami memperoleh informasi yang diinginkan, LangChain dapat membantu kami dalam mengambil tindakan tertentu. Misalnya, kami dapat menginstruksikannya untuk mengirim email yang berisi detail tertentu.
Untuk mencapai ini, kami mengikuti pendekatan jalur pipa menggunakan LangChain. Pertama, kami mengambil dokumen yang kami inginkan model bahasa untuk referensi dan membaginya menjadi potongan yang lebih kecil. Potongan-potongan ini kemudian disimpan sebagai penyematan, yaitu representasi vektor teks, dalam Vector Database.
Dengan penyiapan ini, kita dapat membuat aplikasi model bahasa yang mengikuti alur standar: pengguna mengajukan pertanyaan awal, yang kemudian dikirim ke model bahasa. Representasi vektor pertanyaan digunakan untuk melakukan pencarian kesamaan di Vector Database, mengambil potongan informasi yang relevan.
Potongan-potongan ini kemudian diumpankan kembali ke model bahasa, memungkinkannya memberikan jawaban atau mengambil tindakan yang diinginkan.
LangChain memfasilitasi pengembangan aplikasi yang sadar data, karena kami dapat mereferensikan data kami sendiri di toko vektor, dan autentik, karena mereka dapat mengambil tindakan lebih dari sekadar menjawab pertanyaan. T
ini membuka banyak kasus penggunaan praktis, terutama dalam bantuan pribadi, di mana model bahasa besar dapat menangani tugas-tugas seperti memesan penerbangan, mentransfer uang, atau membantu masalah terkait pajak.
Selain itu, implikasi untuk mempelajari dan mempelajari mata pelajaran baru sangat signifikan, karena model bahasa dapat mereferensikan seluruh silabus dan mempercepat proses pembelajaran. Pengkodean, analisis data, dan ilmu data juga diharapkan akan sangat dipengaruhi oleh kemajuan ini.
Salah satu prospek yang paling menarik adalah menghubungkan model bahasa besar ke data perusahaan yang sudah ada, seperti informasi pelanggan atau data pemasaran. Integrasi dengan API canggih seperti API Meta atau API Google ini menjanjikan kemajuan eksponensial dalam analitik data dan ilmu data.
Cara Membuat Halaman Web (Demo)
Saat ini, Langchain tersedia sebagai Paket Python dan JavaScript.
Kita dapat membuat Aplikasi Web demonstrasi menggunakan model Streamlit, LangChain, dan OpenAI GPT-3 untuk mengimplementasikan konsep LangChain.
Namun pertama-tama, kita harus menginstal beberapa dependensi, termasuk Streamlit, LangChain, dan OpenAI.
Pra-syarat
Lampu aliran: Paket Python populer untuk membuat aplikasi web terkait ilmu data
AI terbuka: Diperlukan akses ke model bahasa GPT-3 OpenAI.
Untuk menginstal dependensi ini, gunakan perintah berikut di cmd:
pip install streamlit
pip install langchain
pip install openai
Paket Impor
Kami mulai dengan mengimpor paket yang diperlukan, seperti OpenAI, LangChain, dan Streamlit. Rantai model bahasa kami ditentukan dan dijalankan menggunakan tiga kelas dari LangChain: LLMChain, SimpleSequentialChain, dan PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Setup Dasar
Basis struktural proyek kami kemudian disiapkan menggunakan sintaks Streamlit. Kami memberi aplikasi itu judul "Apa yang BENAR: Menggunakan Simple Sequential Chain" dan menyertakan tautan penurunan harga ke repositori GitHub yang berfungsi sebagai inspirasi aplikasi.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Widget Ujung Depan
Kami menyiapkan aplikasi dengan sedikit informasi yang relevan, menggunakan sintaks Streamlit sederhana:
# If an API key has been provided, create an OpenAI language model instance
if API:
llm = OpenAI(temperature=0.7, openai_api_key=API)
else:
# If an API key hasn't been provided, display a warning message
st.warning("Enter your OPENAI API-KEY. Get your OpenAI API key from [here](https://platform.openai.com/account/api-keys).\n")
Untuk menambahkan widget front-end
Selanjutnya, kami perlu menyediakan widget input untuk memungkinkan pengguna kami memasukkan pertanyaan apa pun.
# Add a text input box for the user's question
user_question = st.text_input(
"Enter Your Question : ",
placeholder = "Cyanobacteria can perform photosynthetsis , are they considered as plants?",
)
Semua selesai! Rantai sudah aktif dan berjalan!
Kami mempekerjakan berbagai rantai operasi bersama dengan SimpleSequentialChain
untuk menanggapi permintaan pengguna. Rantai dilakukan dalam urutan berikut ketika pengguna memilih "Tell me about it"
Tombol:
if st.button("Tell me about it", type="primary"):
# Chain 1: Generating a rephrased version of the user's question
template = """{question}\n\n"""
prompt_template = PromptTemplate(input_variables=["question"], template=template)
question_chain = LLMChain(llm=llm, prompt=prompt_template)
# Chain 2: Generating assumptions made in the statement
template = """Here is a statement:
{statement}
Make a bullet point list of the assumptions you made when producing the above statement.\n\n"""
prompt_template = PromptTemplate(input_variables=["statement"], template=template)
assumptions_chain = LLMChain(llm=llm, prompt=prompt_template)
assumptions_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain], verbose=True
)
# Chain 3: Fact checking the assumptions
template = """Here is a bullet point list of assertions:
{assertions}
For each assertion, determine whether it is true or false. If it is false, explain why.\n\n"""
prompt_template = PromptTemplate(input_variables=["assertions"], template=template)
fact_checker_chain = LLMChain(llm=llm, prompt=prompt_template)
fact_checker_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain], verbose=True
)
# Final Chain: Generating the final answer to the user's question based on the facts and assumptions
template = """In light of the above facts, how would you answer the question '{}'""".format(
user_question
)
template = """{facts}\n""" + template
prompt_template = PromptTemplate(input_variables=["facts"], template=template)
answer_chain = LLMChain(llm=llm, prompt=prompt_template)
overall_chain = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain, answer_chain],
verbose=True,
)
# Running all the chains on the user's question and displaying the final answer
st.success(overall_chain.run(user_question))
question_chain
: yang merupakan langkah pertama dalam alur kami, menerima pertanyaan pengguna sebagai masukan dan keluaran. Kueri pengguna berfungsi sebagai template rantai.- Berdasarkan pernyataan terkait dengan pertanyaan, the
assumptions_chain
menghasilkan daftar asumsi poin-poin menggunakan output dariquestion_chain
sebagai masukan. ItuLLMChain
danOpenAI
model dari LangChain digunakan untuk membangun pernyataan. Pengguna ditugaskan untuk membuat daftar asumsi yang dibuat untuk menghasilkan pernyataan menggunakan templat untuk rantai ini. - Berdasarkan keluaran dari
question_chain
danassumptions_chain
, yangfact_checker_chain
menghasilkan daftar pernyataan dalam bentuk poin-poin. Klaim dibuat dengan menggunakanOpenAI
model danLLMChain
dari LangChain. Pengguna ditugaskan untuk menentukan apakah setiap klaim akurat atau salah dan memberikan pembenaran untuk klaim tersebut. - Grafik
answer_chain
menggunakan output dariquestion_chain
,assumptions_chain
, danfact_checker_chain
sebagai input untuk membuat respons terhadap pertanyaan pengguna menggunakan data yang dihasilkan oleh rantai sebelumnya. Templat untuk rantai ini meminta pengguna merespons kueri pertama menggunakan fakta yang telah dibuat. - Untuk memberikan tanggapan akhir atas pertanyaan pengguna berdasarkan informasi yang dihasilkan oleh rantai sebelumnya, kami mengintegrasikan rantai ini ke dalam rantai keseluruhan. Setelah rantai selesai, kami menggunakan
st.success()
untuk menunjukkan solusi kepada pengguna.
Kesimpulan
Kita dapat dengan mudah menggabungkan tindakan model bahasa yang berbeda untuk membuat saluran pipa yang lebih rumit dengan menggunakan SimpleSequentialChain
modul LangChain. Untuk berbagai macam aplikasi NLP, termasuk chatbots, sistem tanya jawab, dan alat terjemahan bahasa, ini mungkin cukup membantu.
Kecemerlangan LangChain ditemukan dalam kapasitasnya untuk abstrak, yang memungkinkan pengguna untuk berkonsentrasi pada masalah saat ini daripada spesifikasi pemodelan bahasa.
LangChain membuat proses pembuatan model bahasa canggih menjadi lebih ramah pengguna dengan menawarkan model pra-terlatih dan pilihan templat.
Ini memberi Anda opsi untuk menyempurnakan model bahasa menggunakan data mereka sendiri, membuatnya mudah untuk menyesuaikan model bahasa. Hal ini memungkinkan pengembangan model khusus domain yang lebih tepat, yang untuk pekerjaan tertentu, mengungguli model terlatih.
Grafik SimpleSequentialChain
modul dan fitur lain dari LangChain menjadikannya alat yang efektif untuk mengembangkan dan menerapkan sistem NLP yang canggih dengan cepat.
Tinggalkan Balasan