Το LangChain είναι ένα πρωτοποριακό και ισχυρό εργαλείο που αναπτύχθηκε για να αξιοποιήσει τη δύναμη των Μεγάλων Γλωσσικών Μοντέλων (LLM).
Αυτά τα LLM διαθέτουν αξιοσημείωτες δυνατότητες και μπορούν να αντιμετωπίσουν αποτελεσματικά ένα ευρύ φάσμα εργασιών. Ωστόσο, είναι σημαντικό να σημειωθεί ότι η δύναμή τους έγκειται στη γενική τους φύση και όχι στη σε βάθος τεχνογνωσία του τομέα. Η δημοτικότητά του έχει αυξηθεί γρήγορα από την εισαγωγή του GPT-4.
Ενώ τα LLM υπερέχουν στον χειρισμό διαφόρων εργασιών, ενδέχεται να αντιμετωπίσουν περιορισμούς όσον αφορά την παροχή συγκεκριμένων απαντήσεων ή την αντιμετώπιση εργασιών που απαιτούν βαθιά γνώση του τομέα. Σκεφτείτε, για παράδειγμα, να χρησιμοποιήσετε ένα LLM για να απαντήσετε σε ερωτήσεις ή να εκτελέσετε εργασίες σε εξειδικευμένους τομείς όπως η ιατρική ή η νομική.
Ενώ το LLM μπορεί σίγουρα να ανταποκριθεί σε γενικές ερωτήσεις σχετικά με αυτά τα πεδία, μπορεί να δυσκολεύεται να προσφέρει πιο λεπτομερείς ή αποχρώσεις απαντήσεις που απαιτούν εξειδικευμένη γνώση ή εξειδίκευση.
Αυτό συμβαίνει επειδή οι LLM εκπαιδεύονται σε τεράστιες ποσότητες δεδομένων κειμένου από διαφορετικές πηγές, δίνοντάς τους τη δυνατότητα να μάθουν μοτίβα, να κατανοήσουν το πλαίσιο και να δημιουργήσουν συνεκτικές απαντήσεις. Ωστόσο, η εκπαίδευσή τους δεν περιλαμβάνει συνήθως την απόκτηση γνώσεων σε συγκεκριμένο τομέα ή εξειδικευμένη γνώση στον ίδιο βαθμό με τους ειδικούς σε αυτούς τους τομείς.
Επομένως, ενώ το LangChain, σε συνδυασμό με τα LLMs, μπορεί να είναι ένα ανεκτίμητο εργαλείο για ένα ευρύ φάσμα εργασιών, είναι σημαντικό να αναγνωρίσουμε ότι η εμπειρογνωμοσύνη σε βάθος τομέα μπορεί να είναι ακόμα απαραίτητη σε ορισμένες περιπτώσεις. Οι ανθρώπινοι ειδικοί με εξειδικευμένες γνώσεις μπορούν να παρέχουν το απαραίτητο βάθος, τη λεπτή κατανόηση και τις συγκεκριμένες γνώσεις για το πλαίσιο που μπορεί να είναι πέρα από τις δυνατότητες των LLM και μόνο.
Θα σας συμβουλεύαμε να δείτε τα έγγραφα της LangChain ή GitHub αποθετήριο για μια πληρέστερη κατανόηση των τυπικών περιπτώσεων χρήσης του. Συνιστάται ανεπιφύλακτα να έχετε μια μεγαλύτερη εικόνα αυτού του πακέτου.
Πώς λειτουργεί?
Για να κατανοήσουμε τον σκοπό και το έργο του LangChain, ας εξετάσουμε ένα πρακτικό παράδειγμα. Γνωρίζουμε ότι το GPT-4 έχει εντυπωσιακές γενικές γνώσεις και μπορεί να παρέχει αξιόπιστες απαντήσεις σε ένα ευρύ φάσμα ερωτήσεων.
Ωστόσο, τι γίνεται αν θέλουμε συγκεκριμένες πληροφορίες από τα δικά μας δεδομένα, όπως ένα προσωπικό έγγραφο, βιβλίο, αρχείο PDF ή ιδιόκτητη βάση δεδομένων;
Το LangChain μας επιτρέπει να συνδεθούμε α μεγάλο γλωσσικό μοντέλο όπως το GPT-4 στις δικές μας πηγές δεδομένων. Προχωρά πέρα από την απλή επικόλληση ενός αποσπάσματος κειμένου σε μια διεπαφή συνομιλίας. Αντίθετα, μπορούμε να αναφερθούμε σε μια ολόκληρη βάση δεδομένων γεμάτη με δικά μας δεδομένα.
Μόλις λάβουμε τις επιθυμητές πληροφορίες, η LangChain μπορεί να μας βοηθήσει στη λήψη συγκεκριμένων ενεργειών. Για παράδειγμα, μπορούμε να του ζητήσουμε να στείλει ένα email που περιέχει ορισμένες λεπτομέρειες.
Για να το πετύχουμε αυτό, ακολουθούμε μια προσέγγιση αγωγών χρησιμοποιώντας το LangChain. Αρχικά, παίρνουμε το έγγραφο που θέλουμε γλωσσικό μοντέλο να το αναφέρετε και να το χωρίσετε σε μικρότερα κομμάτια. Αυτά τα κομμάτια στη συνέχεια αποθηκεύονται ως ενσωματώσεις, οι οποίες είναι διανυσματικές αναπαραστάσεις του κειμένου, σε μια διανυσματική βάση δεδομένων.
Με αυτήν τη ρύθμιση, μπορούμε να δημιουργήσουμε εφαρμογές μοντέλων γλώσσας που ακολουθούν μια τυπική διοχέτευση: ένας χρήστης κάνει μια αρχική ερώτηση, η οποία στη συνέχεια αποστέλλεται στο μοντέλο γλώσσας. Η διανυσματική αναπαράσταση της ερώτησης χρησιμοποιείται για την εκτέλεση αναζήτησης ομοιότητας στη βάση δεδομένων διανυσμάτων, ανακτώντας τα σχετικά κομμάτια πληροφοριών.
Αυτά τα κομμάτια στη συνέχεια ανατροφοδοτούνται στο μοντέλο γλώσσας, επιτρέποντάς του να δώσει μια απάντηση ή να πραγματοποιήσει την επιθυμητή ενέργεια.
Το LangChain διευκολύνει την ανάπτυξη εφαρμογών που έχουν γνώση δεδομένων, καθώς μπορούμε να αναφέρουμε τα δικά μας δεδομένα σε ένα διανυσματικό κατάστημα και αυθεντικές, καθώς μπορούν να κάνουν ενέργειες πέρα από την απάντηση σε ερωτήσεις. Τ
ανοίγει πολλές περιπτώσεις πρακτικής χρήσης, ιδιαίτερα στην προσωπική βοήθεια, όπου ένα μεγάλο γλωσσικό μοντέλο μπορεί να χειριστεί εργασίες όπως η κράτηση πτήσεων, η μεταφορά χρημάτων ή η βοήθεια σε φορολογικά θέματα.
Επιπλέον, οι επιπτώσεις για τη μελέτη και την εκμάθηση νέων θεμάτων είναι σημαντικές, καθώς ένα γλωσσικό μοντέλο μπορεί να αναφέρεται σε ένα ολόκληρο πρόγραμμα σπουδών και να επιταχύνει τη διαδικασία εκμάθησης. Η κωδικοποίηση, η ανάλυση δεδομένων και η επιστήμη δεδομένων αναμένεται επίσης να επηρεαστούν σε μεγάλο βαθμό από αυτές τις εξελίξεις.
Μία από τις πιο συναρπαστικές προοπτικές είναι η σύνδεση μοντέλων μεγάλων γλωσσών με υπάρχοντα εταιρικά δεδομένα, όπως πληροφορίες πελατών ή δεδομένα μάρκετινγκ. Αυτή η ενοποίηση με προηγμένα API όπως το API της Meta ή το API της Google υπόσχεται εκθετική πρόοδο στην ανάλυση δεδομένων και την επιστήμη δεδομένων.
Πώς να δημιουργήσετε μια ιστοσελίδα (Demo)
Επί του παρόντος, το Langchain είναι διαθέσιμο ως πακέτα Python και JavaScript.
Μπορούμε να δημιουργήσουμε μια επίδειξη Web App χρησιμοποιώντας το Streamlit, το LangChain και το μοντέλο OpenAI GPT-3 για την υλοποίηση της ιδέας LangChain.
Αλλά πρώτα, πρέπει να εγκαταστήσουμε μερικές εξαρτήσεις, συμπεριλαμβανομένων των Streamlit, LangChain και OpenAI.
Προϋποθέσεις
Streamlit: Ένα δημοφιλές πακέτο Python για τη δημιουργία εφαρμογών web που σχετίζονται με την επιστήμη των δεδομένων
OpenAI: Απαιτείται πρόσβαση στο μοντέλο γλώσσας 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
: που είναι το πρώτο βήμα στη διοχέτευσή μας, λαμβάνει την ερώτηση του χρήστη ως είσοδο και έξοδο. Το ερώτημα του χρήστη χρησιμεύει ως πρότυπο της αλυσίδας.- Με βάση μια δήλωση που συνδέεται με την ερώτηση, το
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, συμπεριλαμβανομένων των chatbots, συστημάτων ερωτήσεων και απαντήσεων και εργαλείων μετάφρασης γλώσσας, αυτό μπορεί να είναι πολύ χρήσιμο.
Η λαμπρότητα του LangChain βρίσκεται στην ικανότητά του να αφαιρεί, κάτι που επιτρέπει στον χρήστη να επικεντρωθεί στο τρέχον ζήτημα και όχι στις ιδιαιτερότητες της μοντελοποίησης της γλώσσας.
Η LangChain κάνει τη διαδικασία δημιουργίας εξελιγμένων μοντέλων γλώσσας πιο φιλική προς τον χρήστη, προσφέροντας προεκπαιδευμένα μοντέλα και μια επιλογή προτύπων.
Σας δίνει την επιλογή να προσαρμόσετε τα μοντέλα γλώσσας χρησιμοποιώντας τα δικά τους δεδομένα, καθιστώντας εύκολη την προσαρμογή των μοντέλων γλώσσας. Αυτό επιτρέπει την ανάπτυξη πιο ακριβών μοντέλων για συγκεκριμένο τομέα που, για μια δεδομένη εργασία, ξεπερνούν τα εκπαιδευμένα μοντέλα.
Η SimpleSequentialChain
ενότητα και άλλα χαρακτηριστικά του LangChain το καθιστούν αποτελεσματικό εργαλείο για γρήγορη ανάπτυξη και ανάπτυξη εξελιγμένων συστημάτων NLP.
Αφήστε μια απάντηση