Claude 공통 사용 사례 가이드: 고객 지원 상담원

AI 실습 튜토리얼11개월 전 업데이트 AI 공유 서클
10K 00

이 가이드에서는 다음을 활용하는 방법을 설명합니다. Claude 의 고급 대화 기능은 실시간으로 고객 문의를 처리하고, 연중무휴 24시간 지원을 제공하며, 대기 시간을 줄이고, 정확한 응답과 사전 예방적 상호 작용으로 대량의 지원 요청을 관리합니다.

클로드와 함께 빌드하기 전

지원 채팅에 클로드 사용 여부 결정하기

다음은 고객 지원 프로세스 중 일부를 자동화하기 위해 Claude와 같은 LLM을 사용해야 하는 몇 가지 주요 지표입니다:

많은 수의 반복 쿼리

Claude는 많은 수의 유사한 문제를 효율적으로 처리하는 데 특화되어 있어 상담원이 더 복잡한 문제를 해결할 수 있도록 지원합니다.

신속한 정보 통합의 필요성

인간 상담원은 조사를 수행하거나 여러 소스를 참조하는 데 시간이 필요한 반면, Claude는 방대한 지식 기반에서 정보를 신속하게 검색, 처리 및 통합할 수 있습니다.

연중무휴 24시간 가용성 요구 사항

클라우드는 지치지 않고 연중무휴 24시간 지원을 제공할 수 있는 반면, 사람 상담원에게 지속적인 서비스를 제공하는 것은 비용이 많이 들고 어려울 수 있습니다.

피크 기간 동안의 빠른 확장

Claude는 직원을 추가로 고용하고 교육할 필요 없이 갑작스러운 문의량 증가를 처리할 수 있습니다.

일관된 브랜드 목소리

클라우드는 브랜드의 톤과 가치를 일관되게 표현하도록 지시할 수 있지만, 인간 상담원은 커뮤니케이션 스타일이 다를 수 있습니다.

다른 LLM보다 Claude를 선택할 때 고려해야 할 몇 가지 요소입니다:

  • 자연스럽고 미묘한 대화를 우선시하는 경우: Claude의 정교한 언어 이해력을 통해 다른 LLM과의 채팅보다 더 자연스럽고 맥락에 맞는 대화가 가능하며, 인간과의 상호작용에 더 가깝습니다.
  • 복잡하고 개방적인 질문을 자주 받는데, Claude는 상용구 응답을 생성하거나 광범위한 사용자 말투를 작성할 필요 없이 다양한 주제와 쿼리를 처리할 수 있습니다.
  • 확장 가능한 다국어 지원: Claude의 다국어 기능을 사용하면 지원 언어별로 별도의 챗봇을 설정하거나 광범위한 번역 프로세스를 거치지 않고도 200개 이상의 언어로 대화할 수 있습니다.

이상적인 채팅 상호작용 정의하기

이상적인 고객 상호 작용의 개요를 작성하여 고객이 언제 어떻게 클로드와 상호 작용할지 정의하세요. 이 개요는 솔루션의 기술적 요구 사항을 정의하는 데 도움이 됩니다.

다음은 자동차 보험 고객 지원용 채팅 대화 예시입니다:

  • 고객지원 채팅 환경 시작하기
    • Claude고객을 따뜻하게 맞이하고 대화 시작하기
  • 고객새 전기차를 위한 보험에 대해 문의하세요.
    • Claude전기자동차 보험에 대한 정보 제공
  • 고객전기 자동차 보험의 특별 요구 사항과 관련된 질문하기
    • Claude관련 출처에 대한 링크를 통해 정확하고 유용한 답변 제공
  • 고객보험이나 자동차와 관련이 없는 주제에서 벗어난 질문하기
    • Claude관련 없는 주제에 대해 논의하지 않는다는 점을 명확히 하고 고객을 자동차 보험 관련 콘텐츠로 다시 안내합니다.
  • 고객보험 견적에 대한 관심 표명
    • Claude적절한 견적을 결정하기 위해 일련의 질문을 하고 고객의 답변에 따라 견적을 조정합니다.
    • Claude고객으로부터 수집한 필수 정보와 함께 견적 생성 API 도구에 요청을 보냅니다.
    • ClaudeAPI 도구에서 응답 정보를 받아 자연스러운 답변으로 합성하여 고객에게 견적 제공
  • 고객후속 질문
    • Claude필요에 따라 후속 질문에 답변
    • Claude고객에게 보험 절차의 다음 단계로 안내하고 대화를 종료합니다.

자신의 사용 사례에 대한 실제 예시를 작성할 때 대화에 사용된 실제 단어를 적어두면 클로드의 이상적인 어조, 응답 길이 및 필요한 세부 수준을 파악하는 데 도움이 될 수 있습니다.

상호작용을 개별 작업으로 세분화

고객 지원 채팅은 질문에 답하고, 정보를 검색하고, 요청 작업을 처리하는 등 여러 가지 작업으로 구성되어 있으며, 이 모든 작업을 하나의 완전한 고객 상호작용으로 통합합니다. 구축을 시작하기 전에 이상적인 고객 상호작용을 클로드가 수행해야 하는 각 작업으로 세분화하세요. 이렇게 하면 각 작업에 대해 클로드에게 메시지를 표시하고 평가할 수 있으며 테스트 케이스를 작성할 때 고려해야 할 상호 작용의 범위를 잘 이해할 수 있습니다.

클라이언트는 이 프로세스를 사용자 요청에 따라 가능한 대화 분기점을 보여주는 인터랙션 순서도로 시각화하는 것이 도움이 될 때가 있습니다.

다음은 위의 보험 상호 작용과 관련된 주요 작업입니다:

  1. 환영 및 일반 안내
    • 고객을 따뜻하게 맞이하고 대화 시작하기
    • 회사 및 상호 작용에 대한 기본 정보 제공
  2. 제품 정보
    • 전기차 보험에 대한 정보 제공 이것은 Claude가 상황에 필요한 정보를 갖도록 하기 위해 수행되어야 하며, 다음과 같은 정보가 필요할 수 있습니다. RAG 통합.
    • 전기 자동차 보험의 특수 요구 사항과 관련된 질문에 대한 답변
    • 견적 또는 보험 세부 정보에 대한 후속 질문에 답변하기
    • 적절한 경우 관련 소스에 대한 링크를 제공합니다.
  3. 대화 관리
    • 주제에 집중하기(자동차 보험)
    • 주제에서 벗어난 질문을 관련 주제로 다시 유도하기
  4. 견적 생성
    • 적절한 질문을 통해 오퍼의 적격성을 판단하세요.
    • 고객 응답에 따라 질문 조정하기
    • 수집된 정보를 견적 생성 API에 제출하세요.
    • 생성된 견적을 고객에게 제공

성공 기준 설정

지원 팀과 협력하여명확한 성공 기준 정의를 클릭하고 정량화 가능한 벤치마크와 목표가 포함된 보고서를 작성하세요.세부 평가.

다음은 정의된 작업을 성공적으로 수행한 Claude를 평가하기 위한 기준과 벤치마크입니다:

쿼리 이해 정확도

이 메트릭은 다양한 주제에 대한 고객 문의에 대한 클로드의 이해도를 평가합니다. 고객의 의도, 중요한 다음 단계, 성공적인 솔루션 등에 대한 Claude의 이해도는 대화 샘플을 검토하여 평가합니다. 목표는 95% 이상의 이해 정확도를 달성하는 것입니다.

관련성

클로드의 답변이 고객의 특정 문제를 해결하는 데 효과적인지 평가합니다. 일련의 대화를 평가하고 각 응답의 관련성을 평가합니다(대규모 언어 모델에 기반한 채점 시스템을 사용한 대규모 평가). 목표 관련성 점수는 90% 이상입니다.

응답 정확도

제공된 컨텍스트 정보를 기반으로 클로드에게 제공된 회사 및 제품 정보의 정확도를 평가합니다. 목표는 이 리드 정보에 대해 100%의 정확도를 달성하는 것입니다.

인용을 통해 제공되는 관련성

제공된 링크 또는 리소스의 빈도 및 관련성을 추적합니다. 목표는 추가 정보가 필요한 80% 상호 작용에서 관련 리소스를 제공하는 것입니다.

테마 준수

자동차 보험 예시 구현에서와 같이 대화 중에 클로드가 주제를 유지하는지를 평가하고 자동차 보험 또는 고객별 질문에 대한 클로드의 응답을 평가합니다. 목표는 95%의 응답이 자동차 보험 또는 고객별 쿼리와 직접적으로 연관되는 것입니다.

콘텐츠 생성의 효율성

메시지 콘텐츠 생성 시기와 콘텐츠의 관련성에 대한 클로드의 성공 여부를 평가합니다. 예를 들어, 구현에서는 견적을 생성하는 시기와 그 정확성에 대한 Claude의 이해도를 평가합니다. 이는 성공적인 고객 상호작용을 위한 중요한 정보이므로 목표는 100% 정확도입니다.

업그레이드 효율성

이는 사람의 개입이 필요한 쿼리를 식별하고 적절한 경우 이를 에스컬레이션하는 Claude의 능력을 측정합니다. 올바르게 에스컬레이션된 대화와 에스컬레이션되었어야 하지만 에스컬레이션되지 않은 대화의 비율을 추적합니다. 목표는 에스컬레이션 정확도 95% 이상입니다.

다음은 Claude를 사용하여 지원을 받는 것이 비즈니스에 미치는 영향을 평가하기 위한 기준 및 벤치마크입니다:

정서적 유지

대화 내내 고객 감정을 유지하거나 개선하는 클로드의 능력을 평가합니다. 감정 분석 도구를 사용하여 각 대화의 시작과 끝에서 감정 상태를 측정합니다. 목표는 90%의 상호 작용에서 감정이 유지되거나 개선되는 것입니다.

전환율

사람의 개입 없이 챗봇이 성공적으로 처리한 고객 문의의 비율입니다. 일반적으로 목표는 문의의 복잡성에 따라 70%-80%의 분류율입니다.

고객 만족도 평가

챗봇과의 상호작용에 대한 고객 만족도를 측정합니다. 보통 상호작용 후 설문조사를 통해 이루어집니다. 목표는 5점 만점에 4점 이상의 고객 만족도 점수입니다.

평균 처리 시간

챗봇이 문의를 해결하는 데 걸리는 평균 시간입니다. 이 시간은 질문의 복잡성에 따라 크게 달라지지만, 전반적인 목표는 평균 처리 시간을 사람 고객 서비스보다 짧게 만드는 것입니다.

클라우드를 고객 서비스 상담원으로 구현하는 방법

적합한 Claude 모델 선택

모델 선택은 비용, 정확성, 응답 시간 간의 균형에 따라 달라집니다.

고객 지원 채팅의 경우claude-3-5-sonnet-20240620 인텔리전스, 지연 시간 및 비용의 균형을 맞추는 데 이상적입니다. 그러나 대화에 여러 개의 프롬프트가 포함되어 있는 경우(RAG, 도구 사용 및/또는 긴 문맥 프롬프트 포함)claude-3-haiku-20240307 지연 시간을 최적화하는 것이 더 나을 수 있습니다.

강력한 단서 단어 만들기

클라우드를 고객 지원에 사용하려면 클라우드는 상황에 맞게 적절히 대응할 수 있는 방향성과 유연성을 갖추고 있어야 하며, 다양한 고객 문의를 처리할 수 있을 만큼 유연해야 합니다.

시스템 단서부터 시작하여 강력한 단서를 작성하는 요소부터 살펴보겠습니다:

IDENTITY = """你是 Eva,一位友好且知识渊博的 Acme 保险公司 AI 助手。你的角色是热情地欢迎客户,并提供有关 Acme 保险产品的信息,包括车险和电动车险。你还可以帮助客户获取他们的保险需求报价。"""

사용자 대화와 지침을 분리하기 위해 시스템 프롬프트에 모든 정보를 넣을 수도 있지만, Claude는 실제로 대부분의 프롬프트 내용을 첫 번째 라운드에 넣습니다. User 중간에 있을 때 가장 성능이 좋습니다(단, 문자 프롬프트는 예외). 자세한 내용은 다음을 참조하세요. 시스템 프롬프트를 사용하여 Claude에게 역할을 할당합니다..

복잡한 단서를 하위 부분으로 나누고 한 번에 한 부분씩 작성하는 것이 가장 좋습니다. 각 작업에 대해 클로드가 해당 작업을 완료하는 데 필요한 프롬프트의 부분을 점진적으로 정의하면 더 나은 결과를 얻을 수 있습니다. 예를 들어 자동차 보험 고객 지원의 경우 '인사말 및 일반 안내' 작업부터 시작하여 단계적으로 프롬프트를 작성할 것입니다. 이렇게 하면 전체 프롬프트의 개별 부분을 더 빠르게 조정할 수 있으므로 프롬프트를 더 쉽게 디버깅할 수 있습니다.

이 모든 섹션을 다음과 같은 파일에 넣습니다. config.py 를 문서에 추가합니다.

STATIC_GREETINGS_AND_GENERAL = """
<static_context>
Acme 汽车保险:您在路上的可靠伙伴

简介:
在 Acme 保险公司,我们理解您的车辆不仅仅是交通工具——它是您通往生活冒险的门票。自 1985 年以来,我们一直在制定汽车保险政策,赋予驾驶者探索、通勤和旅行的信心。
无论您是在城市街道上穿行,还是在进行跨国旅行,Acme 都会保护您和您的车辆。
我们的创新汽车保险政策专为适应您的独特需求而设计,涵盖从轻微碰撞到重大事故的一切。
凭借 Acme 的获奖客户服务和快速理赔解决方案,您可以专注于驾驶的乐趣,而我们处理其他事宜。
我们不仅是保险提供商——我们是您人生旅途中的副驾驶。
选择 Acme 汽车保险,体验优质保障和真诚关怀带来的安心。因为在 Acme,我们不仅为您的汽车提供保险——我们还为您开拓生活的旅程提供动力。

注:我们还提供电动车的专门保险,确保所有类型车辆的驾驶者都能从我们的保护中受益。

Acme 保险提供以下产品:
- 汽车保险
- 电动车保险
- 两轮车保险

营业时间:周一至周五,上午 9 点至下午 5 点(美国东部时间)
客户服务电话: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개의 '좋은' 상호작용의 예를 추가해 보겠습니다. 이러한 예는 이상적인 고객 상호작용을 나타내야 하며 안전장치, 도구 호출 등을 포함할 수 있습니다.

EXAMPLES="""
以下是一些如何与客户互动的示例:

<example 1>
H: 你好,请问你们提供小企业的商业保险吗?

A: 啊!很遗憾,目前我们不提供商业保险。 
不过,我们有多种个人保险产品,包括汽车保险和电动车保险。 
您想了解更多关于这些产品的信息吗?
</example 1>

<example 2>
H: 你好,你们的营业时间是几点?

A: 我们的营业时间是周一至周五,上午 9 点到下午 5 点 (美国东部标准时间)。 
如果您有任何问题或需要帮助,请随时在这些时间内联系我们。 
今天还有什么其他需要我帮助的吗?
</example 2>

<example 3>
H: 我正在寻找汽车保险。Acme 提供哪些服务?

A: 很好的选择!Acme 的汽车保险通常包括:
- 责任险:在事故中您为过错方时为您提供保障
- 碰撞险:支付事故中您车辆的损坏费用
- 全面保障:涵盖非碰撞事件,如盗窃或故意破坏
- 医疗费用保险:事故后支付医疗费用
- 未投保/保险不足司机保障:保护您免受投保不足的司机影响

我们还提供一些可选保障,如租车报销、道路救援和新车更换。 
您想了解这些保障的更多细节,还是有其他关于为您的车辆投保的具体问题?
</example 3>

<example 4>
H: 我想了解一下你们的电动车保险。

A: 当然可以!我们的电动车保险专为电动车车主的独特需求量身定制。 
除了我们为普通车辆提供的所有标准保障外,我们的电动车保险还包括:

- 电池保障:保护您的车辆昂贵电池系统免受损坏或老化
- 技术包:涵盖高级电子设备和车载计算机系统的维修或更换
- 充电站保障:保护家庭和便携式充电设备
- 网络安全保障:对抗黑客攻击或数字威胁的保障
- 专业道路救援:包括平板拖车服务,以保护车辆底盘

我们为多种电动车提供保障,包括特斯拉、Rivian、日产、雪佛兰等热门车型。 
您是否有特定的电动车需要投保,或者您想了解某些保障的更多细节?
</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 및 스트림라이트를 사용하여 작은 애플리케이션을 빌드하고 사용자 인터페이스를 만들어 보겠습니다.

라는 이름으로 chatbot.py 파일에서 사용되는 것과 동일한 정보를 캡슐화할 ChatBot 클래스를 먼저 설정합니다. 인류학 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() 함수는 스트림릿 기반 채팅 인터페이스를 설정합니다.

다음과 같은 파일에서 작업할 것입니다. app.py 이 작업은 파일에서 수행됩니다.

import streamlit as st
from chatbot import ChatBot
from config import TASK_SPECIFIC_INSTRUCTIONS

def main():
   st.title("与 Eva 聊天,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("Eva 正在思考..."):
               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

팁 평가하기

프롬프트는 프로덕션 준비 상태에 도달하기 위해 테스트와 최적화가 필요한 경우가 많습니다. 솔루션이 준비되었는지 확인하기 위해 정량적 방법과 정성적 방법을 결합한 체계적인 프로세스를 통해 챗봇의 성능을 평가할 수 있습니다. 정의한 성공 기준에 따라강력한 경험적 평가를 사용하면 프롬프트를 최적화할 수 있습니다.

인간형 콘솔 이제 다양한 시나리오에서 프롬프트를 테스트할 수 있는 평가 도구가 제공됩니다.

성능 향상

복잡한 시나리오의 경우 표준 외에도엔지니어링을 위한 팁노래로 응답가드레일 구현 전략그 외에도 성능 향상을 위한 다른 전략을 고려하는 것도 도움이 될 수 있습니다. 다음은 몇 가지 일반적인 시나리오입니다:

RAG로 긴 컨텍스트 지연 시간 줄이기

많은 수의 정적 및 동적 컨텍스트를 처리할 때 큐에 모든 정보를 포함하면 비용이 많이 들고 응답 시간이 느려지며 컨텍스트 윈도우의 한계에 도달할 수 있습니다. 이 경우 검색 증강 생성(RAG) 기술을 구현하면 성능과 효율성을 크게 향상시킬 수 있습니다.

다음을 사용하여 항해와 유사한 임베딩 모델 정보를 벡터 표현으로 변환하면 보다 확장 가능하고 반응성이 뛰어난 시스템이 만들어집니다. 이 접근 방식을 사용하면 모든 힌트에 가능한 모든 컨텍스트를 포함하지 않고 현재 쿼리를 기반으로 관련 정보를 동적으로 검색할 수 있습니다.

실현 RAG 시나리오 사용을 지원하는 데 사용됩니다. RAG 포뮬러 는 다양한 컨텍스트가 필요한 시스템에서 정확도를 개선하고 응답 시간을 단축하며 API 비용을 절감하는 것으로 나타났습니다.

도구 사용을 통한 실시간 데이터 통합

계정 잔액이나 정책 세부 정보 등 실시간 정보가 필요한 쿼리를 처리할 때는 임베디드 RAG 기반 접근 방식만으로는 충분하지 않습니다. 대신 도구를 활용하여 챗봇이 정확한 실시간 응답을 제공하는 기능을 크게 향상시킬 수 있습니다. 예를 들어 도구를 사용하여 고객 정보를 찾고, 주문 세부 정보를 검색하고, 고객을 대신하여 주문을 취소할 수 있습니다.

이 방법은 도구 사용: 고객 서비스 상담원 공식 에 설명된 대로 실시간 데이터를 클로드의 응답에 원활하게 통합하여 보다 개인화되고 효율적인 고객 경험을 제공할 수 있습니다.

향상된 입력 및 출력 보호 조치

특히 고객 서비스 시나리오에서 챗봇을 배포할 때는 오용, 범위를 벗어난 쿼리 및 부적절한 응답의 위험으로부터 보호하는 것이 중요합니다. Claude는 본질적으로 이러한 시나리오에 탄력적으로 대응하지만, 다음은 챗봇 보호 기능을 강화하기 위한 추가 단계입니다:

  • 환각 감소사실 확인 메커니즘 구현 및 견적 를 사용하여 제공된 정보에 기반한 응답이 이루어지도록 합니다.
  • 정보 교차 확인: 상담원의 답변이 회사 정책 및 알려진 사실과 일치하는지 확인합니다.
  • 계약상의 약속 피하기: 상담원에게 권한이 없는 약속이나 계약을 하지 않도록 합니다.
  • 탈옥 완화무해한 검사 및 입력 유효성 검사 등의 방법을 사용하여 사용자가 모델 취약점을 악용하여 부적절한 콘텐츠를 생성하지 못하도록 합니다.
  • 경쟁사 언급 방지: 경쟁사 언급 필터를 구현하여 브랜드에 집중하고 경쟁사의 제품이나 서비스에 대한 언급을 피하세요.
  • 클로드의 역할을 유지하세요.: 길고 복잡한 상호 작용 중에 클로드가 문맥 스타일을 변경하지 못하도록 합니다.
  • 개인 식별 정보(PII) 삭제: 명시적으로 요청하고 승인하지 않는 한 응답에서 모든 PII를 삭제합니다.

스트리밍 처리를 통한 체감 응답 시간 단축

스트리밍을 구현하면 잠재적으로 긴 응답을 처리할 때 사용자 참여도와 만족도를 크게 높일 수 있습니다. 이 경우 사용자는 전체 응답이 생성될 때까지 기다리지 않고 서서히 답변을 받을 수 있습니다.

다음은 스트림 처리를 구현하는 방법에 대한 단계입니다:

  1. 활용 인트로픽 스트리밍 API 스트리밍 답글이 지원됩니다.
  2. 들어오는 텍스트 블록을 처리하도록 프런트엔드를 설정합니다.
  3. 도착할 때마다 텍스트 블록을 표시하여 실시간 입력의 효과를 시뮬레이션합니다.
  4. 전체 답글을 저장하는 메커니즘을 구현하여 사용자가 다른 곳으로 이동한 후 돌아와도 전체 내용을 볼 수 있도록 합니다.

경우에 따라 스트리밍을 사용하면 프로그레시브 디스플레이가 처리 시간 연장의 영향을 완화하기 때문에 기본 지연 시간이 더 긴 고급 모델을 사용할 수 있습니다.

챗봇 확장하기

챗봇의 복잡성이 증가함에 따라 애플리케이션 아키텍처도 함께 발전할 수 있습니다. 아키텍처에 더 많은 계층을 추가하기 전에 다음과 같은 간단한 옵션을 고려하세요:

  • 힌트 엔지니어링을 통해 힌트를 최대한 활용하고 최적화하세요. 저희의 팁 엔지니어링 가이드 가장 효과적인 팁을 작성하세요.
  • 프롬프트에 다른 사용자 추가 인공물 (여기에는 다음이 포함될 수 있습니다. 큐 체인)을 클릭하여 원하는 기능을 수행할 수 있는지 확인합니다.

챗봇이 매우 다양한 작업을 처리하는 경우 다음을 추가하는 것을 고려할 수 있습니다. 별도의 인텐트 분류기 를 사용하여 초기 고객 문의를 라우팅할 수 있습니다. 기존 애플리케이션의 경우, 분류기를 통해 고객 쿼리를 전문화된 대화(각각 고유한 도구와 시스템 프롬프트가 있음)로 라우팅하는 의사 결정 트리를 만들어야 합니다. 이 접근 방식은 Claude에 대한 추가 호출이 필요하므로 지연 시간이 늘어날 수 있습니다.

Claude를 지원 워크플로에 통합하기

이 예제에서는 Streamlit 환경에서 호출할 수 있는 Python 함수에 중점을 두었지만, 챗봇의 실시간 지원을 위해 Claude를 배포하려면 API 서비스가 필요합니다.

할 수 있습니다:

  1. API 래퍼 만들기: 분류된 함수에 대한 간단한 API 래퍼를 개발하세요. 예를 들어 Flask API 또는 Fast API를 사용하여 코드를 HTTP 서비스로 래핑할 수 있습니다. 이 HTTP 서비스는 사용자 입력을 받아 완전한 어시스턴트 응답을 반환할 수 있습니다. 결과적으로 이 서비스는 다음과 같은 특성을 가질 수 있습니다:
    • 서버 전송 이벤트(SSE): SSE는 서버와 클라이언트 간에 실시간 응답 스트리밍을 허용합니다. 이는 LLM을 사용할 때 원활한 대화형 환경을 제공하는 데 매우 중요합니다.
    • 캐싱: 캐싱을 구현하면 응답성을 크게 개선하고 불필요한 API 호출을 줄일 수 있습니다.
    • 컨텍스트 유지: 컨텍스트를 유지하는 것은 사용자가 다른 곳으로 이동했다가 다시 돌아올 때 대화의 연속성을 유지하는 데 중요합니다.
  2. 웹 인터페이스 구축: Claude 기반 에이전트와 상호 작용할 수 있는 사용자 친화적인 웹 UI를 구현합니다.
© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...