LangChain เป็นเครื่องมือที่ทันสมัยและแข็งแกร่งที่พัฒนาขึ้นเพื่อควบคุมพลังของ Large Language Models (LLMs)
LLM เหล่านี้มีความสามารถที่โดดเด่นและสามารถรับมือกับงานที่หลากหลายได้อย่างมีประสิทธิภาพ อย่างไรก็ตาม สิ่งสำคัญคือต้องทราบว่าจุดแข็งของพวกเขาอยู่ที่ลักษณะทั่วไปมากกว่าความเชี่ยวชาญเชิงลึกในโดเมน ความนิยมเพิ่มขึ้นอย่างรวดเร็วตั้งแต่เปิดตัว GPT-4
ในขณะที่ LLM เก่งในการจัดการงานต่างๆ พวกเขาอาจเผชิญกับข้อจำกัดเมื่อต้องให้คำตอบที่เฉพาะเจาะจงหรือจัดการกับงานที่ต้องใช้ความรู้ด้านโดเมนอย่างลึกซึ้ง ตัวอย่างเช่น พิจารณาการใช้ LLM เพื่อตอบคำถามหรือปฏิบัติงานในสาขาเฉพาะทาง เช่น การแพทย์หรือกฎหมาย
แม้ว่า LLM สามารถตอบคำถามทั่วไปเกี่ยวกับสาขาเหล่านี้ได้อย่างแน่นอน แต่ก็อาจมีปัญหาในการให้คำตอบที่ละเอียดหรือเหมาะสมยิ่งขึ้นซึ่งจำเป็นต้องใช้ความรู้หรือความเชี่ยวชาญเฉพาะด้าน
เนื่องจาก LLM ได้รับการฝึกอบรมเกี่ยวกับข้อมูลข้อความจำนวนมหาศาลจากแหล่งข้อมูลที่หลากหลาย ทำให้พวกเขาสามารถเรียนรู้รูปแบบ เข้าใจบริบท และสร้างคำตอบที่สอดคล้องกัน อย่างไรก็ตาม การฝึกอบรมของพวกเขามักไม่เกี่ยวข้องกับการได้มาซึ่งความรู้เฉพาะด้านหรือเฉพาะด้านในระดับเดียวกับผู้เชี่ยวชาญในสาขาเหล่านั้น
ดังนั้น ในขณะที่ LangChain ร่วมกับ LLM สามารถเป็นเครื่องมือที่ทรงคุณค่าสำหรับงานที่หลากหลาย สิ่งสำคัญคือต้องตระหนักว่าความเชี่ยวชาญในโดเมนเชิงลึกอาจยังจำเป็นในบางสถานการณ์ ผู้เชี่ยวชาญที่มีความรู้เฉพาะทางสามารถให้ข้อมูลเชิงลึกที่จำเป็น ความเข้าใจที่เหมาะสม และข้อมูลเชิงลึกเฉพาะบริบทที่อาจเกินความสามารถของ LLM เพียงอย่างเดียว
เราขอแนะนำให้ดูเอกสารของ LangChain หรือ GitHub พื้นที่เก็บข้อมูลเพื่อความเข้าใจที่ละเอียดยิ่งขึ้นเกี่ยวกับกรณีการใช้งานทั่วไป ขอแนะนำให้ดูภาพรวมของชุดข้อมูลนี้ให้ใหญ่ขึ้น
มันทำงานอย่างไร
เพื่อให้เข้าใจถึงวัตถุประสงค์และการทำงานของ LangChain ลองพิจารณาตัวอย่างที่ใช้งานได้จริง เราทราบดีว่า GPT-4 มีความรู้ทั่วไปที่น่าประทับใจและสามารถให้คำตอบที่เชื่อถือได้สำหรับคำถามที่หลากหลาย
อย่างไรก็ตาม จะทำอย่างไรหากเราต้องการข้อมูลเฉพาะจากข้อมูลของเราเอง เช่น เอกสารส่วนตัว หนังสือ ไฟล์ PDF หรือฐานข้อมูลที่เป็นกรรมสิทธิ์
LangChain ช่วยให้เราสามารถเชื่อมต่อ แบบจำลองภาษาขนาดใหญ่ เช่น GPT-4 ไปยังแหล่งข้อมูลของเราเอง เป็นมากกว่าเพียงแค่วางตัวอย่างข้อความลงในอินเทอร์เฟซการแชท แต่เราสามารถอ้างอิงฐานข้อมูลทั้งหมดที่เต็มไปด้วยข้อมูลของเราเองได้
เมื่อเราได้รับข้อมูลที่ต้องการแล้ว LangChain สามารถช่วยเราดำเนินการบางอย่างได้ ตัวอย่างเช่น เราสามารถสั่งให้ส่งอีเมลที่มีรายละเอียดบางอย่าง
เพื่อให้บรรลุเป้าหมายนี้ เราปฏิบัติตามแนวทางไปป์ไลน์โดยใช้ LangChain ขั้นแรก เรานำเอกสารที่เราต้องการ แบบจำลองภาษา เพื่ออ้างอิงและแบ่งออกเป็นส่วนย่อยๆ ชิ้นเหล่านี้จะถูกเก็บไว้เป็นการฝังซึ่งก็คือ การแสดงเวกเตอร์ของข้อความในฐานข้อมูลเวกเตอร์.
ด้วยการตั้งค่านี้ เราสามารถสร้างแอปพลิเคชันโมเดลภาษาที่เป็นไปตามไปป์ไลน์มาตรฐาน: ผู้ใช้ถามคำถามเริ่มต้น ซึ่งจะถูกส่งไปยังโมเดลภาษา การแสดงเวกเตอร์ของคำถามจะใช้ในการค้นหาความคล้ายคลึงกันในฐานข้อมูลเวกเตอร์ โดยเรียกค้นข้อมูลที่เกี่ยวข้อง
จากนั้นชิ้นส่วนเหล่านี้จะถูกส่งกลับไปยังโมเดลภาษา ทำให้สามารถให้คำตอบหรือดำเนินการตามที่ต้องการได้
LangChain ช่วยอำนวยความสะดวกในการพัฒนาแอปพลิเคชันที่รับรู้ข้อมูล เนื่องจากเราสามารถอ้างอิงข้อมูลของเราเองในร้านค้าเวกเตอร์ และแท้จริง เนื่องจากสามารถดำเนินการนอกเหนือจากการตอบคำถาม ต
เขาเปิดกรณีการใช้งานจริงมากมาย โดยเฉพาะอย่างยิ่งในการช่วยเหลือส่วนบุคคล ซึ่งโมเดลภาษาขนาดใหญ่สามารถจัดการงานต่างๆ เช่น การจองเที่ยวบิน การโอนเงิน หรือการช่วยเหลือในเรื่องที่เกี่ยวข้องกับภาษี
นอกจากนี้ นัยสำหรับการศึกษาและการเรียนรู้วิชาใหม่มีความสำคัญ เนื่องจากรูปแบบภาษาสามารถอ้างอิงทั้งหลักสูตรและเร่งกระบวนการเรียนรู้ การเข้ารหัส การวิเคราะห์ข้อมูล และวิทยาการข้อมูลคาดว่าจะได้รับอิทธิพลอย่างมากจากความก้าวหน้าเหล่านี้
หนึ่งในโอกาสที่น่าตื่นเต้นที่สุดคือการเชื่อมต่อโมเดลภาษาขนาดใหญ่เข้ากับข้อมูลบริษัทที่มีอยู่ เช่น ข้อมูลลูกค้าหรือข้อมูลการตลาด การผสานรวมกับ API ขั้นสูง เช่น API ของ Meta หรือ API ของ Google รับประกันความก้าวหน้าแบบทวีคูณในการวิเคราะห์ข้อมูลและวิทยาศาสตร์ข้อมูล
วิธีสร้างเว็บเพจ (สาธิต)
ปัจจุบัน Langchain มีให้บริการในรูปแบบ Python และ JavaScript Packages
เราสามารถสร้าง Web App สาธิตโดยใช้ Streamlit, LangChain และโมเดล OpenAI GPT-3 เพื่อนำแนวคิด LangChain ไปใช้
แต่ก่อนอื่น เราต้องติดตั้งการพึ่งพาบางอย่าง ซึ่งรวมถึง Streamlit, LangChain และ OpenAI
requisites ก่อน
สตรีมไลท์: แพ็คเกจ Python ยอดนิยมสำหรับการสร้างเว็บแอปพลิเคชันที่เกี่ยวข้องกับวิทยาศาสตร์ข้อมูล
โอเพ่นเอไอ: จำเป็นต้องเข้าถึงโมเดลภาษา GPT-3 ของ OpenAI
ในการติดตั้งการพึ่งพาเหล่านี้ ให้ใช้คำสั่งต่อไปนี้ใน cmd:
pip install streamlit
pip install langchain
pip install openai
นำเข้าแพ็คเกจ
เราเริ่มต้นด้วยการนำเข้าแพ็คเกจที่จำเป็น เช่น OpenAI, LangChain และ Streamlit เชนโมเดลภาษาของเราถูกกำหนดและดำเนินการโดยใช้สามคลาสจาก LangChain: LLMChain, SimpleSequentialChain และ PromptTemplate
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
การตั้งค่าพื้นฐาน
พื้นฐานโครงสร้างของโปรเจ็กต์ของเรานั้นถูกสร้างขึ้นโดยใช้ไวยากรณ์ของ Streamlit เราให้ชื่อแอปว่า “What's TRUE: Using Simple Sequential Chain” และรวมลิงก์มาร์กดาวน์ไปยังที่เก็บ GitHub ซึ่งทำหน้าที่เป็นแรงบันดาลใจของแอป
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
วิดเจ็ตส่วนหน้า
เราตั้งค่าแอปด้วยข้อมูลที่เกี่ยวข้องเพียงเล็กน้อย โดยใช้ไวยากรณ์ Streamlit อย่างง่าย:
# 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")
ในการเพิ่มวิดเจ็ตส่วนหน้า
นอกจากนี้ เราจำเป็นต้องจัดเตรียมวิดเจ็ตอินพุตเพื่อให้ผู้ใช้ของเราสามารถป้อนคำถามใดๆ ได้
# 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?",
)
ทุกอย่างเสร็จเรียบร้อย! โซ่เริ่มทำงานแล้ว!
เราใช้สายการปฏิบัติการที่หลากหลายร่วมกับ SimpleSequentialChain
เพื่อตอบคำถามของผู้ใช้ ห่วงโซ่จะดำเนินการตามลำดับต่อไปนี้เมื่อผู้ใช้เลือก "Tell me about it"
ปุ่ม:
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
: ซึ่งเป็นขั้นตอนแรกในไปป์ไลน์ของเรา รับคำถามของผู้ใช้เป็นอินพุตและเอาต์พุต ข้อความค้นหาของผู้ใช้ทำหน้าที่เป็นเทมเพลตของเชน- จากคำแถลงที่เชื่อมโยงกับคำถาม the
assumptions_chain
สร้างรายการสมมติฐานที่เป็นสัญลักษณ์แสดงหัวข้อย่อยโดยใช้ผลลัพธ์จากquestion_chain
เป็นอินพุต เดอะLLMChain
และOpenAI
โมเดลจาก LangChain ถูกนำมาใช้เพื่อสร้างคำสั่ง ผู้ใช้ได้รับมอบหมายให้สร้างรายการสมมติฐานที่ทำขึ้นเพื่อสร้างคำสั่งโดยใช้เทมเพลตสำหรับเชนนี้ - โดยอ้างอิงจากผลลัพธ์ของ
question_chain
และassumptions_chain
ที่fact_checker_chain
สร้างรายการของการยืนยันในรูปแบบของสัญลักษณ์แสดงหัวข้อย่อย การเรียกร้องถูกสร้างขึ้นโดยใช้OpenAI
รูปแบบและLLMChain
จาก LangChain ผู้ใช้มีหน้าที่พิจารณาว่าการอ้างสิทธิ์แต่ละรายการถูกต้องหรือไม่ถูกต้อง และให้เหตุผลสำหรับการอ้างสิทธิ์นั้น - พื้นที่
answer_chain
ใช้เอาต์พุตจากquestion_chain
,assumptions_chain
และfact_checker_chain
เป็นอินพุตเพื่อสร้างการตอบคำถามของผู้ใช้โดยใช้ข้อมูลที่ผลิตโดยเชนก่อนหน้านี้ เทมเพลตสำหรับห่วงโซ่นี้ขอให้ผู้ใช้ตอบกลับแบบสอบถามแรกโดยใช้ข้อเท็จจริงที่สร้างขึ้น - เพื่อให้การตอบสนองที่ดีที่สุดต่อคำถามของผู้ใช้ตามข้อมูลที่ผลิตโดยเชนก่อนหน้านี้ เราจึงรวมเชนเหล่านี้เข้ากับเชนโดยรวม หลังจากทำโซ่เสร็จแล้ว เราก็ใช้
st.success()
เพื่อแสดงวิธีแก้ปัญหาแก่ผู้ใช้
สรุป
เราสามารถเชื่อมโยงการดำเนินการของโมเดลภาษาต่างๆ เข้าด้วยกันเพื่อสร้างไปป์ไลน์ที่ซับซ้อนมากขึ้นได้โดยใช้ SimpleSequentialChain
โมดูลของ LangChain สำหรับแอปพลิเคชัน NLP ที่หลากหลาย รวมถึงแชทบอท ระบบถาม-ตอบ และเครื่องมือแปลภาษา อาจมีประโยชน์มากทีเดียว
ความฉลาดของ LangChain นั้นพบได้ในความสามารถที่เป็นนามธรรม ซึ่งช่วยให้ผู้ใช้มีสมาธิกับปัญหาปัจจุบันมากกว่าความเฉพาะเจาะจงของการสร้างแบบจำลองภาษา
LangChain ทำให้กระบวนการสร้างโมเดลภาษาที่ซับซ้อนเป็นมิตรกับผู้ใช้มากขึ้นโดยนำเสนอโมเดลที่ได้รับการฝึกอบรมล่วงหน้าและเทมเพลตที่ได้รับการคัดสรร
ให้คุณมีตัวเลือกในการปรับแต่งโมเดลภาษาอย่างละเอียดโดยใช้ข้อมูลของตัวเอง ทำให้ง่ายต่อการปรับแต่งโมเดลภาษา สิ่งนี้ทำให้สามารถพัฒนาโมเดลเฉพาะโดเมนที่แม่นยำยิ่งขึ้น ซึ่งสำหรับงานที่กำหนด มีประสิทธิภาพดีกว่าโมเดลที่ผ่านการฝึกอบรมแล้ว
พื้นที่ SimpleSequentialChain
โมดูลและคุณสมบัติอื่นๆ ของ LangChain ทำให้เป็นเครื่องมือที่มีประสิทธิภาพสำหรับการพัฒนาและปรับใช้ระบบ NLP ที่ซับซ้อนอย่างรวดเร็ว
เขียนความเห็น