מה זה AI Agent?
Agent הוא מערכת AI שיכולה לתכנן, לפעול ולהסתגל בצורה אוטונומית. בניגוד ל-Chatbot פשוט שרק עונה על שאלות, Agent:
psychology
מחשב ומתכנן
מפרק משימות מורכבות לצעדים קטנים ומחליט על הסדר הנכון
build
משתמש בכלים
גישה לאינטרנט, APIs, קוד, קבצים ומסדי נתונים
loop
רץ בלולאה
בודק תוצאות ביניים ומתאים את הצעדים הבאים בהתאם
memory
זוכר הקשר
שומר מידע בין sessions ולומד מניסיון עבר
ReAct Pattern — הלב של כל Agent
המודל הנפוץ ביותר לסוכנים הוא ReAct (Reason + Act) שרץ בלולאה עד למצב סופי:
Thought: מה עלי לעשות כדי לפתור את הבעיה?
↓
Action: קריאה לכלי מסוים עם פרמטרים
↓
Observation: תוצאת הכלי / תגובת הסביבה
↓
האם הגעתי לתשובה? → אם לא: חזור לשלב 1
סוגי Agents
Tool-Use Agent
סוכן כלים
הסוג הנפוץ ביותר. LLM מחליט מתי לקרוא לאיזה כלי. מתאים ל-90% מהשימושים: חיפוש, עיבוד נתונים, שליחת הודעות.
⚡ השתמש כאן: LangChain AgentExecutor, OpenAI Function Calling
Plan-and-Execute
סוכן תכנון
קודם מתכנן את כל הצעדים, אחר כך מבצע. יעיל יותר למשימות ארוכות ומורכבות. פחות גמיש לשינויים בזמן הריצה.
⚡ השתמש כאן: LangChain Plan-and-Execute, AutoGPT
Multi-Agent
מערכת סוכנים
מספר Agents מתמחים עובדים ביחד. Agent מתאם מחלק עבודה לסוכנים ייעודיים. הכי עוצמתי — גם הכי מורכב.
⚡ השתמש כאן: LangGraph, AutoGen, CrewAI
בניית Agent ראשון עם LangGraph
LangGraph הוא ה-Framework המומלץ לבניית Agents מורכבים ב-2025. הוא מאפשר שליטה מלאה בזרימה:
pip install langgraph langchain-openai
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from typing import TypedDict, Annotated
import operator
# הגדרת State
class AgentState(TypedDict):
messages: Annotated[list, operator.add]
task: str
result: str
# הגדרת כלים
@tool
def search_web(query: str) -> str:
"""חפש מידע באינטרנט"""
# כאן היית מחבר DuckDuckGo או SerpAPI
return f"תוצאות חיפוש עבור: {query}"
@tool
def write_file(filename: str, content: str) -> str:
"""כתוב תוכן לקובץ"""
with open(filename, 'w', encoding='utf-8') as f:
f.write(content)
return f"נכתב ל-{filename}"
llm = ChatOpenAI(model="gpt-4o", temperature=0)
tools = [search_web, write_file]
llm_with_tools = llm.bind_tools(tools)
# Node: הסוכן מחליט מה לעשות
def agent_node(state: AgentState):
response = llm_with_tools.invoke(state["messages"])
return {"messages": [response]}
# Node: ביצוע הכלי שנבחר
def tool_node(state: AgentState):
last_message = state["messages"][-1]
results = []
for tool_call in last_message.tool_calls:
tool_fn = {"search_web": search_web, "write_file": write_file}
result = tool_fn[tool_call["name"]].invoke(tool_call["args"])
results.append({"role": "tool", "content": result})
return {"messages": results}
# תנאי: המשך או סיים?
def should_continue(state):
last = state["messages"][-1]
if hasattr(last, 'tool_calls') and last.tool_calls:
return "tools"
return END
# בניית ה-Graph
graph = StateGraph(AgentState)
graph.add_node("agent", agent_node)
graph.add_node("tools", tool_node)
graph.set_entry_point("agent")
graph.add_conditional_edges("agent", should_continue)
graph.add_edge("tools", "agent")
app = graph.compile()
# הרצה
result = app.invoke({
"messages": [{"role": "user", "content": "חפש מידע על טרנדים ב-AI 2025 וכתוב סיכום לקובץ summary.txt"}],
"task": "research",
"result": ""
})
זיכרון ארוך טווח לסוכנים
Agent שרץ לאורך זמן זקוק לזיכרון מחוץ ל-Context Window. הפתרון: שמירה ב-Vector Store:
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
from datetime import datetime
class AgentMemory:
def __init__(self):
self.embeddings = OpenAIEmbeddings()
self.store = Chroma(
collection_name="agent_memory",
embedding_function=self.embeddings
)
def save(self, content: str, metadata: dict = {}):
"""שמור זיכרון חדש"""
metadata["timestamp"] = datetime.now().isoformat()
self.store.add_texts([content], metadatas=[metadata])
def recall(self, query: str, k: int = 5) -> list:
"""שלוף זיכרונות רלוונטיים"""
docs = self.store.similarity_search(query, k=k)
return [d.page_content for d in docs]
# שימוש
memory = AgentMemory()
memory.save("הלקוח יעל מעדיפה תקשורת קצרה וישירה")
memory.save("פרויקט X נעצר בגלל בעיות תקציב בנובמבר 2024")
# לפני כל שיחה: שלוף הקשר רלוונטי
context = memory.recall("יעל - עדכון סטטוס")
# ["הלקוח יעל מעדיפה תקשורת קצרה..."
מערכת Multi-Agent עם CrewAI
CrewAI מפשטת יצירת צוותי Agents שעובדים ביחד:
pip install crewai
from crewai import Agent, Task, Crew, Process
# הגדרת Agents מתמחים
researcher = Agent(
role="חוקר שוק",
goal="אסוף מידע מקיף על נושא נתון",
backstory="אנליסט שוק עם 10 שנות ניסיון בTech",
tools=[search_tool],
verbose=True
)
writer = Agent(
role="כותב תוכן",
goal="כתוב דוחות מקצועיים וקריאים",
backstory="עיתונאי טכנולוגי עם הבנה עמוקה ב-AI",
verbose=True
)
# הגדרת משימות
research_task = Task(
description="חקור את הטרנדים המובילים ב-AI ב-2025",
agent=researcher,
expected_output="רשימה של 10 טרנדים עם הסבר"
)
write_task = Task(
description="כתוב מאמר 800 מילה על הממצאים",
agent=writer,
expected_output="מאמר מוכן לפרסום בעברית"
)
# הרצת הצוות
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential # או hierarchical
)
result = crew.kickoff()
טיפים קריטיים לייצור
warning
⚠️ הגדר תמיד Timeout ו-Max Iterations
Agent ללא גבולות יכול לרוץ לאינסוף ולצבור עלויות API גבוהות. הוסף תמיד: max_iterations=10 ו-timeout.
Human-in-the-Loop
לפעולות בלתי הפיכות (מחיקה, שליחת אימייל לאלף אנשים), הוסף checkpoint לאישור אנושי לפני הביצוע.
Logging מלא
שמור כל Thought, Action ו-Observation. קריטי לדיבוג ולהבנה מה קרה כשהAgent עושה החלטות לא צפויות.
Sandbox לכלים מסוכנים
הרץ קוד שנוצר ע"י AI ב-Docker Container מבודד. אף פעם אל תרוץ קוד שנוצר ע"י LLM ישירות בסביבת הייצור.
מוכן לבנות Agent אמיתי?
ראה את הקורס המלא שלנו שכולל בניית Agent לחיפוש ומחקר שוק, Agent לניהול סושיאל מדיה ועוד.
school
לקורסים שלנו