إزالة الازدواج الدلالي باستخدام مكتبة Mirascope ونماذج اللغات الكبيرة

تُعدّ مكتبة Mirascope أداة قوية وسهلة الاستخدام توفر واجهة موحدة للعمل مع مجموعة واسعة من مزودي نماذج اللغات الكبيرة (LLM)، بما في ذلك OpenAI، وAnthropic، وMistral، وGoogle (Gemini و Vertex AI)، وGroq، وCohere، وLiteLLM، وAzure AI، وAmazon Bedrock. تُبسّط Mirascope جميع المهام، بدءًا من توليد النصوص واستخراج البيانات المُنسّقة وصولاً إلى بناء سير عمل معقدة تعمل بالذكاء الاصطناعي وأنظمة الوكلاء. سيتناول هذا الدليل استخدام تكامل Mirascope مع OpenAI للكشف عن وإزالة الازدواج الدلالي (المدخلات التي قد تختلف في الصياغة ولكن تحمل نفس المعنى) من قائمة مراجعات العملاء.

تثبيت التبعيات

استخدم الأمر التالي لتثبيت المكتبة:

pip install "mirascope[openai]"

مفتاح OpenAI

للحصول على مفتاح API الخاص بـ OpenAI، قم بزيارة الرابط التالي: https://platform.openai.com/settings/organization/api-keys وقم بإنشاء مفتاح جديد. إذا كنت مستخدمًا جديدًا، فقد تحتاج إلى إضافة تفاصيل الفوترة وإجراء دفعٍ أولي بحد أدنى 5 دولارات لتنشيط الوصول إلى واجهة برمجة التطبيقات.

قم بتعيين مفتاح API في متغيرات البيئة كالتالي:

import os
from getpass import getpass
os.environ['OPENAI_API_KEY'] = getpass('أدخل مفتاح API الخاص بـ OpenAI: ')

تعريف قائمة مراجعات العملاء

سنستخدم القائمة التالية كمثال:

customer_reviews = [
    "جودة الصوت مذهلة!",
    "الصوت واضح جدًا وغامر.",
    "صوت رائع، خاصةً استجابة الصوتيات المنخفضة.",
    "البطارية لا تدوم كما هو معلن.",
    "تحتاج إلى الشحن كثيرًا.",
    "البطارية تستنزف بسرعة -- ليست مثالية للسفر.",
    "الإعداد كان سهلًا للغاية ومباشرًا.",
    "سهل الاستخدام للغاية، حتى بالنسبة لوالديّ.",
    "واجهة بسيطة وتجربة سلسة.",
    "يشعر بالرخيص وبلاستيكي.",
    "جودة التصنيع يمكن أن تكون أفضل.",
    "تعطل خلال الأسبوع الأول من الاستخدام.",
    "يقول الناس إنهم لا يستطيعون سماع صوتي أثناء المكالمات.",
    "جودة الميكروفون سيئة في اجتماعات Zoom.",
    "منتج رائع مقابل السعر!"
]

تُجسّد هذه المراجعات مشاعر العملاء الرئيسية: الثناء على جودة الصوت وسهولة الاستخدام، والشكاوى حول عمر البطارية، وجودة التصنيع، ومشاكل المكالمات/الميكروفون، بالإضافة إلى ملاحظة إيجابية حول القيمة مقابل المال. تعكس هذه المراجعات المواضيع الشائعة الموجودة في تعليقات المستخدمين الحقيقيين.

تعريف نموذج Pydantic

يُعرّف نموذج Pydantic هذا هيكل استجابة مهمة إزالة الازدواج الدلالي على مراجعات العملاء. يساعد هذا النموذج على تنظيم والتحقق من صحة مخرجات نموذج اللغة الذي تم تكليفه بتجميع أو إزالة ازدواجية المدخلات اللغوية الطبيعية (مثل: تعليقات المستخدمين، تقارير الأخطاء، مراجعات المنتجات).

from pydantic import BaseModel, Field

class DeduplicatedReviews(BaseModel):
    duplicates: list[list[str]] = Field(..., description="قائمة من مجموعات مراجعات العملاء المتكافئة دلاليًا")
    reviews: list[str] = Field(..., description="القائمة المُزال منها الازدواجية لمواضيع التغذية الراجعة الرئيسية للعملاء")

تعريف دالة Mirascope لإزالة الازدواج الدلالي

يُعرّف هذا الكود دالة لإزالة الازدواج الدلالي باستخدام مُزيّن @openai.call من Mirascope، والذي يُمكّن التكامل السلس مع نموذج gpt-4o من OpenAI. تأخذ دالة deduplicate_customer_reviews قائمة مراجعات العملاء وتستخدم موجهًا مُنسّقًا – مُعرّفًا بواسطة مُزيّن @prompt_template – لإرشاد نموذج LLM في تحديد وتجميع المراجعات المتشابهة دلاليًا. تُرشد رسالة النظام النموذج لتحليل معنى ونبرة وقصد كل مراجعة، وتجميع تلك التي تُعبّر عن نفس التغذية الراجعة حتى لو كانت مُصاغّة بشكل مختلف. تتوقع الدالة استجابة مُنسّقة تتوافق مع نموذج Pydantic DeduplicatedReviews، والذي يتضمن مخرجين: قائمة فريدة من مشاعر المراجعات المُزال منها الازدواجية، وقائمة من المكررات المُجمّعة. يضمن هذا التصميم أن تكون مخرجات نموذج LLM دقيقة وقابلة للقراءة آليًا، مما يجعلها مثالية لتحليل تعليقات العملاء، أو إزالة ازدواجية الاستطلاعات، أو تجميع مراجعات المنتجات.

from mirascope.core import openai, prompt_template

@openai.call(model="gpt-4o", response_model=DeduplicatedReviews)
@prompt_template(
    """
    SYSTEM: أنت مساعد ذكاء اصطناعي يساعد في تحليل مراجعات العملاء. مهمتك هي تجميع المراجعات المتشابهة دلاليًا معًا - حتى لو كانت مُصاغّة بشكل مختلف.
    - استخدم فهمك للمعنى، والنبرة، والتلميح لتجميع المكررات.
    - أرجع قائمتين:
    1. قائمة مُزال منها الازدواجية من مشاعر المراجعات الرئيسية المُتميّزة.
    2. قائمة بالمكررات المُجمّعة التي تشترك في نفس التغذية الراجعة الأساسية.
    USER: {reviews}
    """
)
def deduplicate_customer_reviews(reviews: list[str]):
    ... # هنا يتم كتابة منطق الدالة  (لم يتم تقديمه في المثال الأصلي)

تنفيذ الدالة وعرض النتائج

response = deduplicate_customer_reviews(customer_reviews)
# التأكد من صحة تنسيق الاستجابة
assert isinstance(response, DeduplicatedReviews)
# طباعة المخرجات
print("التغذية الراجعة المتميّزة للعملاء:")
for item in response.reviews:
    print("-", item)
print("nالمكررات المُجمّعة:")
for group in response.duplicates:
    print("-", group)

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

(ملاحظة: لم يتم تضمين الكود الكامل للدالة deduplicate_customer_reviews في المثال الأصلي، لذا تم ترك “…” كعلامة مكان.)

المصدر: MarkTechPost