دليل شامل لدمج Dappier AI مع واجهة برمجة تطبيقات دردشة OpenAI

يُقدم هذا الدليل الشامل شرحًا تفصيليًا لكيفية الاستفادة من قوة Dappier AI، وهي مجموعة من أدوات البحث والتوصية في الوقت الحقيقي، لتعزيز تطبيقات الدردشة الخاصة بك. من خلال دمج أداة RealTimeSearchTool المتطورة من Dappier مع أداة AIRecommendationTool الخاصة بها، يمكنك استعلام أحدث المعلومات من جميع أنحاء الويب وعرض اقتراحات مقالات مُخصصة من نماذج البيانات المُخصصة. سنرشدك خطوة بخطوة خلال عملية إعداد بيئة Google Colab، وتثبيت التبعيات، وتحميل مفاتيح واجهة برمجة التطبيقات بأمان، وتهيئة كل وحدة من وحدات Dappier. بعد ذلك، سنقوم بدمج هذه الأدوات مع نموذج دردشة OpenAI (مثل gpt-3.5-turbo)، وإنشاء سلسلة مطالبات قابلة للتجميع، وتنفيذ استعلامات شاملة، وكل ذلك ضمن تسع خلايا دفتر ملاحظات مُوجزة. سواء كنت بحاجة إلى استرجاع أخبار دقيقة أو تنظيم محتوى مدفوع بالذكاء الاصطناعي، يوفر هذا البرنامج الإطار المرن لبناء تجارب دردشة ذكية تعتمد على البيانات.

1. إعداد بيئة العمل وتثبيت التبعيات

نبدأ بتثبيت مكتبات LangChain الأساسية، بالإضافة إلى ملحقات Dappier ودمج المجتمع، جنبًا إلى جنب مع عميل OpenAI الرسمي، وذلك في بيئة Google Colab:

pip install -qU langchain-dappier langchain langchain-openai langchain-community langchain-core openai

بهذه الحزم، سيكون لدينا وصول سلس إلى أدوات البحث والتوصية في الوقت الحقيقي من Dappier، وأحدث بيئات تشغيل LangChain، وواجهة برمجة تطبيقات OpenAI، كل ذلك في بيئة واحدة.

2. تحميل مفاتيح واجهة برمجة التطبيقات بأمان

نقوم بتحميل بيانات اعتماد Dappier و OpenAI API بأمان أثناء وقت التشغيل، لتجنب ترميز المفاتيح الحساسة في دفتر الملاحظات:

import os
from getpass import getpass

os.environ["DAPPIER_API_KEY"] = getpass("أدخل مفتاح Dappier API الخاص بك: ")
os.environ["OPENAI_API_KEY"] = getpass("أدخل مفتاح OpenAI API الخاص بك: ")

باستخدام getpass، تضمن المطالبات بقاء مدخلاتنا مخفية، ووضعها كمتغيرات بيئية يجعلها متاحة لجميع الخلايا اللاحقة دون الكشف عنها في السجلات.

3. تهيئة أداة البحث في الوقت الحقيقي

نقوم باستيراد وحدة البحث في الوقت الحقيقي من Dappier وإنشاء مثيل لـ DappierRealTimeSearchTool:

from langchain_dappier import DappierRealTimeSearchTool

search_tool = DappierRealTimeSearchTool()
print("أداة البحث في الوقت الحقيقي جاهزة:", search_tool)

يؤكد بيان الطباعة أن الأداة قد تم تهيئتها بنجاح وهي جاهزة للتعامل مع طلبات البحث.

4. تهيئة محرك التوصية المدعوم بالذكاء الاصطناعي

نقوم بإعداد محرك التوصية المدعوم بالذكاء الاصطناعي من Dappier عن طريق تحديد نموذج البيانات المُخصص، وعدد المقالات المُشابهة التي سيتم استرجاعها، ونطاق المصدر للسياق:

from langchain_dappier import DappierAIRecommendationTool

recommendation_tool = DappierAIRecommendationTool(
    data_model_id="dm_01j0pb465keqmatq9k83dthx34",
    similarity_top_k=3,
    ref="sportsnaut.com",
    num_articles_ref=2,
    search_algorithm="most_recent",
)
print("أداة التوصية جاهزة:", recommendation_tool)

ستستخدم مثيل DappierAIRecommendationTool الآن خوارزمية “الأحدث” لسحب أفضل المقالات ذات الصلة (هنا، مقالتين) من المرجع المُحدد، وجاهزة لا اقتراحات المحتوى المُدارة بالاستعلامات.

5. إنشاء نموذج دردشة OpenAI وربطه بأداة البحث

نقوم بإنشاء مثيل لنموذج دردشة OpenAI باستخدام gpt-3.5-turbo بدرجة حرارة 0 لضمان استجابات مُتناسقة، ثم نربط أداة البحث التي تم تهيئتها مسبقًا حتى يتمكن LLM من إجراء عمليات بحث في الوقت الحقيقي:

from langchain.chat_models import init_chat_model

llm = init_chat_model(model="gpt-3.5-turbo", model_provider="openai", temperature=0)
llm_with_tools = llm.bind_tools([search_tool])
print(" llm_with_tools جاهز")

6. بناء سلسلة المُطالبات

نقوم ببناء “سلسلة” محادثة عن طريق إنشاء ChatPromptTemplate أولاً، والذي يُدخل التاريخ الحالي في مطالبة النظام ويُحدد فتحات لإدخال المستخدم والرسائل السابقة:

import datetime
from langchain_core.prompts import ChatPromptTemplate

today = datetime.datetime.today().strftime("%Y-%m-%d")
prompt = ChatPromptTemplate(
    [
        ("system", f"نحن مساعدون مفيدون. اليوم هو {today}."),
        ("human", "{user_input}"),
        ("placeholder", "{messages}"),
    ]
)
llm_chain = prompt | llm_with_tools
print(" llm_chain مُنشأ")

من خلال توصيل القالب (|) إلى llm_with_tools، نقوم بإنشاء llm_chain الذي يُهيئ المطالبات تلقائيًا، ويستدعي LLM (مع إمكانية البحث في الوقت الحقيقي)، ويتعامل مع الردود في سير عمل سلس.

7. تعريف سلسلة الأدوات الشاملة

نقوم بتعريف سلسلة أدوات شاملة ترسل أولاً مُطالبتنا إلى LLM (التقاط أي مكالمات أداة مُطلوبة)، ثم تنفيذ تلك المكالمات عبر search_tool.batch، وأخيرًا تغذية كل من رسالة AI الأولية ومخرجات الأداة مرة أخرى إلى LLM للحصول على استجابة مُتكاملة:

from langchain_core.runnables import RunnableConfig, chain

@chain
def tool_chain(user_input: str, config: RunnableConfig):
    ai_msg = llm_chain.invoke({"user_input": user_input}, config=config)
    tool_msgs = search_tool.batch(ai_msg.tool_calls, config=config)
    return llm_chain.invoke(
        {"user_input": user_input, "messages": [ai_msg, *tool_msgs]}, config=config
    )

print(" tool_chain مُعرّف")

يُحول مُزين @chain هذا إلى خط أنابيب واحد قابل للتشغيل، مما يسمح لنا ببساطة باستدعاء tool_chain.invoke(...) للتعامل مع كل من التفكير والبحث في خطوة واحدة.

8. أمثلة على استخدام الأدوات

نُظهر استعلامًا مباشرًا إلى محرك بحث Dappier في الوقت الحقيقي، ونسلط الضوء على كيفية استخدام recommendation_tool و tool_chain:

res = search_tool.invoke({"query": "ماذا حدث في آخر عرض ريسلمانيا"})
print("بحث:", res)

rec = recommendation_tool.invoke({"query": "أحدث أخبار الرياضة"})
print("توصية:", rec)

out = tool_chain.invoke("من فاز بجائزة نوبل الأخيرة؟")
print("مخرجات السلسلة:", out)

9. الخاتمة

لقد قمنا ببناء أساس قوي لدمج إمكانيات Dappier AI في أي سير عمل محادثة. لقد رأينا كيف يُمكن لأداة بحث Dappier في الوقت الحقيقي تمكين LLM الخاص بنا من الوصول إلى حقائق جديدة، بينما تُمكّننا أداة التوصية من تقديم رؤى ذات صلة بالسياق من مصادر بيانات خاصة. من هنا، يمكننا تخصيص معلمات البحث (مثل تحسين مرشحات الاستعلام) أو ضبط إعدادات التوصية (مثل ضبط عتبات التشابه ونطاقات المرجع) لتناسب مجالنا.

المصدر: MarkTechPost