Как удалить семантические дубликаты отзывов клиентов с помощью 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