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

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

Вот некоторые ключевые показатели того, что вам следует использовать LLM, такую как 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 в качестве агента службы поддержки клиентов

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

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

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

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

Использование Claude для поддержки клиентов требует, чтобы Claude имел достаточно указаний и контекста для соответствующего ответа, при этом имея достаточную гибкость для обработки широкого спектра запросов клиентов.

Давайте начнем с написания элементов сильной подсказки, начиная с системной подсказки:

IDENTITY = """Вы Ева, дружелюбный и знающий ИИ-ассистент компании Acme Insurance 
Company. Ваша роль — тепло приветствовать клиентов и предоставлять информацию о 
страховых предложениях 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):
    """Возвращает ежемесячную премию в USD"""
    # Вы можете вызвать конечную точку http или базу данных для получения предложения.
    # Здесь мы симулируем задержку в 1 секунду и возвращаем фиксированное предложение в 100.
    time.sleep(1)
    return 100

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

Трудно узнать, насколько хорошо работает ваша подсказка, не развернув ее в тестовой производственной среде и не проведя оценки, поэтому давайте создадим небольшое приложение, используя нашу подсказку, SDK Anthropic и streamlit для пользовательского интерфейса.

В файле с названием chatbot.py начните с настройки класса ChatBot, который будет инкапсулировать взаимодействия с SDK Anthropic.

Класс должен иметь два основных метода: 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 Insurance🤖")

   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

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

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

Консоль Anthropic теперь включает инструмент оценки, который позволяет тестировать ваши подсказки в различных сценариях.

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

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

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

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

Используя модели встраивания, такие как Voyage для преобразования информации в векторные представления, вы можете создать более масштабируемую и отзывчивую систему. Этот подход позволяет динамически извлекать релевантную информацию на основе текущего запроса, а не включать весь возможный контекст в каждую подсказку.

Реализация RAG для случаев использования поддержки рецепт RAG показала увеличение точности, сокращение времени отклика и снижение затрат на API в системах с обширными требованиями к контексту.

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

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

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

Усильте ограничения ввода и вывода

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

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

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

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

Вот как реализовать потоковую передачу:

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

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

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

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

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

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

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

Хотя наши примеры были сосредоточены на функциях Python, вызываемых в среде Streamlit, развертывание Claude для чат-бота поддержки в реальном времени требует сервиса API.

Вот как вы можете подойти к этому:

  1. Создайте обертку API: Разработайте простую обертку API вокруг вашей функции классификации. Например, вы можете использовать Flask API или Fast API для обертывания вашего кода в HTTP-сервис. Ваш HTTP-сервис может принимать ввод пользователя и возвращать ответ ассистента полностью. Таким образом, ваш сервис может иметь следующие характеристики:

    • События, отправляемые сервером (SSE): SSE позволяет передавать ответы в реальном времени от сервера к клиенту. Это критически важно для обеспечения плавного, интерактивного опыта при работе с LLM.
    • Кэширование: Реализация кэширования может значительно улучшить время отклика и уменьшить ненужные вызовы API.
    • Сохранение контекста: Поддержание контекста, когда пользователь уходит и возвращается, важно для непрерывности в разговорах.
  2. Создайте веб-интерфейс: Реализуйте удобный веб-интерфейс для взаимодействия с агентом, работающим на Claude.