العقد والحواف والحالة
عرّف حالة TypedDict، واكتب دوال عقد تعدّلها، ثم صِل بينها بحواف موجهة.
العقد والحواف والحالة درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
كائن الحالة
يمتلك كل وكيل في LangGraph حالة ذات أنواع محددة — وعادةً ما تكون TypedDict:
from typing import TypedDict
from typing_extensions import Annotated
import operator
class AgentState(TypedDict):
messages: Annotated[list, operator.add] # appends instead of replaces
plan: str
answer: strكيفية عمل تحديثات الحالة
تعيد كل عقدة قاموسًا جزئيًا. وتنفذ LangGraph ما يلي:
- تقرأ الحالة الحالية
- تستدعي العقدة باستخدامها
- تدمج القاموس الجزئي المُعاد في الحالة مجددًا
بالنسبة إلى حقول القوائم التي تستخدم operator.add، تُضاف العناصر الجديدة بدلًا من الكتابة فوق العناصر الموجودة.
Defining a Node
def planner(state: AgentState) -> dict:
prompt = f'User wants: {state["messages"][-1].content}'
plan = llm.invoke(prompt).content
return {'plan': plan}Registering the Node
from langgraph.graph import StateGraph, END
graph = StateGraph(AgentState)
graph.add_node('planner', planner)تعريف الحواف
تُنفذ الحواف الثابتة دون شروط:
graph.set_entry_point('planner')
graph.add_edge('planner', 'researcher')
graph.add_edge('researcher', 'writer')
graph.add_edge('writer', END)الحواف الشرطية
لإنشاء التفرعات، سجّلوا دالة تختار العقدة التالية:
def route(state: AgentState) -> str:
if state['needs_research']:
return 'researcher'
return 'writer'
graph.add_conditional_edges(
'planner',
route,
{'researcher': 'researcher', 'writer': 'writer'}
)العقدة END خاصة
العقدة END هي العقدة النهائية. وتنهي أي حافة تصل إلى END الرسم البياني وتعيد الحالة الحالية.
Compiling the Graph
app = graph.compile()
result = app.invoke({'messages': [...]})
print(result['answer'])بث تحديثات الحالة
راقبوا تغير الحالة في الوقت الفعلي:
for event in app.stream({'messages': [...]}):
print(event)
# Each event is the state diff from the just-completed node.دوال الاختزال
لدمج الحالات المعقدة، استخدموا دالة اختزال مخصصة:
def merge_facts(old, new):
return {**old, **new}
class State(TypedDict):
facts: Annotated[dict, merge_facts]الرسوم البيانية الفرعية
يمكن أن تكون العقدة نفسها رسمًا بيانيًا آخر تم تجميعه — وهذا مفيد للوكلاء الهرميين:
subgraph = StateGraph(SubState).compile()
graph.add_node('subprocess', subgraph)العقد غير المتزامنة
يمكن أن تكون العقد دوال غير متزامنة:
async def fetch_node(state):
data = await fetch_async(state['url'])
return {'data': data}
result = await app.ainvoke({...})الأخطاء في العقد
إذا أطلقت عقدة خطأً، تنشر LangGraph الخطأ وتتوقف. اعترضوا الخطأ داخل العقدة إذا أردتم التعامل معه بسلاسة:
def safe_search(state):
try:
return {'results': search(state['query'])}
except Exception as e:
return {'error': str(e), 'results': []}تحديثات الحالة
ماذا يحدث عندما تعيد عقدة {'plan': '...'} في صورة قاموس؟
مراجعة
عرّفوا حالة TypedDict، واكتبوا دوالًا تعيد تحديثات جزئية، وأضيفوا العقد والحواف، ثم جمّعوا الرسم البياني وشغّلوه. هذه هي LangGraph.
تعلم AI Agents مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 60
- الدروس
- 239
الأسئلة الشائعة
هل درس «العقد والحواف والحالة» مجاني؟
نعم — نص درس «العقد والحواف والحالة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.
ماذا ستتعلم في «العقد والحواف والحالة»؟
عرّف حالة TypedDict، واكتب دوال عقد تعدّلها، ثم صِل بينها بحواف موجهة. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟
لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «العقد والحواف والحالة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟
نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا تتفوق الرسوم البيانية على السلاسل المسطحة
- العقد والحواف والحالة
- التوجيه والتفرع الشرطي
- استدامة حالة الرسم البياني (نقاط التحقق)