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

قم بتنزيل أحدث ملف .dmg من LangGraph Studio بالنقر هنا أو بزيارة صفحة الإصدارات.
حاليًا، يتم دعم نظام التشغيل macOS فقط. يتوفر دعم Windows وLinux قريبًا. نعتمد أيضًا على تشغيل Docker Engine، حاليًا ندعم أوقات التشغيل التالية فقط:
يتطلب LangGraph Studio إصدار docker-compose 2.22.0+ أو أعلى. يرجى التأكد من تثبيت Docker Desktop أو Orbstack وتشغيله قبل المتابعة.
لاستخدام LangGraph Studio، تأكد من أن لديك مشروعًا تم إعداد تطبيق LangGraph عليه.
في هذا المثال، سوف نستخدم هذا المستودع النموذجي هنا والذي يستخدم ملف requirements.txt للتبعيات:
git clone https://github.com/langchain-ai/langgraph-example.git إذا كنت ترغب في استخدام ملف pyproject.toml بدلاً من ذلك لإدارة التبعيات، فيمكنك استخدام نموذج المستودع هذا.
git clone https://github.com/langchain-ai/langgraph-example-pyproject.git ستحتاج بعد ذلك إلى إنشاء ملف .env بمتغيرات البيئة ذات الصلة:
cp .env.example .env يجب عليك بعد ذلك فتح ملف .env وملء مفاتيح OpenAI وAnthropic وTavily API ذات الصلة.
إذا قمت بالفعل بتعيينها في بيئتك، فيمكنك حفظها في ملف .env هذا باستخدام الأوامر التالية:
echo " OPENAI_API_KEY= " $OPENAI_API_KEY " " > .env
echo " ANTHROPIC_API_KEY= " $ANTHROPIC_API_KEY " " >> .env
echo " TAVILY_API_KEY= " $TAVILY_API_KEY " " >> .envملاحظة: لا تقم بإضافة LANGSMITH_API_KEY إلى ملف .env. سنقوم بذلك تلقائيًا نيابةً عنك عند المصادقة، وقد يؤدي ضبط ذلك يدويًا إلى حدوث أخطاء.
بمجرد الانتهاء من إعداد المشروع، يمكنك استخدامه في LangGraph Studio. دعونا الغوص في!
عند فتح تطبيق LangGraph Studio لسطح المكتب لأول مرة، ستحتاج إلى تسجيل الدخول عبر LangSmith.

بمجرد المصادقة بنجاح، يمكنك اختيار مجلد تطبيق LangGraph لاستخدامه - يمكنك إما سحبه وإسقاطه أو تحديده يدويًا في منتقي الملفات. إذا كنت تستخدم المشروع النموذجي، فسيكون المجلد langgraph-example .
مهم
يجب أن يحتوي دليل التطبيق الذي تحدده على ملف langgraph.json الذي تم تكوينه بشكل صحيح. اطلع على مزيد من المعلومات حول كيفية تكوينه هنا وكيفية إعداد تطبيق LangGraph هنا.

بمجرد تحديد مشروع صالح، سيبدأ LangGraph Studio خادم LangGraph API ويجب أن تشاهد واجهة المستخدم مع الرسم البياني الخاص بك.

الآن يمكننا تشغيل الرسم البياني! يتيح لك LangGraph Studio تشغيل الرسم البياني الخاص بك بمدخلات وتكوينات مختلفة.
لبدء جولة جديدة:
agent . تتوافق قائمة الرسوم البيانية مع مفاتيح graphs في تكوين langgraph.json الخاص بك.Input .Submit لاستدعاء الرسم البياني المحدد.يوضح الفيديو التالي كيفية بدء جولة جديدة:
لتغيير التكوين لتشغيل رسم بياني معين، اضغط على الزر Configurable في قسم Input . ثم انقر فوق Submit لاستدعاء الرسم البياني.
مهم
لكي تكون القائمة Configurable مرئية، تأكد من تحديد مخطط التكوين عند إنشاء StateGraph . يمكنك قراءة المزيد حول كيفية إضافة مخطط التكوين إلى الرسم البياني الخاص بك هنا.
يوضح الفيديو التالي كيفية تعديل التكوين وبدء تشغيل جديد:
عندما تفتح LangGraph Studio، ستنتقل تلقائيًا إلى نافذة موضوع جديد. إذا كان لديك موضوع مفتوح، فاتبع الخطوات التالية لإنشاء موضوع جديد:
+ لفتح قائمة سلاسل محادثات جديدة.والفيديو التالي يوضح كيفية إنشاء موضوع:
لتحديد موضوع:
New Thread / Thread <thread-id> في الجزء العلوي من الجزء الأيمن لفتح القائمة المنسدلة لقائمة المواضيع.والفيديو التالي يوضح كيفية اختيار الموضوع:
يسمح لك LangGraph Studio بتحرير حالة مؤشر الترابط وتقسيم سلاسل الرسائل لإنشاء تنفيذ رسم بياني بديل مع الحالة المحدثة. للقيام بذلك:
Fork لتحديث الحالة وإنشاء تنفيذ رسم بياني جديد بالحالة المحدثة.والفيديو التالي يوضح كيفية تعديل موضوع في الاستوديو:
قد ترغب في تنفيذ الرسم البياني الخاص بك خطوة بخطوة، أو إيقاف تنفيذ الرسم البياني قبل/بعد تنفيذ عقدة معينة. يمكنك القيام بذلك عن طريق إضافة المقاطعات. يمكن تعيين المقاطعات لجميع العقد (أي السير عبر تنفيذ الوكيل خطوة بخطوة) أو لعقد محددة. تعني المقاطعة في LangGraph Studio أنه سيتم مقاطعة تنفيذ الرسم البياني قبل وبعد تشغيل عقدة معينة.
للتنقل عبر تنفيذ الوكيل خطوة بخطوة، يمكنك إضافة مقاطعات إلى كل أو مجموعة فرعية من العقد في الرسم البياني:
Interrupt .Interrupt on all .يوضح الفيديو التالي كيفية إضافة المقاطعات إلى جميع العقد:
+ يظهر على الجانب الأيسر من العقدة.+ لاستدعاء الرسم البياني المحدد.Input / التكوين والنقر فوق Submitيوضح الفيديو التالي كيفية إضافة المقاطعات إلى عقدة معينة:
لإزالة المقاطعة، ما عليك سوى اتباع نفس الخطوة والضغط على زر x الموجود على الجانب الأيسر من العقدة.
بالإضافة إلى مقاطعة العقدة وتحرير حالة الرسم البياني، قد ترغب في دعم سير عمل الإنسان في الحلقة مع القدرة على تحديث الحالة يدويًا. فيما يلي نسخة معدلة من agent.py مع العقد agent human ، حيث سيتم مقاطعة تنفيذ الرسم البياني على العقدة human . سيتيح لك ذلك إرسال المدخلات كجزء من العقدة human . يمكن أن يكون هذا مفيدًا عندما تريد أن يحصل الوكيل على مدخلات المستخدم. يحل هذا بشكل أساسي محل الطريقة التي يمكنك بها استخدام input() إذا كنت تقوم بتشغيل هذا من سطر الأوامر.
from typing import TypedDict , Annotated , Sequence , Literal
from langchain_core . messages import BaseMessage , HumanMessage
from langchain_anthropic import ChatAnthropic
from langgraph . graph import StateGraph , END , add_messages
class AgentState ( TypedDict ):
messages : Annotated [ Sequence [ BaseMessage ], add_messages ]
model = ChatAnthropic ( temperature = 0 , model_name = "claude-3-sonnet-20240229" )
def call_model ( state : AgentState ) -> AgentState :
messages = state [ "messages" ]
response = model . invoke ( messages )
return { "messages" : [ response ]}
# no-op node that should be interrupted on
def human_feedback ( state : AgentState ) -> AgentState :
pass
def should_continue ( state : AgentState ) -> Literal [ "agent" , "end" ]:
messages = state [ 'messages' ]
last_message = messages [ - 1 ]
if isinstance ( last_message , HumanMessage ):
return "agent"
return "end"
workflow = StateGraph ( AgentState )
workflow . set_entry_point ( "agent" )
workflow . add_node ( "agent" , call_model )
workflow . add_node ( "human" , human_feedback )
workflow . add_edge ( "agent" , "human" )
workflow . add_conditional_edges (
"human" ,
should_continue ,
{
"agent" : "agent" ,
"end" : END ,
},
)
graph = workflow . compile ( interrupt_before = [ "human" ])يوضح الفيديو التالي كيفية إرسال تحديثات الحالة يدويًا (أي الرسائل في مثالنا) عند المقاطعة:
يسمح لك LangGraph Studio بتعديل تكوين مشروعك ( langgraph.json ) بشكل تفاعلي.
لتعديل التكوين من الاستوديو، اتبع الخطوات التالية:
Configure في أسفل اليمين. سيؤدي هذا إلى فتح قائمة تكوين تفاعلية بالقيم التي تتوافق مع langgraph.json الموجود.Save and Restart لإعادة تحميل خادم LangGraph API بالتكوين المحدث.يوضح الفيديو التالي كيفية تحرير تكوين المشروع من الاستوديو:
باستخدام LangGraph Studio، يمكنك تعديل رمز الرسم البياني الخاص بك ومزامنة التغييرات مباشرة مع الرسم البياني التفاعلي.
لتعديل الرسم البياني الخاص بك من الاستوديو، اتبع الخطوات التالية:
Open in VS Code في أسفل اليمين. سيؤدي هذا إلى فتح المشروع المفتوح حاليًا في استوديو LangGraph..py حيث يتم تعريف الرسم البياني المترجم أو التبعيات المرتبطة به.يوضح الفيديو التالي كيفية فتح محرر التعليمات البرمجية من الاستوديو:
بعد تعديل الكود الأساسي، يمكنك أيضًا إعادة تشغيل العقدة في الرسم البياني. على سبيل المثال، إذا كان الوكيل يستجيب بشكل سيئ، فيمكنك تحديث تنفيذ عقدة الوكيل في محرر التعليمات البرمجية الخاص بك وإعادة تشغيله. يمكن أن يجعل هذا الأمر أسهل بكثير للتكرار على الوكلاء الذين يعملون لفترة طويلة.
يعتمد LangGraph Studio على Docker Compose لتشغيل واجهة برمجة التطبيقات (API) وRedis وPostgres، والتي بدورها تنشئ شبكتها الخاصة. وبالتالي، للوصول إلى الخدمات المحلية، يتعين عليك استخدام host.docker.internal كاسم مضيف بدلاً من localhost . انظر رقم 112 للمزيد من التفاصيل.
بشكل افتراضي، نحاول أن نجعل الصورة صغيرة قدر الإمكان، وبالتالي فإن بعض التبعيات مثل gcc أو build-essentials مفقودة من الصورة الأساسية. إذا كنت بحاجة إلى تثبيت تبعيات إضافية، فيمكنك القيام بذلك عن طريق إضافة تعليمات Dockerfile إضافية في قسم dockerfile_lines في ملف langgraph.json الخاص بك:
{
"dockerfile_lines": [
"RUN apt-get update && apt-get install -y gcc"
]
}
راجع كيفية تخصيص Dockerfile لمزيد من التفاصيل.