סוכנים מונעים על ידי Gemini Pro: פתיחת זרמי עבודה סוכניים עם LangTrace
גלה כיצד Gemini Pro ו-LangTrace משחררים זרימות עבודה אגנטיות עבור יכולות LLM מתקדמות. חקור תכנון, שימוש בכלים חיצוניים וניתוב למערכות AI מוכנות לייצור.
15 בינואר 2025
שחרר את כוחו של סוכני הנעל בהנעה AI עם דגם ניסיוני Gemini Pro. גלה כיצד מודל שפה חדשני זה יכול לשלב בקלות כלים וממשקי תכנות חיצוניים כדי להתמודד עם משימות מורכבות, ולספק תגובות מקיפות ומותאמות אישית. חקור את היתרונות של גישה מבוססת סוכן זו ושחרר אפשרויות חדשות עבור התוכן והזרימות העבודה שלך.
מהו סוכן וכיצד הוא פועל?
מהו סוכן וכיצד הוא פועל?
סוכן הוא למעשה מודל שפה גדול (LLM) עם יכולות נוספות, כולל:
-
תכנון: הסוכן יכול לפרק את שאילתת המשתמש ולהגיע לתכנית מקיפה כדי להתמודד איתה.
-
כלים/ממשקי API חיצוניים: לסוכן יש גישה לכלים או ממשקי API חיצוניים שהוא יכול להשתמש בהם כדי לבצע את התכנית שלו.
-
זיכרון: הסוכן עוקב אחר המיקום שלו בביצוע התכנית ואת הצעדים הנוספים שעליו לנקוט.
בדוגמה שסופקה, הסוכן משתמש במודל הניסיוני Gemini 1.5 Pro כ-LLM, והוא גם מקבל גישה לשני כלים:
-
RAG (Retrieval-Augmented Generation): זה משמש כבסיס הידע של הסוכן, תוך שימוש במאמר "Attention is All You Need".
-
חיפוש באינטרנט: הסוכן יכול לחפש מידע באינטרנט כדי להשלים את הידע שלו.
הסוכן משתמש ב-LangTrace כדי לעקוב אחר כל הצעדים שהוא נוקט בביצוע התכנית. נראות זו חיונית להבנת תהליך קבלת ההחלטות של הסוכן, במיוחד בסביבת ייצור.
הגדרת הסביבה
הגדרת הסביבה
כדי להתחיל, עלינו להתקין את החבילות הנדרשות ולהגדיר את מפתחות ה-API הדרושים. להלן הדרך שבה נעשה זאת:
-
התקנת חבילות: נתקין את חבילת Google Generative AI, LangChain, Tavly Python (מנוע החיפוש שלנו), FAISS (אחסון וקטורי) וערכת SDK של LangTrace Python.
-
ייבוא חבילות: נייבא את מפצל הטקסט בעל התווים המשוכפל, מטען ה-PDF, תוצאות חיפוש Tavly והדגם המטמיע של Google Generative AI.
-
הגדרת מפתחות ה-API:
- מפתח ה-API של Tavly: ניתן לקבל את מפתח ה-API של Tavly על ידי לחיצה על הקישור "קבל מפתח API" שסופק בתיאור הווידאו.
- מפתח ה-API של Google: ניתן לקבל את מפתח ה-API של Google מסטודיו ה-AI של Google.
- מפתח ה-API של LangTrace: יהיה עליך ליצור חשבון ב-LangTrace, פלטפורמת נראות קוד פתוח עבור יישומי LLM. לאחר מכן, ניתן ללחוץ על "צור מפתח API" כדי לקבל את מפתח ה-API שלך.
-
הגדרת משתני סביבה: נגדיר את מפתח ה-API של Tavly ואת מפתח ה-API של LangTrace כמשתני סביבה.
-
טיפול בשגיאות: אם תראה שגיאות הקשורות לשילובי LangSmith, אל תדאג להן. אנו מתעניינים רק ב-LangChain ובשילוב Gemini Pro בשלב זה.
עכשיו שהסביבה מוגדרת, נוכל לעבור לשלבים הבאים של בניית הסוכן ושילוב הכלים הנדרשים.
יצירת תהליך RAG
יצירת תהליך RAG
כדי להגדיר תשתית RAG בסיסית, עלינו תחילה לטעון את מסמך ה-PDF שישמש כבסיס הידע שלנו. במקרה זה, יש לנו את קובץ "transformers.pdf", המכיל 12 עמודים של תוכן.
לאחר מכן, אנו משתמשים ב-RecursiveCharacterTextSplitter
מהמודול langchain.text_splitter
כדי לחלק את המסמך לחלקים קטנים יותר, כל אחד עם עד 500 אסימונים וחפיפה של 100 אסימונים. זה מאפשר לנו ליצור סך הכל 24 חלקים שונים שניתן להשתמש בהם לאחזור.
אנו אז טוענים את מודל ההטמעה של Google Generative AI, שישמש לחישוב הטמעות עבור כל אחד מחלקי המסמך. ההטמעות יש להן מימד של 768.
כדי לאחסן את ההטמעות, אנו משתמשים באחסון הווקטורי FAISS. זה מאפשר לנו לבצע בצורה יעילה חיפושי דמיון על חלקי המסמך כאשר מסופקת שאילתה.
לבסוף, אנו יוצרים כלי RetrievalQA
שהסוכן יוכל להשתמש בו כדי לאחזר מידע רלוונטי מבסיס הידע. הכלי מוגדר עם ה-FAISS retriever ותיאור המצביע על כך שהוא שימושי לאחזור מידע הקשור למאמר "Attention is All You Need".
עם הגדרה זו, הסוכן יוכל להשתמש בתשתית ה-RAG כדי למצוא ולאחזר מידע רלוונטי בעת מתן תשובות לשאלות על טרנספורמרים ונושאים קשורים.
הגדרת הכלים
הגדרת הכלים
כדי להגדיר את הכלים עבור הסוכן שלנו, עלינו תחילה להתקין את החבילות הנדרשות:
1# התקנת חבילות נדרשות 2!pip install google-generative-ai langchain tavlpy faiss-cpu langtracing
לאחר מכן, אנו מייבאים את המודולים הנדרשים ומגדירים את מפתחות ה-API עבור השירותים השונים שנשתמש בהם:
1import os 2from langchain.document_loaders import PyPDFLoader 3from langchain.text_splitter import RecursiveCharacterTextSplitter 4from langchain.embeddings.openai import OpenAIEmbeddings 5from langchain.vectorstores import FAISS 6from langtracing.sdk.python import LangTracer 7 8# הגדרת מפתח ה-API של Tavly 9TAVLY_API_KEY = os.environ.get("TAVLY_API_KEY") 10 11# הגדרת מפתח ה-API של LangTrace 12LANGTRACING_API_KEY = os.environ.get("LANGTRACING_API_KEY")
אנו אז מגדירים את תשתית ה-RAG (Retrieval Augmented Generation) על ידי טעינת מסמך ה-PDF, חלוקתו לחלקים וביצוע ההטמעות ואחסון הווקטורים:
1# טעינת מסמך ה-PDF 2loader = PyPDFLoader("transformers.pdf") 3documents = loader.load() 4 5# חלוקת המסמך לחלקים 6text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100, length_function=len) 7chunks = text_splitter.split_documents(documents) 8 9# יצירת הטמעות ואחסון ווקטורי 10embeddings = OpenAIEmbeddings() 11vector_store = FAISS.from_documents(chunks, embeddings)
לבסוף, אנו יוצרים את שני הכלים שהסוכן יהיה מסוגל להשתמש בהם: הכלי לאחזור והכלי לחיפוש:
1from langchain.agents import Tool 2 3# יצירת הכלי לאחזור 4retriever_tool = Tool( 5 name="retriever_tool", 6 description="עבור כל מידע הקשור לארכיטקטורת טרנספורמרים, השתמש בכלי זה. שימושי לאחזור מידע הקשור למאמר Attention is all you need.", 7 func=lambda query: vector_store.similarity_search(query, k=3) 8) 9 10# יצירת הכלי לחיפוש 11search_tool = Tool( 12 name="search_tool", 13 description="מנוע חיפוש מותאם אישית לתוצאות מקיפות, מדויקות ומהימנות. שימושי כאשר יש צורך לענות על שאלות על אירועים שוטפים. הקלט צריך להיות שאילתת חיפוש.", 14 func=lambda query: Tavly(TAVLY_API_KEY).search(query) 15)
לאחר הגדרת הכלים, אנו כעת מוכנים ליצור את הסוכן ולהתחיל להשתמש בו כדי לענות על שאלות.
יצירת הסוכן
יצירת הסוכן
כדי ליצור את הסוכן, נשתמש בכיתת הסוכן ReAct מ-LangChain. זהו סוג מיוחד של סוכן שיכול לתכנן, יש לו זיכרון וגישה לכלים שאנו רוצים שהוא ישתמש בהם.
תחילה, עלינו לספק הנחיה או הוראה מפורטת לסוכן לשליטה בכלים ולהגעה לתכנית. LangChain מספק תבנית לכך באמצעות LangChain Hub, שדומה ל-Llama Index Hub.
נשתמש בתבנית ReAct ונשנה אותה לפי הצורך. ההנחיה כוללת את הפריטים הבאים:
- ענה על השאלות הבאות בהקדם האפשרי.
- יש לך גישה לכלים הבאים:
- כלי אחזור: עבור כל מידע הקשור למאמר "Attention is All You Need".
- כלי חיפוש: מנוע חיפוש מותאם אישית לתוצאות מקיפות, מדויקות ומהימנות. שימושי לענות על שאלות על אירועים שוטפים.
- השתמש בפורמט הבא:
- השאלה שעליך לענות עליה.
- תהליך המחשבה שלך.
- הפעולה לביצוע (כלומר, איזה כלי להשתמש בו).
- תוצאת הכלי.
- התשובה הסופית.
עם הנחיה זו, נוכל ליצור את הסוכן ReAct:
1agent = ReActAgent( 2 name="Gemini 1.5 Pro", 3 tools=tools, 4 system_message=system_prompt 5)
כאן, tools
היא רשימת הכלים שהגדרנו קודם, ו-system_prompt
היא ההנחיה שיצרנו על בסיס תבנית ה-ReAct.
עכשיו, נוכל להשתמש ב-AgentExecutor
כדי להפעיל את הסוכן ולספק לו שאילתות:
1executor = AgentExecutor( 2 agent=agent, 3 tools=tools, 4 verbose=True 5) 6 7result = executor.run("מה מזג האוויר הנוכחי בלוס אנג'לס?") 8print(result)
הסוכן יעבור דרך תהליך המחשבה שלו, ישתמש בכלים המתאימים ויספק את התשובה הסופית. באמצעות ספריית LangTrace, ניתן גם לבדוק את העקבות כדי להבין את תהליך קבלת ההחלטות של הסוכן.
אינטראקציה עם הסוכן
אינטראקציה עם הסוכן
הסוכן שהגדרנו הוא סוכן תגובתי, מה שאומר שהוא יכול לתכנן, לבצע פעולות ולעדכן את המצב הפנימי שלו בהתבסס על תוצאות אותן פעולות. בואו נראה כיצד נוכל להתקשר עם סוכן זה.
ראשית, נשאל את הסוכן שאלה פשוטה על מזג האוויר הנוכחי בלוס אנג'לס:
1undefined
שאלות נפוצות
שאלות נפוצות