Начало работы с Mirascope: Устранение семантических дубликатов с помощью LLM
Mirascope — это мощная и удобная библиотека, которая предоставляет единый интерфейс для работы с различными провайдерами больших языковых моделей (LLM), включая OpenAI, Anthropic, Mistral, Google (Gemini и Vertex AI), Groq, Cohere, LiteLLM, Azure AI и Amazon Bedrock. Она упрощает все — от генерации текста и извлечения структурированных данных до создания сложных рабочих процессов и систем агентов, основанных на ИИ.
Практическое применение Mirascope для удаления семантических дубликатов
В этой статье мы сосредоточимся на использовании интеграции OpenAI с Mirascope для выявления и удаления семантических дубликатов — записей, которые могут отличаться по формулировке, но имеют одинаковое значение. Это особенно актуально для анализа отзывов клиентов, где важно выделить ключевые моменты без избыточности.
Установка зависимостей
Чтобы установить Mirascope с поддержкой OpenAI, выполните следующую команду:
pip install "mirascope[openai]"
Получение ключа OpenAI
Для получения ключа API OpenAI посетите страницу OpenAI 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 для семантической дедупликации
Этот код определяет функцию семантической дедупликации с использованием декоратора @openai.call Mirascope, который позволяет бесшовную интеграцию с моделью gpt-4o от OpenAI. Функция deduplicate_customer_reviews
принимает список отзывов клиентов и использует структурированный запрос, чтобы направить 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]): ...
Выполнение функции дедупликации
Следующий код выполняет функцию deduplicate_customer_reviews
с использованием списка отзывов клиентов и выводит структурированный результат:
response = deduplicate_customer_reviews(customer_reviews)
# Проверка формата ответа
assert isinstance(response, DeduplicatedReviews)
# Печать вывода
print("Отличительная обратная связь клиентов:")
for item in response.reviews:
print("-", item)
print("Группированные дубликаты:")
for group in response.duplicates:
print("-", group)
Результаты и выводы
Вывод показывает чистое резюме отзывов клиентов, группируя семантически схожие отзывы. Раздел «Отличительная обратная связь клиентов» выделяет ключевые идеи, в то время как раздел «Группированные дубликаты» захватывает различные формулировки одного и того же мнения. Это помогает исключить избыточность и упрощает анализ обратной связи.
Таким образом, использование Mirascope для удаления семантических дубликатов открывает новые горизонты в анализе данных, позволяя компаниям более эффективно обрабатывать отзывы и улучшать свои продукты и услуги. Задайтесь вопросом: а что, если вы сможете сократить время на анализ и повысить качество обратной связи? Попробуйте Mirascope и узнайте, как он может трансформировать ваш бизнес.