Перед созданием с Claude

Решите, использовать ли Claude для чата поддержки

Вот несколько ключевых индикаторов того, что вам следует использовать LLM, такую как Claude, для автоматизации частей вашего процесса поддержки клиентов:
Claude превосходно справляется с обработкой большого количества похожих вопросов эффективно, освобождая человеческих агентов для более сложных вопросов.
Claude может быстро извлекать, обрабатывать и объединять информацию из обширных баз знаний, в то время как человеческим агентам может потребоваться время для исследования или консультации с несколькими источниками.
Claude может обеспечивать круглосуточную поддержку без усталости, в то время как укомплектование человеческими агентами для непрерывного покрытия может быть дорогостоящим и сложным.
Claude может справляться с внезапными увеличениями объема запросов без необходимости найма и обучения дополнительного персонала.
Вы можете проинструктировать Claude последовательно представлять тон и ценности вашего бренда, в то время как человеческие агенты могут различаться в своих стилях общения.
Некоторые соображения для выбора Claude над другими LLM:
  • Вы отдаете приоритет естественному, нюансированному разговору: Сложное понимание языка Claude позволяет более естественные, контекстно-осведомленные разговоры, которые ощущаются более человечными, чем чаты с другими LLM.
  • Вы часто получаете сложные и открытые запросы: Claude может обрабатывать широкий спектр тем и запросов без генерации шаблонных ответов или требования обширного программирования перестановок пользовательских высказываний.
  • Вам нужна масштабируемая многоязычная поддержка: Многоязычные возможности Claude позволяют ему участвовать в разговорах на более чем 200 языках без необходимости отдельных чат-ботов или обширных процессов перевода для каждого поддерживаемого языка.

Определите ваше идеальное взаимодействие в чате

Обрисуйте идеальное взаимодействие с клиентом, чтобы определить, как и когда вы ожидаете, что клиент будет взаимодействовать с Claude. Этот план поможет определить технические требования вашего решения. Вот пример взаимодействия в чате для поддержки клиентов автострахования:
  • Клиент: Инициирует опыт чата поддержки
    • Claude: Тепло приветствует клиента и инициирует разговор
  • Клиент: Спрашивает о страховании для своего нового электромобиля
    • Claude: Предоставляет релевантную информацию о покрытии электромобилей
  • Клиент: Задает вопросы, связанные с уникальными потребностями для страхования электромобилей
    • Claude: Отвечает точными и информативными ответами и предоставляет ссылки на источники
  • Клиент: Задает не по теме вопросы, не связанные со страхованием или автомобилями
    • Claude: Уточняет, что не обсуждает несвязанные темы и направляет пользователя обратно к автострахованию
  • Клиент: Выражает интерес к страховой котировке
    • Claude: Задает набор вопросов для определения подходящей котировки, адаптируясь к их ответам
    • Claude: Отправляет запрос на использование API инструмента генерации котировок вместе с необходимой информацией, собранной от пользователя
    • Claude: Получает ответную информацию от использования API инструмента, синтезирует информацию в естественный ответ и представляет предоставленную котировку пользователю
  • Клиент: Задает последующие вопросы
    • Claude: Отвечает на последующие вопросы по мере необходимости
    • Claude: Направляет клиента к следующим шагам в процессе страхования и завершает разговор
В реальном примере, который вы напишете для своего собственного случая использования, вам может быть полезно выписать фактические слова в этом взаимодействии, чтобы вы также могли получить представление об идеальном тоне, длине ответа и уровне детализации, которые вы хотите, чтобы Claude имел.

Разбейте взаимодействие на уникальные задачи

Чат поддержки клиентов - это совокупность множества различных задач, от ответов на вопросы до поиска информации до принятия мер по запросам, завернутых в одно взаимодействие с клиентом. Прежде чем начать строить, разбейте ваше идеальное взаимодействие с клиентом на каждую задачу, которую вы хотите, чтобы Claude мог выполнять. Это гарантирует, что вы можете подсказывать и оценивать Claude для каждой задачи, и дает вам хорошее представление о диапазоне взаимодействий, которые вам нужно учесть при написании тестовых случаев.
Клиенты иногда находят полезным визуализировать это как блок-схему взаимодействия возможных точек перегиба разговора в зависимости от запросов пользователя.
Вот ключевые задачи, связанные с примером взаимодействия страхования выше:
  1. Приветствие и общее руководство
    • Тепло приветствовать клиента и инициировать разговор
    • Предоставить общую информацию о компании и взаимодействии
  2. Информация о продукте
    • Предоставить информацию о покрытии электромобилей
      Это потребует, чтобы Claude имел необходимую информацию в своем контексте, и может подразумевать, что необходима интеграция RAG.
    • Отвечать на вопросы, связанные с уникальными потребностями страхования электромобилей
    • Отвечать на последующие вопросы о котировке или деталях страхования
    • Предлагать ссылки на источники при необходимости
  3. Управление разговором
    • Оставаться по теме (автострахование)
    • Перенаправлять не по теме вопросы обратно к релевантным предметам
  4. Генерация котировок
    • Задавать подходящие вопросы для определения права на котировку
    • Адаптировать вопросы на основе ответов клиента
    • Отправлять собранную информацию в API генерации котировок
    • Представлять предоставленную котировку клиенту

Установите критерии успеха

Работайте с вашей командой поддержки, чтобы определить четкие критерии успеха и написать детальные оценки с измеримыми эталонами и целями. Вот критерии и эталоны, которые могут быть использованы для оценки того, насколько успешно Claude выполняет определенные задачи:
Эта метрика оценивает, насколько точно Claude понимает запросы клиентов по различным темам. Измеряйте это, просматривая выборку разговоров и оценивая, имеет ли Claude правильную интерпретацию намерения клиента, критических следующих шагов, как выглядит успешное разрешение, и многое другое. Стремитесь к точности понимания 95% или выше.
Это оценивает, насколько хорошо ответ Claude адресует конкретный вопрос или проблему клиента. Оцените набор разговоров и оцените релевантность каждого ответа (используя оценку на основе LLM для масштаба). Нацельтесь на оценку релевантности 90% или выше.
Оцените правильность общей информации о компании и продукте, предоставленной пользователю, основываясь на информации, предоставленной Claude в контексте. Нацельтесь на 100% точность в этой вводной информации.
Отслеживайте частоту и релевантность предлагаемых ссылок или источников. Нацельтесь на предоставление релевантных источников в 80% взаимодействий, где дополнительная информация могла бы быть полезной.
Измеряйте, насколько хорошо Claude остается по теме, такой как тема автострахования в нашем примере реализации. Стремитесь к тому, чтобы 95% ответов были напрямую связаны с автострахованием или конкретным запросом клиента.
Измеряйте, насколько успешно Claude определяет, когда генерировать информационный контент и насколько релевантен этот контент. Например, в нашей реализации мы бы определяли, насколько хорошо Claude понимает, когда генерировать котировку и насколько точна эта котировка. Нацельтесь на 100% точность, поскольку это жизненно важная информация для успешного взаимодействия с клиентом.
Это измеряет способность Claude распознавать, когда запрос нуждается в человеческом вмешательстве и эскалировать соответственно. Отслеживайте процент правильно эскалированных разговоров против тех, которые должны были быть эскалированы, но не были. Стремитесь к точности эскалации 95% или выше.
Вот критерии и эталоны, которые могут быть использованы для оценки бизнес-воздействия использования Claude для поддержки:
Это оценивает способность Claude поддерживать или улучшать настроение клиента на протяжении разговора. Используйте инструменты анализа настроения для измерения настроения в начале и конце каждого разговора. Стремитесь к поддержанному или улучшенному настроению в 90% взаимодействий.
Процент запросов клиентов, успешно обработанных чат-ботом без человеческого вмешательства. Обычно стремитесь к коэффициенту отклонения 70-80%, в зависимости от сложности запросов.
Мера того, насколько удовлетворены клиенты своим взаимодействием с чат-ботом. Обычно делается через опросы после взаимодействия. Стремитесь к оценке CSAT 4 из 5 или выше.
Среднее время, которое требуется чат-боту для разрешения запроса. Это сильно варьируется в зависимости от сложности проблем, но в целом стремитесь к более низкому AHT по сравнению с человеческими агентами.

Как реализовать Claude как агента службы поддержки клиентов

Выберите правильную модель Claude

Выбор модели зависит от компромиссов между стоимостью, точностью и временем ответа. Для чата поддержки клиентов claude-opus-4-1-20250805 хорошо подходит для баланса интеллекта, задержки и стоимости. Однако для случаев, где у вас есть поток разговора с несколькими подсказками, включая RAG, использование инструментов и/или подсказки с длинным контекстом, claude-3-haiku-20240307 может быть более подходящим для оптимизации задержки.

Создайте сильную подсказку

Использование Claude для поддержки клиентов требует, чтобы Claude имел достаточно направления и контекста для соответствующего ответа, при этом имея достаточно гибкости для обработки широкого спектра запросов клиентов. Давайте начнем с написания элементов сильной подсказки, начиная с системной подсказки:
IDENTITY = """Вы Ева, дружелюбный и знающий AI-ассистент для страховой компании Acme. 
Ваша роль - тепло приветствовать клиентов и предоставлять информацию о страховых 
предложениях Acme, которые включают автострахование и страхование электромобилей. 
Вы также можете помочь клиентам получить котировки для их страховых потребностей."""
Хотя вас может соблазнить поместить всю вашу информацию внутри системной подсказки как способ отделить инструкции от пользовательского разговора, Claude фактически работает лучше всего с основной частью содержимого подсказки, написанной внутри первого хода User (с единственным исключением - ролевые подсказки). Читайте больше в Предоставление Claude роли с системной подсказкой.
Лучше всего разбивать сложные подсказки на подразделы и писать по одной части за раз. Для каждой задачи вы можете найти больший успех, следуя пошаговому процессу для определения частей подсказки, которые Claude понадобились бы для хорошего выполнения задачи. Для этого примера поддержки клиентов автострахования мы будем писать по частям все части для подсказки, начиная с задачи “Приветствие и общее руководство”. Это также делает отладку вашей подсказки проще, поскольку вы можете быстрее настраивать отдельные части общей подсказки. Мы поместим все эти части в файл под названием config.py.
STATIC_GREETINGS_AND_GENERAL = """
<static_context>
Acme Auto Insurance: Ваш надежный спутник на дороге

О нас:
В Acme Insurance мы понимаем, что ваш автомобиль - это больше, чем просто средство передвижения - это ваш билет к жизненным приключениям. 
С 1985 года мы создаем полисы автострахования, которые дают водителям уверенность исследовать, добираться на работу и путешествовать со спокойствием души.
Независимо от того, навигируете ли вы по городским улицам или отправляетесь в путешествие через всю страну, Acme здесь, чтобы защитить вас и ваш автомобиль. 
Наши инновационные полисы автострахования разработаны для адаптации к вашим уникальным потребностям, покрывая все от мелких аварий до крупных столкновений.
С отмеченным наградами обслуживанием клиентов Acme и быстрым разрешением претензий, вы можете сосредоточиться на радости вождения, пока мы заботимся об остальном. 
Мы не просто поставщик страхования - мы ваш второй пилот в жизненных путешествиях.
Выберите Acme Auto Insurance и испытайте уверенность, которая приходит с превосходным покрытием и искренней заботой. Потому что в Acme мы не просто 
страхуем ваш автомобиль - мы питаем ваши приключения на открытой дороге.

Примечание: Мы также предлагаем специализированное покрытие для электромобилей, гарантируя, что водители всех типов автомобилей могут получить выгоду от нашей защиты.

Acme Insurance предлагает следующие продукты:
- Автострахование
- Страхование электромобилей
- Страхование двухколесных транспортных средств

Часы работы: Понедельник-Пятница, 9:00 - 17:00 EST
Номер службы поддержки клиентов: 1-800-123-4567
</static_context>
"""
Затем мы сделаем то же самое для нашей информации об автостраховании и страховании электромобилей.
STATIC_CAR_INSURANCE="""
<static_context>
Покрытие автострахования:
Полисы автострахования Acme обычно покрывают:
1. Покрытие ответственности: Оплачивает телесные повреждения и ущерб имуществу, которые вы причиняете другим.
2. Покрытие столкновений: Оплачивает ущерб вашему автомобилю в аварии.
3. Комплексное покрытие: Оплачивает ущерб вашему автомобилю от инцидентов, не связанных со столкновениями.
4. Покрытие медицинских платежей: Оплачивает медицинские расходы после аварии.
5. Покрытие незастрахованных/недостаточно застрахованных автомобилистов: Защищает вас, если вас ударит водитель с недостаточным страхованием.

Дополнительные покрытия включают:
- Возмещение аренды автомобиля
- Помощь на дороге
- Замена нового автомобиля
</static_context>
"""

STATIC_ELECTRIC_CAR_INSURANCE="""
<static_context>
Страхование электромобилей:
Наше специализированное страхование электромобилей выходит за рамки традиционного автомобильного покрытия, 
предлагая индивидуальную защиту для ваших высокотехнологичных инвестиций. В дополнение к стандартным покрытиям мы предлагаем:
- Защиту дорогих аккумуляторных систем
- Покрытие домашнего зарядного оборудования
- Адаптацию к быстро развивающемуся миру электромобилей

Независимо от того, водите ли вы Rivian, Nissan Leaf, Chevrolet Bolt, 
или любой другой электромобиль, наши знающие агенты готовы создать полис, 
который дает вам уверенность наслаждаться каждой милей, питаемой электронами.
</static_context>
"""
Теперь, когда у нас есть наш статический контент, давайте добавим по крайней мере 4-5 примеров “хороших” взаимодействий для руководства ответами Claude. Эти примеры должны быть репрезентативными для вашего идеального взаимодействия с клиентом и могут включать ограждения, вызовы инструментов и т.д.
EXAMPLES="""
Вот несколько примеров того, как вы можете взаимодействовать с клиентами:

<example 1>
H: Привет, предлагаете ли вы коммерческое страхование для малого бизнеса?

A: Ах! К сожалению, мы не предлагаем коммерческое страхование в настоящее время. 
Однако мы предоставляем ряд продуктов личного страхования, включая автострахование и страхование электромобилей. 
Хотели бы вы узнать больше об этих предложениях?
</example 1>

<example 2>
H: Привет, каковы ваши часы работы?

A: Наши часы работы - с понедельника по пятницу, с 9:00 до 17:00 EST. 
Если у вас есть вопросы или нужна помощь, не стесняйтесь обращаться в это время. 
Как еще я могу помочь вам сегодня?
</example 2>

<example 3>
H: Я ищу автострахование. Что предлагает Acme?

A: Отличный выбор! Полисы автострахования Acme обычно включают:
- Покрытие ответственности: Защищает вас, если вы виновны в аварии
- Покрытие столкновений: Оплачивает ущерб вашему автомобилю в аварии
- Комплексное покрытие: Покрывает инциденты, не связанные со столкновениями, такие как кража или вандализм
- Покрытие медицинских платежей: Оплачивает медицинские расходы после аварии
- Покрытие незастрахованных/недостаточно застрахованных автомобилистов: Защищает вас от водителей с недостаточным страхованием

Мы также предлагаем дополнительные покрытия, такие как возмещение аренды автомобиля, помощь на дороге и замена нового автомобиля. 
Хотели бы вы больше деталей о любом из этих покрытий, или у вас есть конкретные вопросы о страховании вашего автомобиля?
</example 3>

<example 4>
H: Я хотел бы услышать о вашем страховании электромобилей.

A: Конечно! Наше страхование электромобилей специально разработано для удовлетворения уникальных потребностей владельцев электромобилей. 
В дополнение ко всем стандартным покрытиям, которые мы предлагаем для обычных автомобилей, наши полисы для электромобилей включают:

- Покрытие аккумулятора: Защита от повреждения или деградации дорогой аккумуляторной системы вашего автомобиля
- Технический пакет: Покрывает ремонт или замену передовой электроники и бортовых компьютерных систем
- Покрытие зарядной станции: Защищает как домашнее, так и портативное зарядное оборудование
- Защита кибербезопасности: Покрытие против взлома или цифровых угроз
- Специализированная помощь на дороге: Включает эвакуацию на платформе для защиты днища автомобиля

Мы покрываем широкий спектр электромобилей, включая популярные модели от Tesla, Rivian, Nissan, Chevrolet и других. 
Есть ли конкретный электромобиль, который вы хотите застраховать, или хотели бы больше деталей о любом из этих покрытий?
</example 4>

<example 5>
H: Я хотел бы получить котировку для моего автострахования.

A: Конечно! Я буду рад помочь вам получить котировку для вашего автострахования. 
Чтобы предоставить вам точную котировку, мне нужно собрать некоторую информацию о вашем автомобиле и основном водителе. 
Давайте начнем с основ:

1. Какая марка и модель вашего автомобиля?
2. В каком году он был произведен?
3. Приблизительно сколько миль вы проехали?
4. Каков возраст основного водителя?

Как только вы предоставите эту информацию, я использую наш инструмент котировок для генерации персонализированной котировки страхования для вас.
</example 5>
"""
Вы также захотите включить любые важные инструкции, описывающие что можно и чего нельзя делать в том, как Claude должен взаимодействовать с клиентом. Это может исходить из ограждений бренда или политик поддержки.
ADDITIONAL_GUARDRAILS = """Пожалуйста, придерживайтесь следующих ограждений:
1. Предоставляйте информацию только о типах страхования, перечисленных в наших предложениях.
2. Если спрашивают о типе страхования, который мы не предлагаем, вежливо заявите, 
что мы не предоставляем эту услугу.
3. Не спекулируйте о будущих предложениях продуктов или планах компании.
4. Не давайте обещаний или не заключайте соглашения, на которые не уполномочены.
Вы только предоставляете информацию и руководство.
5. Не упоминайте продукты или услуги любых конкурентов.
"""
Теперь давайте объединим все эти разделы в одну строку для использования в качестве нашей подсказки.
TASK_SPECIFIC_INSTRUCTIONS = ' '.join([
   STATIC_GREETINGS_AND_GENERAL,
   STATIC_CAR_INSURANCE,
   STATIC_ELECTRIC_CAR_INSURANCE,
   EXAMPLES,
   ADDITIONAL_GUARDRAILS,
])

Добавьте динамические и агентские возможности с использованием инструментов

Claude способен предпринимать действия и получать информацию динамически, используя функциональность использования инструментов на стороне клиента. Начните с перечисления любых внешних инструментов или API, которые должна использовать подсказка. Для этого примера мы начнем с одного инструмента для расчета котировки.
Как напоминание, этот инструмент не будет выполнять фактический расчет, он просто сигнализирует приложению, что инструмент должен быть использован с любыми указанными аргументами.
Пример калькулятора котировок страхования:
TOOLS = [{
  "name": "get_quote",
  "description": "Рассчитать котировку страхования на основе пользовательского ввода. Возвращаемое значение - это премия в месяц.",
  "input_schema": {
    "type": "object",
    "properties": {
      "make": {"type": "string", "description": "Марка автомобиля."},
      "model": {"type": "string", "description": "Модель автомобиля."},
      "year": {"type": "integer", "description": "Год производства автомобиля."},
      "mileage": {"type": "integer", "description": "Пробег автомобиля."},
      "driver_age": {"type": "integer", "description": "Возраст основного водителя."}
    },
    "required": ["make", "model", "year", "mileage", "driver_age"]
  }
}]

def get_quote(make, model, year, mileage, driver_age):
    """Возвращает премию в месяц в долларах США"""
    # Вы можете вызвать http-эндпоинт или базу данных для получения котировки.
    # Здесь мы симулируем задержку в 1 секунду и возвращаем фиксированную котировку 100.
    time.sleep(1)
    return 100

Разверните ваши подсказки

Трудно знать, насколько хорошо работает ваша подсказка, не развернув ее в тестовой производственной среде и не запустив оценки, поэтому давайте создадим небольшое приложение, используя нашу подсказку, Anthropic SDK и streamlit для пользовательского интерфейса. В файле под названием chatbot.py начните с настройки класса ChatBot, который будет инкапсулировать взаимодействия с Anthropic SDK. Класс должен иметь два основных метода: generate_message и process_user_input.
from anthropic import Anthropic
from config import IDENTITY, TOOLS, MODEL, get_quote
from dotenv import load_dotenv

load_dotenv()

class ChatBot:
   def __init__(self, session_state):
       self.anthropic = Anthropic()
       self.session_state = session_state

   def generate_message(
       self,
       messages,
       max_tokens,
   ):
       try:
           response = self.anthropic.messages.create(
               model=MODEL,
               system=IDENTITY,
               max_tokens=max_tokens,
               messages=messages,
               tools=TOOLS,
           )
           return response
       except Exception as e:
           return {"error": str(e)}

   def process_user_input(self, user_input):
       self.session_state.messages.append({"role": "user", "content": user_input})

       response_message = self.generate_message(
           messages=self.session_state.messages,
           max_tokens=2048,
       )

       if "error" in response_message:
           return f"Произошла ошибка: {response_message['error']}"

       if response_message.content[-1].type == "tool_use":
           tool_use = response_message.content[-1]
           func_name = tool_use.name
           func_params = tool_use.input
           tool_use_id = tool_use.id

           result = self.handle_tool_use(func_name, func_params)
           self.session_state.messages.append(
               {"role": "assistant", "content": response_message.content}
           )
           self.session_state.messages.append({
               "role": "user",
               "content": [{
                   "type": "tool_result",
                   "tool_use_id": tool_use_id,
                   "content": f"{result}",
               }],
           })

           follow_up_response = self.generate_message(
               messages=self.session_state.messages,
               max_tokens=2048,
           )

           if "error" in follow_up_response:
               return f"Произошла ошибка: {follow_up_response['error']}"

           response_text = follow_up_response.content[0].text
           self.session_state.messages.append(
               {"role": "assistant", "content": response_text}
           )
           return response_text
      
       elif response_message.content[0].type == "text":
           response_text = response_message.content[0].text
           self.session_state.messages.append(
               {"role": "assistant", "content": response_text}
           )
           return response_text
      
       else:
           raise Exception("Произошла ошибка: Неожиданный тип ответа")

   def handle_tool_use(self, func_name, func_params):
       if func_name == "get_quote":
           premium = get_quote(**func_params)
           return f"Котировка сгенерирована: ${premium:.2f} в месяц"
      
       raise Exception("Был использован неожиданный инструмент")

Создайте ваш пользовательский интерфейс

Протестируйте развертывание этого кода с Streamlit, используя основной метод. Эта функция main() настраивает интерфейс чата на основе Streamlit. Мы сделаем это в файле под названием app.py
import streamlit as st
from chatbot import ChatBot
from config import TASK_SPECIFIC_INSTRUCTIONS

def main():
   st.title("Чат с Евой, ассистентом страховой компании Acme🤖")

   if "messages" not in st.session_state:
       st.session_state.messages = [
           {'role': "user", "content": TASK_SPECIFIC_INSTRUCTIONS},
           {'role': "assistant", "content": "Понятно"},
       ]

   chatbot = ChatBot(st.session_state)

   # Отображать сообщения пользователя и ассистента, пропуская первые два
   for message in st.session_state.messages[2:]:
       # игнорировать блоки использования инструментов
       if isinstance(message["content"], str):
           with st.chat_message(message["role"]):
               st.markdown(message["content"])

   if user_msg := st.chat_input("Введите ваше сообщение здесь..."):
       st.chat_message("user").markdown(user_msg)

       with st.chat_message("assistant"):
           with st.spinner("Ева думает..."):
               response_placeholder = st.empty()
               full_response = chatbot.process_user_input(user_msg)
               response_placeholder.markdown(full_response)

if __name__ == "__main__":
   main()
Запустите программу с:
streamlit run app.py

Оцените ваши подсказки

Подсказки часто требуют тестирования и оптимизации, чтобы быть готовыми к производству. Чтобы определить готовность вашего решения, оцените производительность чат-бота, используя систематический процесс, сочетающий количественные и качественные методы. Создание сильной эмпирической оценки на основе ваших определенных критериев успеха позволит вам оптимизировать ваши подсказки.
Консоль Claude теперь включает инструмент оценки, который позволяет вам тестировать ваши подсказки в различных сценариях.

Улучшите производительность

В сложных сценариях может быть полезно рассмотреть дополнительные стратегии для улучшения производительности помимо стандартных техник инженерии подсказок и стратегий реализации ограждений. Вот некоторые распространенные сценарии:

Уменьшите задержку длинного контекста с RAG

При работе с большими объемами статического и динамического контекста включение всей информации в подсказку может привести к высоким затратам, более медленному времени ответа и достижению лимитов окна контекста. В этом сценарии реализация техник Retrieval Augmented Generation (RAG) может значительно улучшить производительность и эффективность. Используя модели эмбеддингов, такие как Voyage, для преобразования информации в векторные представления, вы можете создать более масштабируемую и отзывчивую систему. Этот подход позволяет динамическое извлечение релевантной информации на основе текущего запроса, а не включение всего возможного контекста в каждую подсказку. Реализация RAG для случаев использования поддержки рецепт RAG показала увеличение точности, сокращение времени ответа и снижение затрат на API в системах с обширными требованиями к контексту.

Интегрируйте данные в реальном времени с использованием инструментов

При работе с запросами, которые требуют информации в реальном времени, такой как балансы счетов или детали полисов, подходы RAG на основе эмбеддингов недостаточны. Вместо этого вы можете использовать использование инструментов для значительного улучшения способности вашего чат-бота предоставлять точные ответы в реальном времени. Например, вы можете использовать использование инструментов для поиска информации о клиенте, извлечения деталей заказа и отмены заказов от имени клиента. Этот подход, описанный в нашем рецепте использования инструментов: агент службы поддержки клиентов, позволяет вам бесшовно интегрировать живые данные в ответы Claude и обеспечить более персонализированный и эффективный опыт клиента.

Укрепите входные и выходные ограждения

При развертывании чат-бота, особенно в сценариях службы поддержки клиентов, крайне важно предотвратить риски, связанные с неправильным использованием, запросами вне области и неподходящими ответами. Хотя Claude по своей природе устойчив к таким сценариям, вот дополнительные шаги для укрепления ограждений вашего чат-бота:
  • Уменьшите галлюцинации: Реализуйте механизмы проверки фактов и цитаты для обоснования ответов в предоставленной информации.
  • Перекрестная проверка информации: Убедитесь, что ответы агента соответствуют политикам вашей компании и известным фактам.
  • Избегайте договорных обязательств: Убедитесь, что агент не дает обещаний или не заключает соглашения, на которые не уполномочен.
  • Смягчите джейлбрейки: Используйте методы, такие как экраны безвредности и валидация ввода, для предотвращения эксплуатации пользователями уязвимостей модели, направленных на генерацию неподходящего контента.
  • Избегайте упоминания конкурентов: Реализуйте фильтр упоминания конкурентов для поддержания фокуса на бренде и не упоминания продуктов или услуг любых конкурентов.
  • Держите Claude в характере: Предотвратите изменение Claude своего стиля или контекста, даже во время длинных, сложных взаимодействий.
  • Удалите персонально идентифицируемую информацию (PII): Если не требуется явно и не авторизовано, удалите любую PII из ответов.

Уменьшите воспринимаемое время ответа с потоковой передачей

При работе с потенциально длинными ответами реализация потоковой передачи может значительно улучшить вовлеченность и удовлетворенность пользователей. В этом сценарии пользователи получают ответ прогрессивно вместо ожидания генерации всего ответа. Вот как реализовать потоковую передачу:
  1. Используйте Anthropic Streaming API для поддержки потоковых ответов.
  2. Настройте ваш фронтенд для обработки входящих фрагментов текста.
  3. Отображайте каждый фрагмент по мере поступления, симулируя печатание в реальном времени.
  4. Реализуйте механизм для сохранения полного ответа, позволяя пользователям просматривать его, если они уходят и возвращаются.
В некоторых случаях потоковая передача позволяет использование более продвинутых моделей с более высокими базовыми задержками, поскольку прогрессивное отображение смягчает воздействие более длительного времени обработки.

Масштабируйте ваш чат-бот

По мере роста сложности вашего чат-бота архитектура вашего приложения может развиваться, чтобы соответствовать. Прежде чем добавлять дополнительные слои к вашей архитектуре, рассмотрите следующие менее исчерпывающие варианты:
  • Убедитесь, что вы максимально используете ваши подсказки и оптимизируете через инженерию подсказок. Используйте наши руководства по инженерии подсказок для написания наиболее эффективных подсказок.
  • Добавьте дополнительные инструменты к подсказке (которые могут включать цепочки подсказок) и посмотрите, можете ли вы достичь требуемой функциональности.
Если ваш чат-бот обрабатывает невероятно разнообразные задачи, вы можете рассмотреть добавление отдельного классификатора намерений для маршрутизации первоначального запроса клиента. Для существующего приложения это включало бы создание дерева решений, которое маршрутизировало бы запросы клиентов через классификатор, а затем к специализированным разговорам (с их собственным набором инструментов и системных подсказок). Обратите внимание, этот метод требует дополнительного вызова Claude, который может увеличить задержку.

Интегрируйте Claude в ваш рабочий процесс поддержки

Хотя наши примеры сосредоточились на функциях Python, вызываемых в среде Streamlit, развертывание Claude для чат-бота поддержки в реальном времени требует API-сервиса. Вот как вы можете подойти к этому:
  1. Создайте API-обертку: Разработайте простую API-обертку вокруг вашей функции классификации. Например, вы можете использовать Flask API или Fast API для обертывания вашего кода в HTTP-сервис. Ваш HTTP-сервис мог бы принимать пользовательский ввод и возвращать ответ ассистента в полном объеме. Таким образом, ваш сервис мог бы иметь следующие характеристики:
    • Server-Sent Events (SSE): SSE позволяет потоковую передачу ответов от сервера к клиенту в реальном времени. Это крайне важно для обеспечения плавного, интерактивного опыта при работе с LLM.
    • Кэширование: Реализация кэширования может значительно улучшить время ответа и сократить ненужные вызовы API.
    • Сохранение контекста: Поддержание контекста, когда пользователь уходит и возвращается, важно для непрерывности в разговорах.
  2. Создайте веб-интерфейс: Реализуйте удобный веб-интерфейс для взаимодействия с агентом, работающим на Claude.