<НА ГЛАВНУЮ

Как удалить семантические дубликаты отзывов клиентов с помощью Mirascope и LLM

Узнайте, как с помощью Mirascope и модели GPT-4o от OpenAI выявлять и удалять семантические дубликаты в отзывах клиентов для улучшения анализа обратной связи.

Обзор возможностей Mirascope

Mirascope — это универсальная и удобная библиотека, которая предоставляет единый интерфейс для работы с различными провайдерами больших языковых моделей (LLM), включая OpenAI, Anthropic, Mistral, Google (Gemini и Vertex AI), Groq, Cohere, LiteLLM, Azure AI и Amazon Bedrock. Она упрощает задачи от генерации текста и извлечения структурированных данных до построения сложных AI-рабочих процессов и агентских систем.

Использование Mirascope для удаления семантических дубликатов

В этом руководстве мы сосредоточимся на использовании интеграции Mirascope с OpenAI для выявления и удаления семантических дубликатов из списка отзывов клиентов. Семантические дубликаты — это записи, которые отличаются формулировкой, но несут одинаковый смысл.

Установка зависимостей

Для начала установите Mirascope с поддержкой OpenAI:

pip install "mirascope[openai]"

Настройка ключа OpenAI API

Получите ключ OpenAI API на https://platform.openai.com/settings/organization/api-keys. Новым пользователям может потребоваться добавить данные для оплаты и внести минимальный платеж $5 для активации доступа к API.

Установите ключ в переменные окружения:

import os
from getpass import getpass
os.environ['OPENAI_API_KEY'] = getpass('Введите ключ OpenAI API: ')

Определение списка отзывов клиентов

Пример списка отзывов, отражающих различные мнения:

customer_reviews = [
    "Качество звука потрясающее!",
    "Аудио кристально чистое и очень захватывающее.",
    "Невероятный звук, особенно басы.",
    "Батарея не держит заряд, как заявлено.",
    "Приходится часто заряжать.",
    "Быстро садится батарея — не подходит для путешествий.",
    "Настройка была очень простой и понятной.",
    "Очень удобен в использовании, даже для моих родителей.",
    "Простой интерфейс и плавный опыт работы.",
    "Кажется дешевым и пластиковым.",
    "Качество сборки могло бы быть лучше.",
    "Сломался в первую неделю использования.",
    "Люди говорят, что меня не слышно во время звонков.",
    "Качество микрофона ужасное на Zoom-встречах.",
    "Отличный продукт за свою цену!"
]

Эти отзывы отражают ключевые темы: похвала звуку и удобству, жалобы на батарею, качество сборки и проблемы с микрофоном, а также положительную оценку цены.

Создание Pydantic-схемы для дедупликации

Pydantic-модель определяет структуру ответа задачи по семантической дедупликации отзывов, включая сгруппированные дубликаты и список уникальных отзывов:

from pydantic import BaseModel, Field
 
class DeduplicatedReviews(BaseModel):
    duplicates: list[list[str]] = Field(
        ..., description="Список групп семантически эквивалентных отзывов клиентов"
    )
    reviews: list[str] = Field(
        ..., description="Список уникальных ключевых отзывов после дедупликации"
    )

Определение функции семантической дедупликации

С помощью декоратора @openai.call и модели GPT-4o определяем функцию, которая группирует схожие по смыслу отзывы:

from mirascope.core import openai, prompt_template
 
@openai.call(model="gpt-4o", response_model=DeduplicatedReviews)
@prompt_template(
    """
    SYSTEM:
    Вы AI-помощник, который помогает анализировать отзывы клиентов.
    Ваша задача — сгруппировать семантически похожие отзывы, даже если они сформулированы по-разному.
 
    - Используйте понимание смысла, тона и подтекста для группировки дубликатов.
    - Верните два списка:
      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)

Результат представляет собой компактное резюме отзывов, сгруппированных по смыслу, что упрощает анализ, устраняя повторения.

Функция семантической дедупликации в Mirascope помогает бизнесам эффективно обрабатывать обратную связь и получать более чистые и понятные данные.

🇬🇧

Switch Language

Read this article in English

Switch to English