كيفية إنشاء نظام التوجيه

تعرف على كيفية إنشاء وكيل التوجيه في LangGraph.

سنغطي ما يلي...

تخيل أن لديك عدة إجراءات محتملة يمكن للذكاء الاصطناعي اتخاذها. أحيانًا يستجيب مباشرةً، وأحيانًا أخرى يستدعي أداة، مثل إجراء عملية حسابية، قبل الاستجابة. في الدرس السابق، تعلمنا كيفية الحفاظ على الحالة بناء رسم بياني لعقدة واحدة، حيث تتولى العقدة نفسها معالجة البيانات وتحديد ما إذا كانت ستستدعي أداة بناءً على إدخال. هذا النهج الخطي والمباشر مناسب للمهام البسيطة، ولكنه يصبح معقدًا مع ازدياد تعقيد سير العمل.

سنمضي قدمًا في هذا الأمر بتقديم نظام توجيه ديناميكي يحوّل نموذج الذكاء الاصطناعي الخاص بنا إلى نوع من أجهزة التوجيه. ومثل إشارة المرور التي تُوجّه السيارات للأمام مباشرةً أو إلى شارع جانبي، يستخدم نظام التوجيه لدينا حوافًا شرطية لتحديد العقدة التالية بناءً على استجابة الذكاء الاصطناعي. ومن خلال إضفاء طابع خارجي على عملية اتخاذ القرار على هذه الحواف الشرطية، ننشئ سير عمل متفرّعًا وقابلًا للتطوير، حيث تعمل عقد متعددة معًا. هذا الفصل الأدقّ للمهام يجعل النظام أكثر مرونةً ويعزز قدرته على التعامل مع مجموعة أوسع من المهام، مما يمهد الطريق لسير عمل ذكاء اصطناعي أكثر تطورًا مع LangGraph.

كيف تعمل آلية التوجيه؟

كما هو موضح في الدرس السابق، لدينا بالفعل حالة ونموذج ذكاء اصطناعي قادر على استدعاء المحادثة بأكملها. تفحص آلية التوجيه استجابة الذكاء الاصطناعي وتحدد الخطوة التالية. إذا أشارت استجابة إلى ضرورة استدعاء أداة، لإجراء عملية حسابية مثلاً، يُوجَّه سير العمل إلى عقدة متخصصة تُنفِّذ هذه الأداة. وإلا، يُنتج النظام إجابة الذكاء الاصطناعي المباشرة ويُنهي العملية. تُمكِّن إضافة هذه القدرة على اتخاذ القرار النموذج من اختيار مسارات مختلفة بناءً على السياق، مما يُنشئ وكيلًا بسيطًا يتكيف مع إدخال المستخدم.

فيما يلي الكود النهائي من الدرس السابق للرجوع إليه. لاحظ كيف عرّفناMessagesState وأنشئ رسمًا بيانيًا بسيطًا بعقدة واحدة تقرأ المحادثة بأكملها وتُرسل استجابة. لن نعيد شرح هذه المفاهيم، فقد تناولناها بالتفصيل سابقًا.

from langgraph.graph import MessagesState
from langgraph.graph import StateGraph, START, END
from langchain_openai import ChatOpenAI
# We defined a custom MessagesState (already explained previously)
class MyMessagesState(MessagesState):
pass
# Initialize the LLM (previously explained)
llm = ChatOpenAI(model="gpt-4o")
# Define our multiply tool from the previous lesson
def multiply(a: int, b: int) -> int:
return a * b
# Bind the tool to our LLM so it knows it's available
llm_with_tools = llm.bind_tools([multiply])
# Node that uses the LLM and returns a new message
def tool_calling_llm(state: MyMessagesState):
# Note: We're using llm_with_tools here so the AI knows about the multiply function
response = llm_with_tools.invoke(state["messages"])
return {"messages": [response]}
# Build a simple graph
builder = StateGraph(MyMessagesState)
builder.add_node("tool_calling_llm", tool_calling_llm)
builder.add_edge(START, "tool_calling_llm")
builder.add_edge("tool_calling_llm", END)
graph = builder.compile()

في الكود أعلاه، يقرأ ...