טיש פון קאָנטענץ[באַהאַלטן][ווייַזן]
LangChain איז אַ שטאַרק און שטאַרק געצייַג דעוועלאָפּעד צו כאַרניס די מאַכט פון גרויס שפּראַך מאָדעלס (LLMs).
די LLMs פאַרמאָגן מערקווירדיק קייפּאַבילאַטיז און קענען יפישאַנטלי מאַכנ אַ ברייט קייט פון טאַסקס. אָבער, עס איז וויכטיק צו טאָן אַז זייער שטאַרקייט ליגט אין זייער אַלגעמיין נאַטור אלא ווי אין-טיפקייַט פעלד עקספּערטיז. זיין פּאָפּולאַריטעט איז ראַפּאַדלי געוואקסן זינט די הקדמה פון GPT-4.
בשעת LLMs יקסעל אין האַנדלינג פאַרשידן טאַסקס, זיי קען האָבן לימיטיישאַנז ווען עס קומט צו צושטעלן ספּעציפיש ענטפֿערס אָדער טאַקלינג טאַסקס וואָס דאַרפן טיף פעלד וויסן. באַטראַכטן, פֿאַר בייַשפּיל, ניצן אַ LLM צו ענטפֿערן פֿראגן אָדער דורכפירן טאַסקס אין ספּעשאַלייזד פעלדער ווי מעדיצין אָדער געזעץ.
כאָטש די LLM קענען אַוואַדע ריספּאַנד צו אַלגעמיין ינקוועריז וועגן די פעלדער, עס קען זיין געראַנגל צו פאָרשלאָגן מער דיטיילד אָדער נואַנסט ענטפֿערס וואָס דאַרפן ספּעשאַלייזד וויסן אָדער עקספּערטיז.
דאָס איז ווייַל LLMs זענען טריינד אויף וואַסט אַמאַונץ פון טעקסט דאַטן פון דייווערס קוואלן, וואָס אַלאַוז זיי צו לערנען פּאַטערנז, פֿאַרשטיין קאָנטעקסט און דזשענערייט קאָוכיראַנט רעספּאָנסעס. אָבער, זייער טריינינג טוט נישט טיפּיקלי אַרייַנציען פעלד-ספּעציפיש אָדער ספּעשאַלייזד וויסן אַקוואַזישאַן אין דער זעלביקער מאָס ווי מענטשלעך עקספּערץ אין די פעלדער.
דעריבער, כאָטש LangChain, אין קאַנדזשאַנגקשאַן מיט LLMs, קענען זיין אַ ינוואַליאַבאַל געצייַג פֿאַר אַ ברייט קייט פון טאַסקס, עס איז וויכטיק צו דערקענען אַז טיף פעלד עקספּערטיז קען נאָך זיין נויטיק אין זיכער סיטואַטיאָנס. מענטשנרעכט עקספּערץ מיט ספּעשאַלייזד וויסן קענען צושטעלן די נייטיק טיפקייַט, נואַנסט פארשטאנד און קאָנטעקסט-ספּעציפיש ינסייץ וואָס קען זיין ווייַטער פון די קייפּאַבילאַטיז פון LLMs אַליין.
מיר וואָלט רעקאָמענדירן צו קוקן אין LangChain ס דאָקומענטן אָדער גיטהוב ריפּאַזאַטאָרי פֿאַר אַ מער גרונטיק פארשטאנד פון די טיפּיש נוצן קאַסעס. עס איז שטארק רעקאַמענדיד צו באַקומען אַ גרעסערע בילד פון דעם פּעקל.
וויאזוי ארבייט עס?
צו פֿאַרשטיין די ציל און אַרבעט פון LangChain, לאָזן אונדז באַטראַכטן אַ פּראַקטיש בייַשפּיל. מיר וויסן אַז GPT-4 האט ימפּרעסיוו גענעראַל וויסן און קענען צושטעלן פאַרלאָזלעך ענטפֿערס צו אַ ברייט קייט פון פֿראגן.
אָבער, וואָס אויב מיר וועלן ספּעציפיש אינפֿאָרמאַציע פֿון אונדזער אייגענע דאַטן, אַזאַ ווי אַ פערזענלעכע דאָקומענט, בוך, פּדף טעקע אָדער פּראַפּרייאַטערי דאַטאַבייס?
LangChain אַלאַוז אונדז צו פאַרבינדן אַ גרויס שפּראַך מאָדעל ווי GPT-4 צו אונדזער אייגענע דאַטן קוואלן. עס גייט ווייַטער פון פשוט פּאַסטינג אַ סניפּאַט פון טעקסט אין אַ שמועס צובינד. אַנשטאָט, מיר קענען דערמאָנען אַ גאַנץ דאַטאַבייס אָנגעפילט מיט אונדזער אייגענע דאַטן.
אַמאָל מיר באַקומען די געבעטן אינפֿאָרמאַציע, LangChain קענען אַרוישעלפן אונדז צו נעמען ספּעציפיש אַקשאַנז. פֿאַר בייַשפּיל, מיר קענען אָנווייַזן עס צו שיקן אַן E- בריוו מיט זיכער דעטאַילס.
צו דערגרייכן דעם, מיר נאָכגיין אַ רערנ - ליניע צוגאַנג ניצן LangChain. ערשטער, מיר נעמען דעם דאָקומענט וואָס מיר ווילן שפּראַך מאָדעל צו דערמאָנען און טיילן עס אין קלענערער שטיקער. די טשאַנגקס זענען דעמאָלט סטאָרד ווי עמבעדדינגס, וואָס זענען וועקטאָר רעפּראַזאַנטיישאַנז פון דעם טעקסט, אין אַ וועקטאָר דאַטאַבאַסע.
מיט דעם סעטאַפּ, מיר קענען בויען שפּראַך מאָדעל אַפּלאַקיישאַנז וואָס נאָכגיין אַ נאָרמאַל רערנ - ליניע: אַ באַניצער פרעגט אַן ערשט קשיא, וואָס איז געשיקט צו די שפּראַך מאָדעל. די וועקטאָר פאַרטרעטונג פון די קשיא איז גענוצט צו דורכפירן אַן ענלעכקייט זוכן אין די וועקטאָר דאַטאַבאַסע, ריטריווינג די באַטייַטיק טשאַנגקס פון אינפֿאָרמאַציע.
די טשאַנגקס זענען דעמאָלט פיטער צוריק צו די שפּראַך מאָדעל, וואָס אַלאַוז עס צו צושטעלן אַן ענטפער אָדער נעמען די געבעטן קאַמף.
LangChain פאַסילאַטייץ די אַנטוויקלונג פון אַפּלאַקיישאַנז וואָס זענען אַווער פון דאַטן, ווייַל מיר קענען דערמאָנען אונדזער אייגענע דאַטן אין אַ וועקטאָר קראָם און עכט, ווייַל זיי קענען נעמען אַקשאַנז ווייַטער פון ענטפֿערן פֿראגן. טי
עס עפֿנט זיך אַ פּלאַץ פון פּראַקטיש נוצן קאַסעס, ספּעציעל אין פערזענלעכע הילף, ווו אַ גרויס שפּראַך מאָדעל קענען שעפּן טאַסקס ווי בוקינג פלייץ, טראַנספערינג געלט אָדער אַרוישעלפן מיט שטייער-פֿאַרבונדענע ענינים.
אַדדיטיאָנאַללי, די ימפּלאַקיישאַנז פֿאַר לערנען און לערנען נייַ סאַבדזשעקץ זענען באַטייטיק, ווייַל אַ שפּראַך מאָדעל קענען דערמאָנען אַ גאַנץ סילאַבאַס און פאַרגיכערן דעם לערנען פּראָצעס. קאָודינג, דאַטן אַנאַליסיס און דאַטן וויסנשאַפֿט זענען אויך געריכט צו זיין זייער ינפלואַנסט דורך די אַדוואַנטידזשיז.
איינער פון די מערסט יקסייטינג פּראַספּעקס איז קאַנעקטינג גרויס שפּראַך מאָדעלס צו יגזיסטינג פירמע דאַטן, אַזאַ ווי קונה אינפֿאָרמאַציע אָדער פֿאַרקויף דאַטן. די ינאַגריישאַן מיט אַוואַנסירטע אַפּיס ווי Meta's API אָדער Google's API הבטחות עקספּאָונענשאַל פּראָגרעס אין דאַטן אַנאַליטיקס און דאַטן וויסנשאַפֿט.
ווי צו בויען אַ וועבזייטל (דעמאָ)
דערווייַל, Langchain איז בנימצא ווי פּיטהאָן און דזשאַוואַסקריפּט פּאַקידזשיז.
מיר קענען מאַכן אַ דעמאַנסטריישאַן וועב אַפּ ניצן Streamlit, LangChain און די OpenAI GPT-3 מאָדעל צו ינסטרומענט די LangChain באַגריף.
אָבער ערשטער, מיר מוזן ינסטאַלירן עטלעכע דיפּענדאַנסיז, אַרייַנגערעכנט Streamlit, LangChain און OpenAI.
Pre-requisites
סטרעאַמליט: א פאָלקס פּיטהאָן פּעקל פֿאַר קריייטינג דאַטן וויסנשאַפֿט-פֿאַרבונדענע וועב אַפּלאַקיישאַנז
OpenAI: אַקסעס צו OpenAI ס GPT-3 שפּראַך מאָדעל איז דארף.
צו ינסטאַלירן די דיפּענדאַנסיז, נוצן די פאלגענדע קאַמאַנדז אין 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
Basic Setup
די סטראַקטשעראַל יקער פון אונדזער פּרויעקט איז געווען שטעלן זיך מיט Streamlit סינטאַקס. מיר האָבן געגעבן די אַפּ דעם טיטל "וואָס איז אמת: ניצן פּשוט סאַקווענטשאַל קייט" און ינקלודעד אַ מאַרקדאַון לינק צו די 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
ווי ינפּוץ צו שאַפֿן אַ ענטפער צו דער באַניצער 'ס קשיא ניצן די דאַטן געשאפן דורך די פריער קייטן. דער מוסטער פֿאַר דעם קייט ריקוועס אַז דער באַניצער ריספּאַנדז צו דער ערשטער אָנפֿרעג ניצן די Facts וואָס זענען באשאפן. - אין סדר צו צושטעלן די לעצט ענטפער צו דער באַניצער ס אָנפרעג באזירט אויף די אינפֿאָרמאַציע געשאפן דורך די פריער קייטן, מיר ויסשטימען די קייטן אין די קוילעלדיק קייט. נאָך די קייטן זענען געענדיקט, מיר נוצן
st.success()
צו ווייַזן דעם באַניצער די לייזונג.
סאָף
מיר קענען פשוט קייט צוזאַמען פאַרשידענע שפּראַך מאָדעל אַקשאַנז צו שאַפֿן מער קאָמפּליצירט פּייפּליינז דורך ניצן די SimpleSequentialChain
מאָדולע פון LangChain. פֿאַר אַ ברייט פאַרשיידנקייַט פון NLP אַפּלאַקיישאַנז, אַרייַנגערעכנט טשאַטבאָץ, קשיא-און-ענטפֿער סיסטעמען און שפּראַך איבערזעצונג מכשירים, דאָס קען זיין גאַנץ נוציק.
די העלקייַט פון LangChain איז געפֿונען אין זיין אַבסטראַקט קאַפּאַציטעט, וואָס ינייבאַלז דער באַניצער צו קאַנסאַנטרייט אויף דעם קראַנט אַרויסגעבן אלא ווי די ספּעסיפיקס פון שפּראַך מאָדעלינג.
LangChain מאכט דעם פּראָצעס פון קריייטינג סאַפיסטאַקייטיד שפּראַך מאָדעלס מער באַניצער-פרייַנדלעך דורך פאָרשלאָגן פאַר-טריינד מאָדעלס און אַ סעלעקציע פון טעמפּלאַטעס.
עס גיט איר די אָפּציע צו פיין-טון די שפּראַך מאָדעלס מיט זייער אייגענע דאַטן, אַזוי עס איז פּשוט צו קאַסטאַמייז די שפּראַך מאָדעלס. דאָס ינייבאַלז די אַנטוויקלונג פון מער גענוי, פעלד-ספּעציפיש מאָדעלס וואָס, פֿאַר אַ געגעבן אַרבעט, אַוטפּערפאָרם די טריינד מאָדעלס.
די SimpleSequentialChain
מאָדולע און אנדערע פֿעיִקייטן פון LangChain מאַכן עס אַן עפעקטיוו געצייַג פֿאַר געשווינד דעוועלאָפּינג און דיפּלויינג סאַפיסטאַקייטיד נלפּ סיסטעמען.
לאָזן אַ ענטפֿערן