כיצד לשכפל את מערכת MRKL באמצעות סוכנים ב-LangChain?

Kyzd Lskpl T M Rkt Mrkl B Mz Wt Swknym B Langchain



מערכת הנמקה, הידע והשפה המודולרית (MRKL) היא ארכיטקטורה שיכולה לחלץ תשובות עם הסיבות לאימות שלה. הוא משלב מודלים של שפה, חשיבה דיסקרטית ומקורות ידע חיצוניים. מודלים של שפה מייצרים את הטקסט בשפות אנושיות בהתאם לשאילתות ששאל המשתמש. מרקל (מבטא: נס) מוסיף הנמקה תוך הפקת התשובות כדי שהתשובה תהיה מדויקת ותקפה.

מתאר מהיר

פוסט זה ידגים את הדברים הבאים:







כיצד לשכפל את מערכת MRKL באמצעות סוכנים ב-LangChain



סיכום



כיצד לשכפל את מערכת MRKL באמצעות סוכנים ב-LangChain?

LangChain מאפשרת למשתמש לבנות סוכנים שניתן להשתמש בהם לביצוע משימות מרובות עבור דגמי השפה או הצ'אטבוטים. סוכנים מאחסנים את עבודתם עם כל השלבים בזיכרון המצורפים למודל השפה. באמצעות תבניות אלה, הסוכן יכול לשכפל את העבודה של כל מערכת כמו MRKL כדי לקבל את התוצאות האופטימליות מבלי צורך לבנות אותן שוב.





כדי ללמוד את תהליך השכפול של מערכת MRKL באמצעות סוכנים ב-LangChain, פשוט עברו על השלבים המפורטים:

שלב 1: התקנת מסגרות

קודם כל, התקן את המודולים הניסיוניים של LangChain באמצעות ה-pip עם הפקודה langchain-experimental:



pip התקנת langchain-ניסיוני

התקן את מודול OpenAI כדי לבנות את מודל השפה עבור מערכת MRKL:

pip להתקין openai

שלב 2: הגדרת סביבת OpenAI

ייבא את ספריות מערכת ההפעלה ו-getpass כדי לגשת להפעלה כדי להנחות את המשתמש לספק את מפתחות ה-API עבור חשבונות OpenAI ו-SerpAPi:

יְבוּא אתה

יְבוּא getpass

אתה . בְּעֵרֶך [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'מפתח API של OpenAI:' )

אתה . בְּעֵרֶך [ 'SERPAPI_API_KEY' ] = getpass . getpass ( 'מפתח API של Serpapi:' )

שלב 3: ייבוא ​​ספריות

השתמש בתלות מה-LangChain כדי לייבא את הספריות הנדרשות לבניית מודל השפה, הכלים והסוכנים:

מ langchain. שרשראות יְבוּא LLMMathChain

מ langchain. llms יְבוּא OpenAI

מ langchain. שירותים יְבוּא SerpAPIWrapper

מ langchain. שירותים יְבוּא SQLDatabase

מ langchain_experimental. sql יְבוּא SQLDatabaseChain

מ langchain. סוכנים יְבוּא initialize_agent , כְּלִי

מ langchain. סוכנים יְבוּא AgentType

שלב 4: בניית מסד נתונים

MRKL משתמשת במקורות ידע חיצוניים כדי לחלץ מידע מהנתונים. פוסט זה משתמש ב- SQLite שניתן להוריד באמצעות זה להנחות לבנות את מסד הנתונים. הפקודה הבאה מאשרת את תהליך הורדת ה-SQLite על ידי הצגת הגרסה המותקנת שלו:

sqlite3

השתמש בראש הפקודות הבאות בתוך ספרייה כדי ליצור את מסד הנתונים באמצעות שורת הפקודה:

CD שולחן עבודה

CD mydb

sqlite3 Chinook. db

הורד את מאגר מידע קובץ ואחסן אותו בספרייה כדי להשתמש בפקודה הבאה ליצירת ' .db 'קובץ:

. לקרוא Chinook_Sqlite. sql

בחר * מתוך מגבלת האמן 10 ;

שלב 5: העלאת מסד נתונים

לאחר יצירת מסד הנתונים בהצלחה, העלה את הקובץ בשיתוף הפעולה של Google:

מ גוגל. ET AL יְבוּא קבצים

הועלה = קבצים. להעלות ( )

המשתמש יכול לגשת לקובץ שהועלה במחשב המחברת כדי להעתיק את הנתיב שלו מהתפריט הנפתח שלו:

שלב 6: הגדרת כלים

לאחר בניית מסד הנתונים, הגדר את מודל השפה, הכלים והשרשרות עבור הסוכנים:

לחפש = SerpAPIWrapper ( )
llm = OpenAI ( טֶמפֶּרָטוּרָה = 0 )
llm_math_chain = LLMMathChain ( llm = llm , מִלוּלִי = נָכוֹן )
db = SQLDatabase. from_uri ( 'sqlite:///../../../../../content/Chinook.db' )
db_chain = SQLDatabaseChain. from_llm ( llm , db , מִלוּלִי = נָכוֹן )
כלים = [
כְּלִי (
שֵׁם = 'לחפש' ,
func = לחפש. לָרוּץ ,
תיאור = 'שאל את ההנחיות הממוקדות כדי לקבל תשובות לגבי העניינים האחרונים'
) ,
כְּלִי (
שֵׁם = 'מַחשְׁבוֹן' ,
func = llm_math_chain. לָרוּץ ,
תיאור = 'שימושי למענה/פתרון בעיות מתמטיות'
) ,
כְּלִי (
שֵׁם = 'FoBar DB' ,
func = db_chain. לָרוּץ ,
תיאור = 'שימושי למענה על שאילתות ממסד נתונים ושאלה קלט חייבת להיות בעלת ההקשר המלא'
)
]
  • תגדיר את llm משתנה באמצעות ה OpenAI() שיטה לקבל את מודל השפה.
  • ה לחפש הוא הכלי שקורא ל- SerpAPIWrapper() שיטה לגשת לסביבה שלו.
  • ה LLMMathChain() השיטה משמשת כדי לקבל את התשובות הקשורות לבעיות מתמטיות.
  • תגדיר את db משתנה עם הנתיב של הקובץ בתוך SQLDatabase() שיטה.
  • ה SQLDatabaseChain() ניתן להשתמש בשיטה כדי לקבל את המידע ממסד הנתונים.
  • הגדירו כלים כמו לחפש , מַחשְׁבוֹן , ו FooBar DB לבניית הסוכן כדי לחלץ נתונים ממקורות שונים:

שלב 7: בנייה ובדיקה של הסוכן

אתחול מערכת MRKL באמצעות הכלים, lm, ו-agent כדי לקבל את התשובות לשאלות שנשאל על ידי המשתמש:

מרקל = initialize_agent ( כלים , llm , סוֹכֵן = AgentType. ZERO_SHOT_REACT_DESCRIPTION , מִלוּלִי = נָכוֹן )

הפעל את מערכת MRKL באמצעות שיטת run() עם השאלה כארגומנט שלה:

מרקל. לָרוּץ ( 'מהו גילם הנוכחי של ליאו דיקפריו וחברתו מספרים גם על הבדל הגילים שלהם' )

תְפוּקָה

הסוכן הפיק את התשובה הסופית עם הנתיב המלא המשמש את המערכת כדי לחלץ את התשובה הסופית:

שלב 8: שכפל את מערכת MRKL

עכשיו, פשוט השתמש ב- מרקל מילת מפתח עם שיטת run() כדי לקבל תשובות ממקורות שונים כמו מסדי נתונים:

מרקל. לָרוּץ ( 'מה שמו המלא של האמן שהאלבום שלו בשם 'הסערה לפני השקט' יצא לאחרונה והאם הם במאגר של FooBar גם איזה מהאלבומים שלהם נמצאים במאגר' )

הסוכן הפך את השאלה באופן אוטומטי לשאילתת SQL כדי להביא את התשובה ממסד הנתונים. הסוכן מחפש את המקור הנכון כדי לקבל את התשובה ולאחר מכן מרכיב את השאילתה כדי לחלץ את המידע:

שלב 9: שימוש ב-ChatModel

המשתמש יכול פשוט לשנות את מודל השפה על ידי שימוש בשיטת ChatOpenAI() כדי להפוך אותו ל-ChatModel ולהשתמש איתו במערכת MRKL:

מ langchain. chat_models יְבוּא ChatOpenAI

לחפש = SerpAPIWrapper ( )
llm = ChatOpenAI ( טֶמפֶּרָטוּרָה = 0 )
llm1 = OpenAI ( טֶמפֶּרָטוּרָה = 0 )
llm_math_chain = LLMMathChain ( llm = llm1 , מִלוּלִי = נָכוֹן )
db = SQLDatabase. from_uri ( 'sqlite:///../../../../../content/Chinook.db' )
db_chain = SQLDatabaseChain. from_llm ( llm1 , db , מִלוּלִי = נָכוֹן )
כלים = [
כְּלִי (
שֵׁם = 'לחפש' ,
func = לחפש. לָרוּץ ,
תיאור = 'שאל את ההנחיות הממוקדות כדי לקבל תשובות לגבי העניינים האחרונים'
) ,
כְּלִי (
שֵׁם = 'מַחשְׁבוֹן' ,
func = llm_math_chain. לָרוּץ ,
תיאור = 'שימושי למענה/פתרון בעיות מתמטיות'
) ,
כְּלִי (
שֵׁם = 'FoBar DB' ,
func = db_chain. לָרוּץ ,
תיאור = 'שימושי למענה על שאילתות ממסד נתונים ושאלה קלט חייבת להיות בעלת ההקשר המלא'
)
]

שלב 10: בדוק את סוכן MRKL

לאחר מכן, בנה את הסוכן ואתחל אותו במשתנה mrkl בשיטת initialize_agent() . הוסף את הפרמטר של השיטה כדי לשלב את הרכיבים כמו כלים, llm, agent ו-verbose כדי לקבל את התהליך המלא בפלט:

מרקל = initialize_agent ( כלים , llm , סוֹכֵן = AgentType. CHAT_ZERO_SHOT_REACT_DESCRIPTION , מִלוּלִי = נָכוֹן )

בצע את השאלה על ידי הפעלת מערכת mrkl כפי שמוצג בצילום המסך הבא:

מרקל. לָרוּץ ( 'מי החברה של ליאו דיקפריו? מה הגיל הנוכחי שלהם' )

תְפוּקָה

הקטע הבא מציג את התשובה הסופית שחולצה על ידי הסוכן:

שלב 11: שכפל את מערכת MRKL

השתמש במערכת MRKL על ידי קריאה לשיטת run() עם השאלה בשפה הטבעית כדי לחלץ מידע ממסד הנתונים:

מרקל. לָרוּץ ( 'מה שמו המלא של האמן שהאלבום שלו בשם 'הסערה לפני השקט' יצא לאחרונה והאם הם במאגר של FooBar גם איזה מהאלבומים שלהם נמצאים במאגר' )

תְפוּקָה

הסוכן הציג את התשובה הסופית שחולצה ממסד הנתונים כפי שמוצגת בצילום המסך הבא:

זה הכל לגבי תהליך השכפול של מערכת MRKL באמצעות סוכנים ב-LangChain:

סיכום

כדי לשכפל את מערכת MRKL באמצעות סוכנים ב-LangChain, התקן את המודולים כדי לקבל את התלות לייבוא ​​הספריות. הספריות נדרשות לבנות את מודל השפה או מודל הצ'אט כדי לקבל את התשובות ממספר מקורות באמצעות הכלים. הסוכנים מוגדרים להשתמש בכלים לחילוץ פלטים ממקורות שונים כמו אינטרנט, מסדי נתונים וכו'. מדריך זה הרחיב את תהליך השכפול של מערכת MRKL באמצעות סוכנים ב-LangChain.