LangChain là một công cụ tiên tiến và mạnh mẽ được phát triển để khai thác sức mạnh của các Mô hình ngôn ngữ lớn (LLM).
Những LLM này sở hữu những khả năng vượt trội và có thể giải quyết hiệu quả một loạt các nhiệm vụ. Tuy nhiên, điều quan trọng cần lưu ý là sức mạnh của họ nằm ở bản chất chung chứ không phải chuyên môn sâu về miền. Mức độ phổ biến của nó đã tăng lên nhanh chóng kể từ khi ra mắt GPT-4.
Mặc dù các LLM vượt trội trong việc xử lý các nhiệm vụ khác nhau, nhưng họ có thể gặp phải những hạn chế khi cung cấp các câu trả lời cụ thể hoặc giải quyết các nhiệm vụ đòi hỏi kiến thức chuyên sâu về lĩnh vực này. Ví dụ, xem xét việc sử dụng LLM để trả lời các câu hỏi hoặc thực hiện các nhiệm vụ trong các lĩnh vực chuyên môn như y học hoặc luật.
Mặc dù LLM chắc chắn có thể trả lời các câu hỏi chung về các lĩnh vực này, nhưng nó có thể gặp khó khăn trong việc đưa ra các câu trả lời chi tiết hoặc sắc thái hơn đòi hỏi kiến thức chuyên môn hoặc chuyên môn.
Điều này là do các LLM được đào tạo trên một lượng lớn dữ liệu văn bản từ nhiều nguồn khác nhau, cho phép họ tìm hiểu các mẫu, hiểu ngữ cảnh và tạo ra các phản hồi mạch lạc. Tuy nhiên, việc đào tạo của họ thường không liên quan đến việc thu thập kiến thức chuyên biệt hoặc lĩnh vực cụ thể ở cùng mức độ như các chuyên gia con người trong các lĩnh vực đó.
Do đó, trong khi LangChain, kết hợp với LLM, có thể là một công cụ vô giá cho nhiều nhiệm vụ, thì điều quan trọng là phải nhận ra rằng kiến thức chuyên môn sâu về miền có thể vẫn cần thiết trong một số tình huống nhất định. Các chuyên gia con người có kiến thức chuyên môn có thể cung cấp chiều sâu cần thiết, sự hiểu biết sắc thái và những hiểu biết cụ thể theo ngữ cảnh mà có thể vượt quá khả năng của một mình LLM.
Chúng tôi khuyên bạn nên xem tài liệu của LangChain hoặc GitHub kho lưu trữ để hiểu kỹ hơn về các trường hợp sử dụng điển hình của nó. Bạn nên có một bức tranh toàn cảnh hơn về gói này.
Làm thế nào để nó làm việc?
Để hiểu mục đích và công việc của LangChain, hãy xem xét một ví dụ thực tế. Chúng tôi biết rằng GPT-4 có kiến thức chung ấn tượng và có thể cung cấp câu trả lời đáng tin cậy cho nhiều câu hỏi.
Tuy nhiên, nếu chúng tôi muốn thông tin cụ thể từ dữ liệu của chính mình, chẳng hạn như tài liệu cá nhân, sách, tệp PDF hoặc cơ sở dữ liệu độc quyền thì sao?
LangChain cho phép chúng tôi kết nối một mô hình ngôn ngữ lớn như GPT-4 vào các nguồn dữ liệu của riêng chúng tôi. Nó không chỉ đơn giản là dán một đoạn văn bản vào giao diện trò chuyện. Thay vào đó, chúng ta có thể tham chiếu toàn bộ cơ sở dữ liệu chứa đầy dữ liệu của chính chúng ta.
Sau khi chúng tôi có được thông tin mong muốn, LangChain có thể hỗ trợ chúng tôi thực hiện các hành động cụ thể. Chẳng hạn, chúng tôi có thể hướng dẫn nó gửi một email có chứa một số chi tiết nhất định.
Để đạt được điều này, chúng tôi thực hiện theo cách tiếp cận đường ống sử dụng LangChain. Đầu tiên, chúng tôi lấy tài liệu mà chúng tôi muốn mô hình ngôn ngữ để tham khảo và chia nó thành các phần nhỏ hơn. Những khối này sau đó được lưu trữ dưới dạng nhúng, được biểu diễn vectơ của văn bản, trong Cơ sở dữ liệu Vector.
Với thiết lập này, chúng tôi có thể xây dựng các ứng dụng mô hình ngôn ngữ tuân theo một quy trình chuẩn: người dùng đặt một câu hỏi ban đầu, câu hỏi này sau đó sẽ được gửi đến mô hình ngôn ngữ. Biểu diễn véc-tơ của câu hỏi được sử dụng để thực hiện tìm kiếm tương tự trong Cơ sở dữ liệu véc-tơ, truy xuất các khối thông tin có liên quan.
Những đoạn này sau đó được đưa trở lại mô hình ngôn ngữ, cho phép nó đưa ra câu trả lời hoặc thực hiện hành động mong muốn.
LangChain tạo điều kiện phát triển các ứng dụng nhận biết dữ liệu, vì chúng ta có thể tham chiếu dữ liệu của chính mình trong kho lưu trữ vectơ và xác thực vì chúng có thể thực hiện các hành động ngoài việc trả lời các câu hỏi. t
của anh ấy mở ra vô số trường hợp sử dụng thực tế, đặc biệt là trong hỗ trợ cá nhân, nơi một mô hình ngôn ngữ lớn có thể xử lý các tác vụ như đặt chuyến bay, chuyển tiền hoặc hỗ trợ các vấn đề liên quan đến thuế.
Ngoài ra, ý nghĩa của việc nghiên cứu và học các môn học mới là rất quan trọng, vì một mô hình ngôn ngữ có thể tham khảo toàn bộ giáo trình và đẩy nhanh quá trình học tập. Mã hóa, phân tích dữ liệu và khoa học dữ liệu dự kiến cũng sẽ chịu ảnh hưởng lớn từ những tiến bộ này.
Một trong những triển vọng thú vị nhất là kết nối các mô hình ngôn ngữ lớn với dữ liệu công ty hiện có, chẳng hạn như thông tin khách hàng hoặc dữ liệu tiếp thị. Sự tích hợp này với các API nâng cao như API của Meta hoặc API của Google hứa hẹn tiến bộ theo cấp số nhân trong phân tích dữ liệu và khoa học dữ liệu.
Cách xây dựng một trang web (Demo)
Hiện tại, Langchain có sẵn dưới dạng Gói Python và JavaScript.
Chúng ta có thể tạo một Ứng dụng web trình diễn sử dụng mô hình Streamlit, LangChain và OpenAI GPT-3 để triển khai khái niệm LangChain.
Nhưng trước tiên, chúng ta phải cài đặt một số phụ thuộc, bao gồm Streamlit, LangChain và OpenAI.
Điều kiện tiên quyết
Hợp lý hóa: Gói Python phổ biến để tạo các ứng dụng web liên quan đến khoa học dữ liệu
MởAI: Cần có quyền truy cập vào mô hình ngôn ngữ GPT-3 của OpenAI.
Để cài đặt các phụ thuộc này, hãy sử dụng các lệnh sau trong cmd:
pip install streamlit
pip install langchain
pip install openai
Nhập gói
Chúng tôi bắt đầu bằng cách nhập các gói cần thiết, chẳng hạn như OpenAI, LangChain và Streamlit. Chuỗi mô hình ngôn ngữ của chúng tôi được xác định và thực thi bằng cách sử dụng ba lớp từ LangChain: LLMChain, SimpleSequentialChain và PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Thiết lập cơ bản
Cơ sở cấu trúc của dự án của chúng tôi sau đó được đưa lên bằng cú pháp Streamlit. Chúng tôi đã đặt cho ứng dụng tiêu đề “Điều gì ĐÚNG: Sử dụng Chuỗi tuần tự đơn giản” và bao gồm một liên kết đánh dấu tới kho lưu trữ GitHub đóng vai trò là nguồn cảm hứng của ứng dụng.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Widget giao diện người dùng
Chúng tôi thiết lập ứng dụng với một vài thông tin liên quan, sử dụng cú pháp Streamlit đơn giản:
# 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")
Để thêm tiện ích giao diện người dùng
Hơn nữa, chúng tôi cần cung cấp tiện ích đầu vào để cho phép người dùng nhập bất kỳ câu hỏi nào.
# 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?",
)
Tất cả đã được làm xong! Các chuỗi đang lên và chạy!
Chúng tôi sử dụng các chuỗi hoạt động khác nhau cùng với SimpleSequentialChain
để trả lời truy vấn của người dùng. Các chuỗi được thực hiện theo trình tự sau khi người dùng chọn "Tell me about it"
nút:
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
: là bước đầu tiên trong quy trình của chúng tôi, nhận câu hỏi của người dùng làm đầu vào và đầu ra. Truy vấn của người dùng đóng vai trò là mẫu của chuỗi.- Dựa trên một tuyên bố liên quan đến câu hỏi,
assumptions_chain
tạo ra một danh sách gạch đầu dòng các giả định bằng cách sử dụng đầu ra từquestion_chain
làm đầu vào. CácLLMChain
vàOpenAI
mô hình từ LangChain đã được sử dụng để xây dựng câu lệnh. Người dùng được giao nhiệm vụ tạo danh sách các giả định đã được thực hiện để đưa ra tuyên bố bằng cách sử dụng mẫu cho chuỗi này. - Dựa trên kết quả đầu ra từ
question_chain
vàassumptions_chain
, Cácfact_checker_chain
tạo ra một danh sách các xác nhận dưới dạng các gạch đầu dòng. Các tuyên bố được sản xuất bằng cách sử dụngOpenAI
mô hình vàLLMChain
từ LangChain. Người dùng có nhiệm vụ xác định xem mỗi khiếu nại là chính xác hay không chính xác và đưa ra lời biện minh cho những khiếu nại đó. - Sản phẩm
answer_chain
sử dụng kết quả đầu ra từquestion_chain
,assumptions_chain
vàfact_checker_chain
làm đầu vào để tạo câu trả lời cho câu hỏi của người dùng bằng cách sử dụng dữ liệu do các chuỗi trước đó tạo ra. Mẫu cho chuỗi này yêu cầu người dùng trả lời truy vấn đầu tiên bằng cách sử dụng các sự kiện đã được tạo. - Để cung cấp phản hồi cuối cùng cho yêu cầu của người dùng dựa trên thông tin do các chuỗi trước đó tạo ra, chúng tôi tích hợp các chuỗi này vào chuỗi tổng thể. Sau khi các chuỗi được hoàn thành, chúng tôi sử dụng
st.success()
để hiển thị cho người dùng giải pháp.
Kết luận
Chúng ta có thể đơn giản kết hợp các hành động mô hình ngôn ngữ khác nhau để tạo ra các đường dẫn phức tạp hơn bằng cách sử dụng SimpleSequentialChain
mô-đun của LangChain. Đối với nhiều ứng dụng NLP, bao gồm chatbot, hệ thống hỏi đáp và công cụ dịch ngôn ngữ, điều này có thể khá hữu ích.
Sự xuất sắc của LangChain được tìm thấy ở khả năng trừu tượng hóa, cho phép người dùng tập trung vào vấn đề hiện tại hơn là các chi tiết cụ thể của mô hình ngôn ngữ.
LangChain làm cho quá trình tạo các mô hình ngôn ngữ tinh vi trở nên thân thiện hơn với người dùng bằng cách cung cấp các mô hình được đào tạo trước và tuyển chọn các mẫu.
Nó cung cấp cho bạn tùy chọn để tinh chỉnh các mô hình ngôn ngữ bằng cách sử dụng dữ liệu của riêng chúng, giúp việc tùy chỉnh các mô hình ngôn ngữ trở nên đơn giản. Điều này cho phép phát triển các mô hình cụ thể theo miền, chính xác hơn, đối với một công việc nhất định, vượt trội so với các mô hình được đào tạo.
Sản phẩm SimpleSequentialChain
mô-đun và các tính năng khác của LangChain làm cho nó trở thành một công cụ hiệu quả để nhanh chóng phát triển và triển khai các hệ thống NLP tinh vi.
Bình luận