לדלג לתוכן

הרצאה: סוכני AI (AI Agents) ו־LangChain

הקדמה – למה בכלל סוכני AI?

רוב האנשים מכירים AI כמשהו כזה:

  • שולחים prompt

  • מקבלים תשובה

  • נגמר

אבל במערכות אמיתיות זה לא מספיק.

בפרויקט אמיתי אנחנו רוצים:

  • שה-AI יבצע רצף פעולות

  • שיחליט לבד מה הצעד הבא

  • שיידע לעבוד עם כלים (DB, API, קבצים)

  • שיתקן את עצמו אם נכשל

כאן נכנסים סוכני AI.


מה זה AI Agent?

הגדרה:

AI Agent הוא ישות שמקבלת:

  • מטרה (Goal)

  • הקשר (Context)

  • סט כלים (Tools)

והיא:

  • מתכננת צעדים

  • מבצעת אותם

  • בודקת תוצאות

  • ממשיכה עד השגת המטרה

כלומר:

לא תשובה אחת- אלא תהליך חשיבה ופעולה


השוואה: LLM רגיל מול Agent

LLM רגיל AI Agent
Prompt → תשובה Goal → פעולות
אין זיכרון זיכרון
לא יודע לבצע קוד יודע להפעיל כלים
חד־פעמי לולאתי
פסיבי אקטיבי

דוגמה אינטואיטיבית

LLM רגיל:

“תכתוב לי תיאור לטיול בפריז”

Agent:

“צור טיול בפריז כולל:

  • בדיקת מלונות

  • יצירת מסלול

  • שמירה ל־DB

  • שליחת סיכום למשתמש”

ה-Agent:

  • מחליט מה לעשות

  • שואל את עצמו שאלות

  • משתמש בכלים


אז מה זה LangChain?

הLangChain היא ספריית פייתון (וגם JS) שעוזרת לבנות:

  • סוכני AI
  • שרשראות פעולות
  • חיבור בין LLMs לכלים

אבני הבניין של LangChain

1. LLM

המודל עצמו (OpenAI, Anthropic וכו’)

llm = ChatOpenAI(model="gpt-4")

2. Prompt Template

תבנית קבועה לפרומפטים

from langchain.prompts import PromptTemplate

prompt = PromptTemplate(
    input_variables=["destination"],
    template="Create a travel plan for {destination}"
)

3. Chain

שרשרת של שלבים

from langchain.chains import LLMChain

chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run(destination="Tokyo")

Chain =
קלט → עיבוד → פלט


למה Chain זה לא מספיק?

Chain הוא:

  • לינארי

  • צפוי

  • בלי החלטות

אבל בפרויקטים אמיתיים:

  • לפעמים צריך API

  • לפעמים DB

  • לפעמים retry

  • לפעמים לבחור פעולה אחרת

לכן עוברים ל־Agents.


Tools – הנשק האמיתי של Agents

בעצם Tool = פונקציה שפייתון מספק ל־Agent.

לדוגמה:

  • חיפוש טיסות

  • כתיבה ל־DB

  • קריאה ל־API

  • שליחת מייל

from langchain.tools import tool

@tool
def get_hotels(city: str):
    return hotel_service.search(city)

ה-Agent:

  • בוחר מתי להשתמש ב־tool

  • עם אילו פרמטרים

  • לפי המטרה


AI Agent ב־LangChain

Agent = LLM + Tools + Strategy

from langchain.agents import initialize_agent

agent = initialize_agent(
    tools=[get_hotels, get_flights],
    llm=llm,
    agent="zero-shot-react-description"
)

agent.run("Build a 5-day trip to Rome")

ה-Agent:

  • חושב

  • מפעיל כלים

  • ממשיך לבד


מה זה ReAct?

ReAct = Reason + Act

הלולאה:

  1. Think – מה הצעד הבא?

  2. Act – להפעיל כלי

  3. Observe – לקרוא תוצאה

  4. Repeat

זה מה שהופך Agent ל"חושב".


זיכרון (Memory)

בלי זיכרון:

  • כל פעולה מנותקת

עם זיכרון:

  • ה-Agent זוכר מה כבר עשה

  • יודע לא לחזור על עצמו

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory()

Agents בפרויקט שלכם (TRIP)

דוגמה לסוכן "Trip Builder"

מטרה:

לבנות טיול מלא לפי בקשת משתמש

ה-Agent:

  1. מבין יעד

  2. בוחר טיסות

  3. בוחר מלונות

  4. יוצר itinerary

  5. שומר ל־DB

  6. מחזיר סיכום

כל שלב = Tool


שילוב עם FastAPI

FastAPI:

  • מקבל בקשה

  • מפעיל Agent

  • מחזיר תוצאה

@app.post("/build-trip")
def build_trip(request: TripRequest):
    return agent.run(request.prompt)

ה-Agent:

  • לא חלק מה־API

  • אלא מנוע לוגי חכם


Multi-Agent Systems (שלב מתקדם)

לא Agent אחד — אלא צוות.

לדוגמה:

  • Planner Agent

  • Research Agent

  • Writer Agent

  • Validator Agent

כל אחד:

  • תפקיד ברור

  • מתקשר דרך תוצאות


בעיות נפוצות וחשובות

חוסר דטרמיניזם

  • Agents לא תמיד צפויים

עלויות

  • הרבה קריאות ל־LLM

שליטה

  • צריך להגביל כלים

  • צריך Timeouts


Best Practices

  • כל Tool חייב להיות:

    • קטן

    • ברור

    • בטוח

  • Agent לא נוגע ישירות ב־DB

  • לעולם לא לתת Agent גישה חופשית