وكلاء مدعومون بواسطة Gemini Pro: فتح سيرورات وكيلية باستخدام LangTrace
اكتشف كيف يفتح Gemini Pro و LangTrace طرق عمل وكالية لقدرات LLM المتقدمة. استكشف التخطيط واستخدام الأدوات الخارجية والتتبع لأنظمة الذكاء الاصطناعي الجاهزة للإنتاج.
١٥ يناير ٢٠٢٥
افتح قوة وكلاء بقيادة الذكاء الاصطناعي باستخدام طراز Gemini Pro التجريبي. اكتشف كيف يمكن لهذا النموذج اللغوي المتطور دمج الأدوات والواجهات البرمجية الخارجية بسلاسة لمعالجة المهام المعقدة، مما يوفر استجابات شاملة ومخصصة. استكشف فوائد هذا النهج القائم على الوكيل وافتح إمكانات جديدة لمحتواك وعملياتك.
ما هو العميل وكيف يعمل؟
ما هو العميل وكيف يعمل؟
الوكيل هو في الأساس نموذج لغة كبير (LLM) مع قدرات إضافية، بما في ذلك:
-
التخطيط: يمكن للوكيل تفكيك استفسار المستخدم والتوصل إلى خطة شاملة لمعالجته.
-
الأدوات/واجهات برمجة التطبيقات الخارجية: للوكيل إمكانية الوصول إلى أدوات أو واجهات برمجة تطبيقات خارجية يمكنه استخدامها لتنفيذ خطته.
-
الذاكرة: يحتفظ الوكيل بتتبع مكان تنفيذ الخطة وما هي الخطوات الإضافية التي يجب عليه اتخاذها.
في المثال المقدم، يستخدم الوكيل نموذج Gemini 1.5 Pro التجريبي كـ LLM، ولديه إمكانية الوصول إلى أداتين:
-
RAG (Retrieval-Augmented Generation): يعمل هذا كقاعدة معرفة للوكيل، باستخدام ورقة "Attention is All You Need".
-
البحث على الويب: يمكن للوكيل البحث عن معلومات على الويب لتكملة معرفته.
إعداد البيئة
إعداد البيئة
للبدء، نحتاج إلى تثبيت الحزم اللازمة وإعداد مفاتيح API المطلوبة. إليك كيفية القيام بذلك:
-
تثبيت الحزم: سنقوم بتثبيت حزمة Google Generative AI، LangChain، Tavly Python (محرك البحث الخاص بنا)، FAISS (متجر المتجهات)، وحزمة SDK Python LangTrace.
-
استيراد الحزم: سنقوم باستيراد مقسم النص الحرفي التسلسلي، محمل PDF، نتائج بحث Tavly، ونموذج تضمين AI التوليدي من Google.
-
إعداد مفاتيح API:
- مفتاح API Tavly: يمكنك الحصول على مفتاح API Tavly بالنقر على رابط "الحصول على مفتاح API" الموجود في وصف الفيديو.
- مفتاح API Google: يمكنك الحصول على مفتاح API Google من Google AI Studio الخاص بك.
- مفتاح API LangTrace: ستحتاج إلى إنشاء حساب على LangTrace، وهو منصة مراقبة مفتوحة المصدر للتطبيقات LLM. ثم يمكنك النقر على "توليد مفتاح API" للحصول على مفتاح API الخاص بك.
-
تعيين متغيرات البيئة: سنقوم بتعيين مفتاح API Tavly ومفتاح API LangTrace كمتغيرات بيئية.
إنشاء قناة RAG
إنشاء قناة RAG
لإعداد أنبوب أساسي لـ RAG، نحتاج أولاً إلى تحميل مستند PDF الذي سيكون بمثابة قاعدة معرفتنا. في هذه الحالة، لدينا ملف "transformers.pdf" الذي يحتوي على 12 صفحة من المحتوى.
بعد ذلك، نستخدم RecursiveCharacterTextSplitter
من وحدة langchain.text_splitter
لتقسيم المستند إلى قطع أصغر، كل منها بما لا يزيد عن 500 رمز وتداخل 100 رمز. هذا يسمح لنا بإنشاء ما مجموعه 24 قطعة مختلفة يمكن استخدامها للاسترجاع.
ثم نقوم بتحميل نموذج التضمين AI التوليدي من Google، والذي سيتم استخدامه لحساب التضمينات لكل قطعة من المستند. تبلغ أبعاد التضمينات 768.
لتخزين التضمينات، نستخدم متجر المتجهات FAISS. هذا يسمح لنا بإجراء عمليات بحث عن التشابه على قطع المستند بكفاءة عند توفير استفسار.
أخيرًا، نقوم بإنشاء أداة RetrievalQA
يمكن للوكيل استخدامها لاسترجاع المعلومات ذات الصلة من قاعدة المعرفة. تم تكوين الأداة مع الباحث FAISS ووصف يشير إلى أنها مفيدة لاسترجاع المعلومات المتعلقة بورقة "Attention is All You Need".
بهذا الإعداد، سيتمكن الوكيل من استخدام أنبوب RAG لإيجاد واسترجاع المعلومات ذات الصلة عند الإجابة على الأسئلة المتعلقة بالمحولات والمواضيع ذات الصلة.
إعداد الأدوات
إعداد الأدوات
لإعداد الأدوات الخاصة بوكيلنا، نحتاج أولاً إلى تثبيت الحزم اللازمة:
1# تثبيت الحزم المطلوبة 2!pip install google-generative-ai langchain tavlpy faiss-cpu langtracing
بعد ذلك، نقوم باستيراد الوحدات المطلوبة وإعداد مفاتيح API للخدمات المختلفة التي سنستخدمها:
1import os 2from langchain.document_loaders import PyPDFLoader 3from langchain.text_splitter import RecursiveCharacterTextSplitter 4from langchain.embeddings.openai import OpenAIEmbeddings 5from langchain.vectorstores import FAISS 6from langtracing.sdk.python import LangTracer 7 8# إعداد مفتاح API Tavly 9TAVLY_API_KEY = os.environ.get("TAVLY_API_KEY") 10 11# إعداد مفتاح API LangTrace 12LANGTRACING_API_KEY = os.environ.get("LANGTRACING_API_KEY")
ثم نقوم بإعداد أنبوب RAG (Retrieval Augmented Generation) من خلال تحميل مستند PDF، تقسيمه إلى قطع، وإنشاء التضمينات ومتجر المتجهات:
1# تحميل مستند PDF 2loader = PyPDFLoader("transformers.pdf") 3documents = loader.load() 4 5# تقسيم المستند إلى قطع 6text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100, length_function=len) 7chunks = text_splitter.split_documents(documents) 8 9# إنشاء التضمينات ومتجر المتجهات 10embeddings = OpenAIEmbeddings() 11vector_store = FAISS.from_documents(chunks, embeddings)
أخيرًا، نقوم بإنشاء الأداتين اللتين سيكون لدى وكيلنا إمكانية الوصول إليهما: أداة الاسترجاع وأداة البحث:
1from langchain.agents import Tool 2 3# إنشاء أداة الاسترجاع 4retriever_tool = Tool( 5 name="retriever_tool", 6 description="لأي معلومات متعلقة بهندسة المحولات، استخدم هذه الأداة. مفيدة لاسترجاع المعلومات المتعلقة بورقة Attention is all you need.", 7 func=lambda query: vector_store.similarity_search(query, k=3) 8) 9 10# إنشاء أداة البحث 11search_tool = Tool( 12 name="search_tool", 13 description="محرك بحث مُحسَّن للنتائج الشاملة والدقيقة والموثوقة. مفيد عندما تحتاج إلى الإجابة على أسئلة حول الأحداث الجارية. يجب أن يكون الإدخال عبارة عن استفسار بحث.", 14 func=lambda query: Tavly(TAVLY_API_KEY).search(query) 15)
بعد إعداد الأدوات، نحن الآن جاهزون لإنشاء الوكيل والبدء في استخدامه للإجابة على الأسئلة.
إنشاء العميل
إنشاء العميل
لإنشاء الوكيل، سنستخدم فئة وكيل ReAct من LangChain. هذا نوع خاص من الوكلاء القادر على التخطيط، ولديه ذاكرة، ولديه إمكانية الوصول إلى الأدوات التي نريد أن يستخدمها.
نحتاج أولاً إلى توفير تعليمات أو تعليمات مفصلة للوكيل للتحكم في الأدوات والتوصل إلى خطة. يوفر LangChain قالبًا لهذا باستخدام LangChain Hub، والذي يشبه Llama Index Hub.
سنستخدم قالب ReAct وتعديله حسب الحاجة. تتضمن التعليمات ما يلي:
- أجب على الأسئلة التالية بأفضل ما تستطيع.
- لديك إمكانية الوصول إلى الأدوات التالية:
- أداة الاسترجاع: لأي معلومات متعلقة بورقة "Attention is All You Need".
- أداة البحث: محرك بحث مُحسَّن للنتائج الشاملة والدقيقة والموثوقة. مفيد للإجابة على أسئلة الأحداث الجارية.
- استخدم التنسيق التالي:
- سؤال الإدخال الذي يجب عليك الإجابة عليه.
- عملية التفكير الخاصة بك.
- الإجراء الذي سيتم اتخاذه (أي الأداة التي سيتم استخدامها).
- ناتج الأداة.
- الإجابة النهائية.
بهذه التعليمات، يمكننا إنشاء وكيل ReAct:
1agent = ReActAgent( 2 name="Gemini 1.5 Pro", 3 tools=tools, 4 system_message=system_prompt 5)
هنا، tools
هي قائمة الأدوات التي عرفناها سابقًا، و system_prompt
هي التعليمات التي أنشأناها بناءً على قالب ReAct.
التفاعل مع العميل
التفاعل مع العميل
الوكيل الذي قمنا بإعداده هو وكيل تفاعلي، مما يعني أنه يمكنه التخطيط، وتنفيذ الإجراءات، وتحديث حالته الداخلية بناءً على نتائج تلك الإجراءات. دعنا نرى كيف يمكننا التفاعل مع هذا الوكيل.
أولاً، سنسأل الوكيل سؤالاً بسيطًا عن الطقس الحالي في لوس أنجلوس:
1question = "What is the current weather at LA?" 2result = agent.run(question) 3print(result)
يمر الوكيل بعملية تفكير، ويقرر استخدام أداة البحث للبحث عن الطقس الحالي، ثم ينفذ البحث ويقدم الإجابة النهائية.
بعد ذلك، دعنا نسأل الوكيل عن قائمة الميداليات الذهبية لكل دولة في الأولمبياد الحالي:
1question = "Can you give me a list of gold medals per country in the current Olympics?" 2result = agent.run(question) 3print(result)
هنا، يقرر الوكيل مرة أخرى استخدام أداة البحث للبحث عن المعلومات ذات الصلة، ثم يعالج النتائج ويقدم الإجابة.
أخيرًا، دعنا نسأل الوكيل لشرح مفهوم الانتباه في المحولات:
1question = "Can you explain the concept of attention in transformers?" 2result = agent.run(question) 3print(result)
في هذه الحالة، يتعرف الوكيل على أن السؤال متعلق بورقة "Attention is All You Need"، لذا يقرر استخدام أداة الاسترجاع لجلب المعلومات ذات الصلة من الورقة. ثم يعالج المعلومات
التعليمات
التعليمات