بناء واجهة ذكية متعددة الأدوات مدعومة بالذكاء الاصطناعي باستخدام Streamlit

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

1. التثبيت والإعدادات الأولية:

  • تثبيت الحزم: ابدأ بتثبيت جميع حزم Python و Node.js اللازمة لتطبيق مساعد الذكاء الاصطناعي الخاص بك. وهذا يشمل Streamlit للواجهة الأمامية، وLangChain لمنطق الوكيل، وأدوات مثل ويكيبيديا وDuckDuckGo وngrok/localtunnel للبحث الخارجي والاستضافة.
pip install -q streamlit langchain langchain-google-genai langchain-community
pip install -q pyngrok python-dotenv wikipedia duckduckgo-search
npm install -g localtunnel
  • استيراد الوحدات: بعد الإعداد، قم باستيراد جميع الوحدات لبدء بناء وكيل الذكاء الاصطناعي التفاعلي متعدد الأدوات.
import streamlit as st
import os
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.agents import create_react_agent, AgentExecutor
from langchain.tools import Tool, WikipediaQueryRun, DuckDuckGoSearchRun
from langchain.memory import ConversationBufferWindowMemory
from langchain.prompts import PromptTemplate
from langchain.callbacks.streamlit import StreamlitCallbackHandler
from langchain_community.utilities import WikipediaAPIWrapper, DuckDuckGoSearchAPIWrapper
import asyncio
import threading
import time
from datetime import datetime
import json
  • تهيئة مفتاح واجهة برمجة التطبيقات: قم بتكوين بيئتك عن طريق تعيين مفتاح واجهة برمجة تطبيقات Google Gemini ورمز مصادقة ngrok. قم بتعيين بيانات الاعتماد هذه للمتغيرات وعيّن GOOGLE_API_KEY حتى يتمكن وكيل LangChain من الوصول الآمن إلى نموذج Gemini أثناء التنفيذ.
GOOGLE_API_KEY = "استبدل بمفتاح واجهة برمجة التطبيقات الخاص بك"
NGROK_AUTH_TOKEN = "استبدل برمز مصادقة ngrok الخاص بك"
os.environ["GOOGLE_API_KEY"] = GOOGLE_API_KEY

2. إنشاء أدوات الوكيل المتقدمة:

نحدد هنا فئة InnovativeAgentTools لتزويد وكيل الذكاء الاصطناعي الخاص بنا بإمكانيات متخصصة. نقوم بتنفيذ أدوات مثل:

  • آلة حاسبة: للتقييم الآمن للتعابير.
  • أدوات الذاكرة: لحفظ واستدعاء المعلومات عبر الأدوار.
  • أداة التاريخ والوقت: للحصول على التاريخ والوقت الحاليين.

هذه الأدوات تمكن وكيل Streamlit AI من التفكير، والتذكر، والاستجابة بشكل سياقي، تمامًا مثل المساعد الحقيقي.

class InnovativeAgentTools:
    # ... (كود تعريف الأدوات كما هو موضح في النص الأصلي) ...

3. بناء نظام الوكيل المتعدد:

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

class MultiAgentSystem:
    # ... (كود تعريف الفئة كما هو موضح في النص الأصلي) ...

4. إنشاء تطبيق Streamlit التفاعلي:

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

def create_streamlit_app():
    # ... (كود تطبيق Streamlit كما هو موضح في النص الأصلي) ...

5. إعداد مصادقة ngrok (اختياري):

ننشئ هنا دالة مساعدة لمصادقة ngrok، والتي تسمح لنا بعرض تطبيق Streamlit المحلي على الإنترنت. نستخدم مكتبة pyngrok لتهيئة رمز المصادقة والتحقق من الاتصال. إذا كان الرمز مفقودًا أو غير صالح، فإننا نقدم تعليمات مفصلة حول كيفية الحصول على رمز، ونقترح طرق نفق بديلة، مثل LocalTunnel أو Serveo، مما يسهل علينا استضافة ومشاركة تطبيقنا من بيئات مثل Google Colab.

def setup_ngrok_auth(auth_token):
    # ... (كود مصادقة ngrok كما هو موضح في النص الأصلي) ...

6. تشغيل التطبيق:

دالة main() تعمل كنقاطة دخول لتطبيقنا. نقوم ببساطة باستدعاء create_streamlit_app() لبدء تشغيل الواجهة الكاملة. إذا حدث أي خطأ، مثل مفتاح واجهة برمجة التطبيقات المفقود أو فشل تهيئة الأداة، فإننا نلتقط الخطأ بشكل جيد ونعرض رسالة مفيدة، مما يضمن معرفة المستخدم بكيفية الاسترداد ومواصلة استخدام التطبيق بسلاسة.

def main():
    # ... (كود تشغيل التطبيق كما هو موضح في النص الأصلي) ...

7. تشغيل التطبيق في Google Colab:

دالة run_in_colab() تسهل نشر تطبيق Streamlit مباشرةً من بيئة Google Colab. نبدأ بتثبيت جميع الحزم المطلوبة، ثم نقوم بإنشاء وكتابة كود تطبيق Streamlit الكامل ديناميكيًا إلى ملف streamlit_app.py. نتحقق من وجود رمز ngrok صالح لتمكين الوصول العام إلى التطبيق من Colab، وإذا كان مفقودًا أو غير صالح، فإننا نرشد أنفسنا إلى خيارات نفق بديلة. يسمح لنا هذا الإعداد بالتفاعل مع وكيل الذكاء الاصطناعي الخاص بنا من أي مكان، كل ذلك ضمن خلايا قليلة في Colab.

def run_in_colab():
    # ... (كود تشغيل التطبيق في Google Colab كما هو موضح في النص الأصلي) ...

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

المصدر: MarkTechPost