Itinai.com it company office background blured photography by 5fd12c31 5208 4b8e aafe 893f47620ac9 1

Начало работы с Mirascope: Удаление семантических дубликатов с помощью LLM

Itinai.com it company office background blured photography by 5fd12c31 5208 4b8e aafe 893f47620ac9 1

Начало работы с 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 и узнайте, как он может трансформировать ваш бизнес.

Новости в сфере искусственного интеллекта