كيفية تنفيذ منطق ReAct باستخدام وكيل في LangChain؟

Kyfyt Tnfydh Mntq React Bastkhdam Wkyl Fy Langchain



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

مخطط سريع

ستوضح هذه المشاركة ما يلي:

كيفية تنفيذ منطق ReAct باستخدام وكيل في LangChain؟

ال ' تتفاعل 'هو مزيج من مرحلتي السبب والفعل لتعزيز أداء النموذج اللغوي' يكرر 'يشير إلى العقل و' يمثل ' للعمل. غالبًا ما يُعتبر منطق ReAct هو الأكثر تحسينًا لبناء LLMs أو chatbots لفهم النص وإنشائه. الوكيل هو صانع القرار الذي يقرر الإجراءات التي سيتم تنفيذها وبأي ترتيب سيتم تنفيذها.







لمعرفة عملية تنفيذ منطق ReAct باستخدام وكيل في LangChain، ما عليك سوى اتباع الدليل التالي:



الخطوة 1: تثبيت الأطر

أولاً، قم بتثبيت LangChain لبدء عملية تنفيذ منطق ReAct:



نقطة تثبيت لانجشين





قم بتثبيت وحدة نتائج بحث google للحصول على التبعيات لبناء الوكيل الذي يمكنه الحصول على نتائج البحث من google:

تثبيت النقطة على نتائج بحث جوجل openai



بعد ذلك، قم بتثبيت وحدات OpenAI التي يمكن استخدامها لتحميل نماذج اللغات الكبيرة أو LLMs لتنفيذ منطق ReAct:

نقطة تثبيت openai

بعد الحصول على جميع الوحدات المطلوبة، ما عليك سوى إعداد ملف بيئة OpenAI لبناء LLM و بيئة SerpAPI لاستخدام الوكيل في النموذج:

يستورد أنت

يستورد com.getpass

أنت . تقريبًا [ 'OPENAI_API_KEY' ] = com.getpass . com.getpass ( 'مفتاح واجهة برمجة تطبيقات OpenAI:' )

أنت . تقريبًا [ 'SERPAPI_API_KEY' ] = com.getpass . com.getpass ( 'مفتاح واجهة برمجة تطبيقات Serpapi:' )

الخطوة 2: تحميل نموذج اللغة

الخطوة التالية هي تحميل نماذج اللغة عن طريق استيراد المكتبات المطلوبة باستخدام إطار عمل LangChain:

من com.langchain. عملاء يستورد Load_tools

من com.langchain. عملاء يستورد تهيئة_agent

من com.langchain. عملاء يستورد نوع الوكيل

من com.langchain. llms يستورد OpenAI

استخدم طريقة OpenAI() لإنشاء نموذج اللغة (llm) ثم قم بتكوين الأدوات للوكلاء الذين يستخدمون SerpAPI:

LLM = OpenAI ( درجة حرارة = 0 )

أدوات = Load_tools ( [ 'سيربابي' , 'مبادئ الرياضيات' ] , LLM = LLM )

الطريقة الأولى: استخدام لغة تعبير LandChain

LCEL هي عملية دمج أو إنشاء السلاسل معًا أثناء بناء نماذج اللغة في LangChain. ابدأ العملية بتثبيت LangChainHub للحصول على تبعياته لبناء منطق ReAct واستخدامه مع الوكلاء في LangChain:

نقطة تثبيت langchainhub

استيراد المكتبات من LangChain مثل ReActSingleInputOutputParser لبناء النموذج الذي يمكنه استخدام نموذج ReAct:

من com.langchain. أدوات . يجعل يستورد render_text_description

من com.langchain. عملاء . input_parsers يستورد ReActSingleInputOutputParser

من com.langchain. عملاء . format_scratchpad يستورد format_log_to_str

من com.langchain يستورد مَركَز

قم بتحميل نموذج اللغة لتصميم منطق ReAct باستخدام طريقة pull() وقم بتخزينه في المتغير الموجه. حدد بعض الأدوات التي يمكن استخدامها لتنفيذ المنطق على مجموعة البيانات المحملة لتنفيذ عملها مع الوكيل:

اِسْتَدْعَى = مَركَز. يحذب ( 'hwchase17/رد فعل' )

اِسْتَدْعَى = اِسْتَدْعَى. جزئي (

أدوات = render_text_description ( أدوات ) ,

أسماء الأدوات = '،' . ينضم ( [ ر. اسم ل ر في أدوات ] ) ,

)

وكيل البناء

الآن، قم بتكوين الوكيل وأدواته من خلال دمجه مع نموذج اللغة الذي تم تحميله في الخطوة 2 من هذا الدليل:

llm_with_stop = LLM. ربط ( قف = [ ' ملاحظة' ] )

حدد متغير وكيل لتوفير الوسائط والأدوات اللازمة لتكوين الوكيل الذي يشرح عمله. يتم الآن دمج الأجزاء التي تم تكوينها مسبقًا مثل طريقة llm_with_stop وReActSingleInputOutputParser() مع الوكيل:

عامل = {

'مدخل' : لامدا س: س [ 'مدخل' ] ,

'agent_scratchpad' : لامدا س: format_log_to_str ( س [ 'خطوات_متوسطة' ] )

} | موجه | llm_with_stop | ReActSingleInputOutputParser ( )

احصل على مكتبة AgentExecutor وقم بتكوين طريقتها باستخدام وسيطات مثل الوكيل والأدوات والمطول للحصول على مخرجات أكثر قابلية للقراءة:

من com.langchain. عملاء يستورد AgentExecutor

agent_executor = AgentExecutor ( عامل = عامل , أدوات = أدوات , مطول = حقيقي )

قم باستدعاء الطريقة agent_executor()‎ مع استعلام السلسلة كمدخل سيؤدي إلى تشغيل الوكيل لاستخراج المخرجات:

agent_executor. يستحضر ( { 'مدخل' : 'من هي صديقة ليو دي كابريو' } )

انتاج |

تعرض لقطة الشاشة التالية أن الوكيل قد استخرج المعلومات باستخدام منطق ReAct وقام بإنشاء النص باللغة الطبيعية:

الطريقة الثانية: استخدام ZeroShotReactAgent

يمكن أيضًا تنفيذ منطق ReAct باستخدام وكيل آخر مثل ZeroShotReactAgent أثناء تكوين متغير agent_executor. بعد ذلك، ما عليك سوى استدعاء المتغير agent_executor باستخدام السؤال كمدخل لاستدعاء الوكيل:

agent_executor = تهيئة_agent ( أدوات , LLM , عامل = نوع الوكيل. ZERO_SHOT_REACT_DESCRIPTION , مطول = حقيقي )

agent_executor. يستحضر ( { 'مدخل' : 'ما هو عمر صديقة ليو دي كابريو الذي تم رفعه إلى قوة 0.21' } )

انتاج |

قام الوكيل باستخراج المعلومات بناءً على الإدخال المطلوب أثناء استدعاء agent_executor:

الطريقة الثالثة: استخدام نماذج الدردشة

عملية أخرى يمكن استخدامها لتنفيذ منطق ReAct باستخدام نماذج الدردشة بعد استيراد مكتبة ChatOpenAI:

من com.langchain. chat_models يستورد ChatOpenAI

بناء نموذج الدردشة باستخدام طريقة ChatOpenAI() بقيمة درجة الحرارة تساوي 0 والتي يمكنها التحكم في العشوائية في نتائج النموذج:

chat_model = ChatOpenAI ( درجة حرارة = 0 )

قم بتحميل النموذج الذي يمكن للمستخدم من خلاله تنفيذ منطق ReAct لتخزينه في المتغير الفوري وتكوين الأدوات التي سيتم استخدامها في العملية:

اِسْتَدْعَى = مَركَز. يحذب ( 'hwchase17/رد فعل-json' )

اِسْتَدْعَى = اِسْتَدْعَى. جزئي (

أدوات = render_text_description ( أدوات ) ,

أسماء الأدوات = '،' . ينضم ( [ ر. اسم ل ر في أدوات ] ) ,

)

بناء الوكيل

استخدم نموذج الدردشة لتخزين الملاحظات أو الرسائل الأخيرة عندما يتوقف النموذج عن إنشاء النص:

chat_model_with_stop = chat_model. ربط ( قف = [ ' ملاحظة' ] )

احصل على مكتبة ReActJsonSingleInputOutputParser لتنفيذ منطق ReAct وإنتاج النتائج بتنسيق JSON:

من com.langchain. عملاء . input_parsers يستورد ReActJsonSingleInputOutputParser

قم ببناء الوكيل وتكوينه باستخدام المتغير chat_model والطريقة لإنتاج النتائج عن طريق استدعاء الوكيل:

عامل = {

'مدخل' : لامدا س: س [ 'مدخل' ] ,

'agent_scratchpad' : لامدا س: format_log_to_str ( س [ 'خطوات_متوسطة' ] )

} | موجه | chat_model_with_stop | ReActJsonSingleInputOutputParser ( )

قم بتكوين agent_executor وتشغيله للحصول على النتائج بناءً على الاستعلام المقدم في متغير الإدخال:

agent_executor = AgentExecutor ( عامل = عامل , أدوات = أدوات , مطول = حقيقي )

agent_executor. يستحضر ( { 'مدخل' : 'ما هو عمر صديقة ليو دي كابريو الذي تم رفعه إلى قوة 0.21' } )

انتاج |

قام الوكيل باستخراج الإخراج كما هو موضح في لقطة الشاشة التالية:

الطريقة الرابعة: استخدام ChatZeroShotReactAgent

يمكن أيضًا استخدام تغيير قيمة الوكيل لتنفيذ منطق ReAct باستخدام إطار عمل LangChain:

عامل = تهيئة_agent ( أدوات , chat_model , عامل = نوع الوكيل. CHAT_ZERO_SHOT_REACT_DESCRIPTION , مطول = حقيقي )

عامل. يجري ( 'ما هو عمر صديقة ليو دي كابريو الذي تم رفعه إلى قوة 0.21' )

انتاج |

يحتوي هيكل الإخراج على معلومات مفصلة حول عمل الوكيل من الرموز المميزة والنموذج المستخدم لاستخراج المعلومات:

يتعلق الأمر كله بعملية تنفيذ منطق ReAct باستخدام وكيل في LangChain.

خاتمة

لتنفيذ منطق ReAct مع وكيل باستخدام إطار عمل LangChain، قم بتثبيت وحدات مثل نتائج بحث google لتكوين الوكيل. بعد ذلك، قم بإعداد البيئة باستخدام بيانات اعتماد OpenAI وSerpAPI من حساباتهم لبدء استخدام النموذج. يمكن تنفيذ منطق ReAct باستخدام نماذج LCEL والدردشة مع وكلاء متعددين تقدمها وحدة LangChain. لقد تناول هذا الدليل بالتفصيل تنفيذ منطق ReAct باستخدام الوكيل في LangChain.