Sebelum membangun dengan Claude

Tentukan apakah menggunakan Claude untuk chat dukungan

Berikut adalah beberapa indikator utama bahwa Anda sebaiknya menggunakan LLM seperti Claude untuk mengotomatisasi bagian dari proses dukungan pelanggan Anda:

Beberapa pertimbangan untuk memilih Claude dibandingkan LLM lainnya:

  • Anda memprioritaskan percakapan yang natural dan bernuansa: Pemahaman bahasa Claude yang canggih memungkinkan percakapan yang lebih natural dan peka konteks yang terasa lebih manusiawi dibandingkan chat dengan LLM lain.
  • Anda sering menerima pertanyaan kompleks dan terbuka: Claude dapat menangani berbagai topik dan pertanyaan tanpa menghasilkan respons otomatis atau memerlukan pemrograman ekstensif dari permutasi ucapan pengguna.
  • Anda membutuhkan dukungan multibahasa yang dapat diskalakan: Kemampuan multibahasa Claude memungkinkannya untuk terlibat dalam percakapan dalam lebih dari 200 bahasa tanpa memerlukan chatbot terpisah atau proses terjemahan ekstensif untuk setiap bahasa yang didukung.

Tentukan interaksi chat ideal Anda

Buatlah garis besar interaksi pelanggan yang ideal untuk menentukan bagaimana dan kapan Anda mengharapkan pelanggan berinteraksi dengan Claude. Garis besar ini akan membantu menentukan persyaratan teknis dari solusi Anda.

Berikut adalah contoh interaksi chat untuk dukungan asuransi mobil:

  • Pelanggan: Memulai pengalaman chat dukungan
    • Claude: Menyapa pelanggan dengan hangat dan memulai percakapan
  • Pelanggan: Bertanya tentang asuransi untuk mobil listrik baru mereka
    • Claude: Memberikan informasi relevan tentang cakupan kendaraan listrik
  • Pelanggan: Mengajukan pertanyaan terkait kebutuhan unik untuk asuransi kendaraan listrik
    • Claude: Merespons dengan jawaban yang akurat dan informatif serta memberikan tautan ke sumber
  • Pelanggan: Mengajukan pertanyaan di luar topik yang tidak terkait dengan asuransi atau mobil
    • Claude: Mengklarifikasi bahwa ia tidak membahas topik yang tidak terkait dan mengarahkan pengguna kembali ke asuransi mobil
  • Pelanggan: Menyatakan minat untuk mendapatkan penawaran asuransi
    • Claude: Mengajukan serangkaian pertanyaan untuk menentukan penawaran yang sesuai, menyesuaikan dengan respons mereka
    • Claude: Mengirim permintaan untuk menggunakan alat API pembuat penawaran bersama dengan informasi yang diperlukan yang dikumpulkan dari pengguna
    • Claude: Menerima informasi respons dari penggunaan alat API, mensintesis informasi menjadi respons natural, dan menyajikan penawaran yang diberikan kepada pengguna
  • Pelanggan: Mengajukan pertanyaan lanjutan
    • Claude: Menjawab pertanyaan lanjutan sesuai kebutuhan
    • Claude: Mengarahkan pelanggan ke langkah-langkah berikutnya dalam proses asuransi dan mengakhiri percakapan
Dalam contoh nyata yang Anda tulis untuk kasus penggunaan Anda sendiri, Anda mungkin merasa berguna untuk menuliskan kata-kata sebenarnya dalam interaksi ini sehingga Anda juga bisa mendapatkan gambaran tentang nada ideal, panjang respons, dan tingkat detail yang Anda inginkan dari Claude.

Pecah interaksi menjadi tugas-tugas unik

Chat dukungan pelanggan adalah kumpulan dari beberapa tugas berbeda, mulai dari menjawab pertanyaan hingga pengambilan informasi hingga mengambil tindakan atas permintaan, yang terbungkus dalam satu interaksi pelanggan. Sebelum Anda mulai membangun, pecah interaksi pelanggan ideal Anda menjadi setiap tugas yang Anda ingin Claude dapat lakukan. Ini memastikan Anda dapat meminta dan mengevaluasi Claude untuk setiap tugas, dan memberi Anda gambaran yang baik tentang rentang interaksi yang perlu Anda perhitungkan saat menulis kasus uji.

Pelanggan terkadang merasa membantu untuk memvisualisasikan ini sebagai bagan alur interaksi dari titik-titik infleksi percakapan yang mungkin tergantung pada permintaan pengguna.

Berikut adalah tugas-tugas utama yang terkait dengan contoh interaksi asuransi di atas:

  1. Salam dan panduan umum

    • Menyapa pelanggan dengan hangat dan memulai percakapan
    • Memberikan informasi umum tentang perusahaan dan interaksi
  2. Informasi Produk

    • Memberikan informasi tentang cakupan kendaraan listrik
      Ini akan memerlukan Claude memiliki informasi yang diperlukan dalam konteksnya, dan mungkin menyiratkan bahwa integrasi RAG diperlukan.
    • Menjawab pertanyaan terkait kebutuhan unik asuransi kendaraan listrik
    • Menjawab pertanyaan lanjutan tentang penawaran atau detail asuransi
    • Menawarkan tautan ke sumber saat sesuai
  3. Manajemen Percakapan

    • Tetap pada topik (asuransi mobil)
    • Mengarahkan kembali pertanyaan di luar topik ke subjek yang relevan
  4. Pembuatan Penawaran

    • Mengajukan pertanyaan yang sesuai untuk menentukan kelayakan penawaran
    • Menyesuaikan pertanyaan berdasarkan respons pelanggan
    • Mengirimkan informasi yang dikumpulkan ke API pembuatan penawaran
    • Menyajikan penawaran yang diberikan kepada pelanggan

Tetapkan kriteria keberhasilan

Bekerja sama dengan tim dukungan Anda untuk menentukan kriteria keberhasilan yang jelas dan menulis evaluasi terperinci dengan tolok ukur dan tujuan yang dapat diukur.

Berikut adalah kriteria dan tolok ukur yang dapat digunakan untuk mengevaluasi seberapa sukses Claude melakukan tugas-tugas yang ditentukan:

Berikut adalah kriteria dan tolok ukur yang dapat digunakan untuk mengevaluasi dampak bisnis dari penggunaan Claude untuk dukungan:

Cara mengimplementasikan Claude sebagai agen layanan pelanggan

Pilih model Claude yang tepat

Pilihan model tergantung pada pertimbangan antara biaya, akurasi, dan waktu respons.

Untuk chat dukungan pelanggan, claude-3-5-sonnet-20241022 sangat cocok untuk menyeimbangkan kecerdasan, latensi, dan biaya. Namun, untuk kasus di mana Anda memiliki alur percakapan dengan beberapa prompt termasuk RAG, penggunaan alat, dan/atau prompt konteks panjang, claude-3-haiku-20240307 mungkin lebih cocok untuk mengoptimalkan latensi.

Bangun prompt yang kuat

Menggunakan Claude untuk dukungan pelanggan memerlukan Claude memiliki cukup arahan dan konteks untuk merespons dengan tepat, sambil memiliki cukup fleksibilitas untuk menangani berbagai pertanyaan pelanggan.

Mari kita mulai dengan menulis elemen-elemen prompt yang kuat, dimulai dengan prompt sistem:

IDENTITY = """Anda adalah Eva, asisten AI yang ramah dan berpengetahuan luas untuk Acme Insurance 
Company. Peran Anda adalah menyambut pelanggan dengan hangat dan memberikan informasi tentang 
penawaran asuransi Acme, yang mencakup asuransi mobil dan asuransi mobil listrik. Anda juga dapat 
membantu pelanggan mendapatkan penawaran untuk kebutuhan asuransi mereka."""
Meskipun Anda mungkin tergoda untuk menempatkan semua informasi Anda di dalam prompt sistem sebagai cara untuk memisahkan instruksi dari percakapan pengguna, Claude sebenarnya bekerja paling baik dengan sebagian besar konten promptnya ditulis di dalam giliran User pertama (dengan satu-satunya pengecualian adalah prompt peran). Baca lebih lanjut di Memberi Claude peran dengan prompt sistem

Sebaiknya memecah prompt kompleks menjadi subbagian dan menulis satu bagian pada satu waktu. Untuk setiap tugas, Anda mungkin menemukan kesuksesan yang lebih besar dengan mengikuti proses langkah demi langkah untuk menentukan bagian-bagian prompt yang Claude butuhkan untuk melakukan tugas dengan baik. Untuk contoh dukungan asuransi mobil ini, kita akan menulis secara bertahap semua bagian untuk prompt dimulai dengan tugas “Salam dan panduan umum”. Ini juga membuat debugging prompt Anda lebih mudah karena Anda dapat lebih cepat menyesuaikan bagian-bagian individual dari keseluruhan prompt.

Kita akan menempatkan semua bagian ini dalam file bernama config.py.

STATIC_GREETINGS_AND_GENERAL = """
<static_context>
Asuransi Mobil Acme: Teman Terpercaya Anda di Jalan

Tentang:
Di Acme Insurance, kami memahami bahwa kendaraan Anda lebih dari sekadar alat transportasi—itu adalah tiket Anda menuju petualangan hidup. 
Sejak 1985, kami telah merancang polis asuransi mobil yang memberi pengemudi kepercayaan diri untuk menjelajah, bepergian, dan melakukan perjalanan dengan tenang.
Baik Anda menjelajahi jalan-jalan kota atau memulai perjalanan lintas negara, Acme ada di sana untuk melindungi Anda dan kendaraan Anda. 
Polis asuransi mobil inovatif kami dirancang untuk beradaptasi dengan kebutuhan unik Anda, mencakup segala hal dari kecelakaan kecil hingga tabrakan besar.
Dengan layanan pelanggan Acme yang telah memenangkan penghargaan dan penyelesaian klaim yang cepat, Anda dapat fokus pada kegembiraan berkendara sementara kami menangani sisanya. 
Kami bukan sekadar penyedia asuransi—kami adalah co-pilot Anda dalam perjalanan hidup.
Pilih Asuransi Mobil Acme dan rasakan jaminan yang datang dengan perlindungan superior dan kepedulian tulus. Karena di Acme, kami tidak hanya 
mengasuransikan mobil Anda—kami memfasilitasi petualangan Anda di jalan terbuka.

Catatan: Kami juga menawarkan perlindungan khusus untuk kendaraan listrik, memastikan bahwa pengemudi semua jenis mobil dapat menikmati perlindungan kami.

Acme Insurance menawarkan produk-produk berikut:
- Asuransi mobil
- Asuransi mobil listrik
- Asuransi kendaraan roda dua

Jam kerja: Senin-Jumat, 9 Pagi - 5 Sore EST
Nomor layanan pelanggan: 1-800-123-4567
</static_context>
"""

Kita kemudian akan melakukan hal yang sama untuk informasi asuransi mobil dan asuransi mobil listrik kita.

STATIC_CAR_INSURANCE="""
<static_context>
Cakupan Asuransi Mobil:
Polis asuransi mobil Acme biasanya mencakup:
1. Perlindungan tanggung jawab: Membayar untuk cedera tubuh dan kerusakan properti yang Anda sebabkan kepada orang lain.
2. Perlindungan tabrakan: Membayar untuk kerusakan pada mobil Anda dalam kecelakaan.
3. Perlindungan komprehensif: Membayar untuk kerusakan pada mobil Anda dari insiden non-tabrakan.
4. Perlindungan pembayaran medis: Membayar untuk biaya medis setelah kecelakaan.
5. Perlindungan pengemudi tidak diasuransikan/kurang diasuransikan: Melindungi Anda jika Anda ditabrak oleh pengemudi dengan asuransi yang tidak mencukupi.

Perlindungan opsional meliputi:
- Penggantian mobil sewa
- Bantuan di jalan raya
- Penggantian mobil baru
</static_context>
"""

STATIC_ELECTRIC_CAR_INSURANCE="""
<static_context>
Asuransi Mobil Listrik:
Asuransi mobil listrik khusus kami melampaui perlindungan mobil tradisional, 
menawarkan perlindungan yang disesuaikan untuk investasi teknologi tinggi Anda. Selain perlindungan standar, kami menawarkan:
- Pengamanan sistem baterai yang mahal
- Perlindungan peralatan pengisian daya rumah
- Beradaptasi dengan dunia kendaraan listrik yang berkembang pesat

Baik Anda mengendarai Rivian, Nissan Leaf, Chevrolet Bolt, 
atau kendaraan listrik lainnya, agen kami yang berpengetahuan luas siap merancang polis 
yang memberi Anda kepercayaan diri untuk menikmati setiap mil bertenaga elektron.
</static_context>
"""

Sekarang setelah kita memiliki konten statis kita, mari tambahkan setidaknya 4-5 contoh interaksi “baik” untuk memandu respons Claude. Contoh-contoh ini harus mewakili interaksi pelanggan ideal Anda dan dapat mencakup pagar pembatas, panggilan alat, dll.

EXAMPLES="""
Berikut beberapa contoh bagaimana Anda dapat berinteraksi dengan pelanggan:

<example 1>
H: Hai, apakah Anda menawarkan asuransi komersial untuk usaha kecil?

A: Ah! Sayangnya, kami tidak menawarkan asuransi komersial saat ini. 
Namun, kami menyediakan berbagai produk asuransi pribadi termasuk asuransi mobil dan asuransi mobil listrik. 
Apakah Anda ingin tahu lebih banyak tentang penawaran ini?
</example 1>

<example 2>
H: Hai, apa jam kerja Anda?

A: Jam kerja kami adalah Senin sampai Jumat, 9 Pagi hingga 5 Sore EST. 
Jika Anda memiliki pertanyaan atau membutuhkan bantuan, silakan hubungi kami selama jam tersebut. 
Apa lagi yang bisa saya bantu hari ini?
</example 2>

<example 3>
H: Saya sedang mencari asuransi mobil. Apa yang ditawarkan Acme?

A: Pilihan yang bagus! Polis asuransi mobil Acme biasanya mencakup:
- Perlindungan tanggung jawab: Melindungi Anda jika Anda bersalah dalam kecelakaan
- Perlindungan tabrakan: Membayar untuk kerusakan pada mobil Anda dalam kecelakaan
- Perlindungan komprehensif: Mencakup insiden non-tabrakan seperti pencurian atau vandalisme
- Perlindungan pembayaran medis: Membayar untuk biaya medis setelah kecelakaan
- Perlindungan pengemudi tidak diasuransikan/kurang diasuransikan: Melindungi Anda dari pengemudi dengan asuransi yang tidak mencukupi

Kami juga menawarkan perlindungan opsional seperti penggantian mobil sewa, bantuan di jalan raya, dan penggantian mobil baru. 
Apakah Anda ingin detail lebih lanjut tentang perlindungan ini, atau apakah Anda memiliki pertanyaan spesifik tentang mengasuransikan kendaraan Anda?
</example 3>

<example 4>
H: Saya ingin mendengar tentang asuransi mobil listrik Anda.

A: Tentu! Asuransi mobil listrik kami dirancang khusus untuk memenuhi kebutuhan unik pemilik kendaraan listrik. 
Selain semua perlindungan standar yang kami tawarkan untuk mobil biasa, polis mobil listrik kami mencakup:

- Perlindungan baterai: Perlindungan terhadap kerusakan atau degradasi sistem baterai kendaraan Anda yang mahal
- Paket teknologi: Mencakup perbaikan atau penggantian elektronik canggih dan sistem komputer onboard
- Perlindungan stasiun pengisian: Melindungi peralatan pengisian daya rumah dan portabel
- Perlindungan keamanan siber: Perlindungan terhadap peretasan atau ancaman digital
- Bantuan jalan raya khusus: Termasuk derek flatbed untuk melindungi bagian bawah kendaraan

Kami mencakup berbagai kendaraan listrik, termasuk model populer dari Tesla, Rivian, Nissan, Chevrolet, dan lainnya. 
Apakah ada kendaraan listrik spesifik yang ingin Anda asuransikan, atau apakah Anda ingin detail lebih lanjut tentang perlindungan ini?
</example 4>

<example 5>
H: Saya ingin mendapatkan penawaran untuk asuransi mobil saya.

A: Tentu! Saya senang membantu Anda mendapatkan penawaran untuk asuransi mobil Anda. 
Untuk memberikan Anda penawaran yang akurat, saya perlu mengumpulkan beberapa informasi tentang kendaraan Anda dan pengemudi utama. 
Mari kita mulai dengan hal-hal dasar:

1. Apa merek dan model kendaraan Anda?
2. Tahun berapa kendaraan itu diproduksi?
3. Kira-kira berapa mil yang telah Anda tempuh?
4. Berapa usia pengemudi utama?

Setelah Anda memberikan informasi ini, saya akan menggunakan alat penawaran kami untuk menghasilkan penawaran asuransi yang dipersonalisasi untuk Anda.
</example 5>
"""

Anda juga akan ingin menyertakan instruksi penting yang menguraikan Hal yang Boleh dan Tidak Boleh untuk bagaimana Claude harus berinteraksi dengan pelanggan. Ini mungkin berasal dari pagar pembatas merek atau kebijakan dukungan.

ADDITIONAL_GUARDRAILS = """Harap patuhi pagar pembatas berikut:
1. Hanya berikan informasi tentang jenis asuransi yang tercantum dalam penawaran kami.
2. Jika ditanya tentang jenis asuransi yang tidak kami tawarkan, dengan sopan nyatakan 
bahwa kami tidak menyediakan layanan tersebut.
3. Jangan berspekulasi tentang penawaran produk masa depan atau rencana perusahaan.
4. Jangan membuat janji atau masuk ke dalam perjanjian yang tidak diizinkan untuk dibuat.
Anda hanya memberikan informasi dan panduan.
5. Jangan menyebutkan produk atau layanan pesaing.
"""

Sekarang mari kita gabungkan semua bagian ini menjadi satu string untuk digunakan sebagai prompt kita.

TASK_SPECIFIC_INSTRUCTIONS = ' '.join([
   STATIC_GREETINGS_AND_GENERAL,
   STATIC_CAR_INSURANCE,
   STATIC_ELECTRIC_CAR_INSURANCE,
   EXAMPLES,
   ADDITIONAL_GUARDRAILS,
])

Tambahkan kemampuan dinamis dan agentic dengan penggunaan alat

Claude mampu mengambil tindakan dan mengambil informasi secara dinamis menggunakan fungsionalitas penggunaan alat sisi klien. Mulai dengan mendaftar alat atau API eksternal apa pun yang harus digunakan prompt.

Untuk contoh ini, kita akan mulai dengan satu alat untuk menghitung penawaran.

Sebagai pengingat, alat ini tidak akan melakukan perhitungan sebenarnya, ia hanya akan memberi sinyal ke aplikasi bahwa sebuah alat harus digunakan dengan argumen apa pun yang ditentukan.

Contoh kalkulator penawaran asuransi:

TOOLS = [{
  "name": "get_quote",
  "description": "Hitung penawaran asuransi berdasarkan input pengguna. Nilai yang dikembalikan adalah premi per bulan.",
  "input_schema": {
    "type": "object",
    "properties": {
      "make": {"type": "string", "description": "Merek kendaraan."},
      "model": {"type": "string", "description": "Model kendaraan."},
      "year": {"type": "integer", "description": "Tahun kendaraan diproduksi."},
      "mileage": {"type": "integer", "description": "Jarak tempuh pada kendaraan."},
      "driver_age": {"type": "integer", "description": "Usia pengemudi utama."}
    },
    "required": ["make", "model", "year", "mileage", "driver_age"]
  }
}]

def get_quote(make, model, year, mileage, driver_age):
    """Mengembalikan premi per bulan dalam USD"""
    # Anda dapat memanggil endpoint http atau database untuk mendapatkan penawaran.
    # Di sini, kita mensimulasikan penundaan 1 detik dan mengembalikan penawaran tetap 100.
    time.sleep(1)
    return 100

Terapkan prompt Anda

Sulit untuk mengetahui seberapa baik prompt Anda bekerja tanpa menerapkannya dalam pengaturan produksi uji dan menjalankan evaluasi jadi mari kita bangun aplikasi kecil menggunakan prompt kita, SDK Anthropic, dan streamlit untuk antarmuka pengguna.

Dalam file bernama chatbot.py, mulai dengan menyiapkan kelas ChatBot, yang akan mengenkapsulasi interaksi dengan SDK Anthropic.

Kelas tersebut harus memiliki dua metode utama: generate_message dan 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"Terjadi kesalahan: {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"Terjadi kesalahan: {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("Terjadi kesalahan: Tipe respons tidak terduga")

   def handle_tool_use(self, func_name, func_params):
       if func_name == "get_quote":
           premium = get_quote(**func_params)
           return f"Penawaran dihasilkan: ${premium:.2f} per bulan"
      
       raise Exception("Alat yang tidak terduga digunakan")

Bangun antarmuka pengguna Anda

Uji penerapan kode ini dengan Streamlit menggunakan metode main. Fungsi main() ini menyiapkan antarmuka chat berbasis Streamlit.

Kita akan melakukan ini dalam file bernama app.py

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

def main():
   st.title("Chat dengan Eva, Asisten Acme Insurance Company🤖")

   if "messages" not in st.session_state:
       st.session_state.messages = [
           {'role': "user", "content": TASK_SPECIFIC_INSTRUCTIONS},
           {'role': "assistant", "content": "Dipahami"},
       ]

   chatbot = ChatBot(st.session_state)

   # Tampilkan pesan pengguna dan asisten dengan melewati dua pesan pertama
   for message in st.session_state.messages[2:]:
       # abaikan blok penggunaan alat
       if isinstance(message["content"], str):
           with st.chat_message(message["role"]):
               st.markdown(message["content"])

   if user_msg := st.chat_input("Ketik pesan Anda di sini..."):
       st.chat_message("user").markdown(user_msg)

       with st.chat_message("assistant"):
           with st.spinner("Eva sedang berpikir..."):
               response_placeholder = st.empty()
               full_response = chatbot.process_user_input(user_msg)
               response_placeholder.markdown(full_response)

if __name__ == "__main__":
   main()

Jalankan program dengan:

streamlit run app.py

Evaluasi prompt Anda

Prompting sering memerlukan pengujian dan optimasi agar siap untuk produksi. Untuk menentukan kesiapan solusi Anda, evaluasi kinerja chatbot menggunakan proses sistematis yang menggabungkan metode kuantitatif dan kualitatif. Membuat evaluasi empiris yang kuat berdasarkan kriteria keberhasilan yang Anda tentukan akan memungkinkan Anda mengoptimalkan prompt Anda.

Anthropic Console sekarang memiliki fitur Evaluasi yang memungkinkan Anda menguji prompt Anda dalam berbagai skenario.

Tingkatkan kinerja

Dalam skenario kompleks, mungkin membantu untuk mempertimbangkan strategi tambahan untuk meningkatkan kinerja di luar teknik prompt engineering standar & strategi implementasi pagar pembatas. Berikut adalah beberapa skenario umum:

Kurangi latensi konteks panjang dengan RAG

Ketika menangani sejumlah besar konteks statis dan dinamis, memasukkan semua informasi dalam prompt dapat menyebabkan biaya tinggi, waktu respons lebih lambat, dan mencapai batas jendela konteks. Dalam skenario ini, mengimplementasikan teknik Retrieval Augmented Generation (RAG) dapat secara signifikan meningkatkan kinerja dan efisiensi.

Dengan menggunakan model embedding seperti Voyage untuk mengkonversi informasi menjadi representasi vektor, Anda dapat membuat sistem yang lebih dapat diskalakan dan responsif. Pendekatan ini memungkinkan pengambilan informasi yang relevan secara dinamis berdasarkan query saat ini, daripada menyertakan semua konteks yang mungkin dalam setiap prompt.

Mengimplementasikan RAG untuk kasus penggunaan dukungan resep RAG telah terbukti meningkatkan akurasi, mengurangi waktu respons, dan mengurangi biaya API dalam sistem dengan persyaratan konteks yang ekstensif.

Integrasikan data real-time dengan penggunaan alat

Ketika menangani query yang memerlukan informasi real-time, seperti saldo akun atau detail polis, pendekatan RAG berbasis embedding tidak cukup. Sebaliknya, Anda dapat memanfaatkan penggunaan alat untuk secara signifikan meningkatkan kemampuan chatbot Anda untuk memberikan respons yang akurat dan real-time. Misalnya, Anda dapat menggunakan penggunaan alat untuk mencari informasi pelanggan, mengambil detail pesanan, dan membatalkan pesanan atas nama pelanggan.

Pendekatan ini, diuraikan dalam resep penggunaan alat kami: agen layanan pelanggan, memungkinkan Anda mengintegrasikan data langsung ke dalam respons Claude Anda dan memberikan pengalaman pelanggan yang lebih personal dan efisien.

Perkuat pagar pembatas input dan output

Ketika menerapkan chatbot, terutama dalam skenario layanan pelanggan, penting untuk mencegah risiko yang terkait dengan penyalahgunaan, query di luar cakupan, dan respons yang tidak pantas. Meskipun Claude secara inheren tahan terhadap skenario seperti itu, berikut adalah langkah-langkah tambahan untuk memperkuat pagar pembatas chatbot Anda:

  • Kurangi halusinasi: Terapkan mekanisme pemeriksaan fakta dan kutipan untuk mendasarkan respons pada informasi yang diberikan.
  • Periksa silang informasi: Verifikasi bahwa respons agen sesuai dengan kebijakan perusahaan Anda dan fakta yang diketahui.
  • Hindari komitmen kontraktual: Pastikan agen tidak membuat janji atau masuk ke dalam perjanjian yang tidak diizinkan untuk dibuat.
  • Mitigasi jailbreak: Gunakan metode seperti layar keamanan dan validasi input untuk mencegah pengguna mengeksploitasi kerentanan model, yang bertujuan untuk menghasilkan konten yang tidak pantas.
  • Hindari menyebutkan pesaing: Terapkan filter penyebutan pesaing untuk mempertahankan fokus merek dan tidak menyebutkan produk atau layanan pesaing apa pun.
  • Jaga Claude tetap dalam karakter: Cegah Claude mengubah gaya konteks mereka, bahkan selama interaksi yang panjang dan kompleks.
  • Hapus Informasi Pribadi yang Dapat Diidentifikasi (PII): Kecuali secara eksplisit diperlukan dan diizinkan, hapus PII apa pun dari respons.

Kurangi waktu respons yang dirasakan dengan streaming

Ketika menangani respons yang berpotensi panjang, mengimplementasikan streaming dapat secara signifikan meningkatkan keterlibatan dan kepuasan pengguna. Dalam skenario ini, pengguna menerima jawaban secara progresif alih-alih menunggu seluruh respons dihasilkan.

Berikut cara mengimplementasikan streaming:

  1. Gunakan Anthropic Streaming API untuk mendukung respons streaming.
  2. Siapkan frontend Anda untuk menangani potongan teks yang masuk.
  3. Tampilkan setiap potongan saat tiba, mensimulasikan pengetikan real-time.
  4. Terapkan mekanisme untuk menyimpan respons lengkap, memungkinkan pengguna untuk melihatnya jika mereka menavigasi pergi dan kembali.

Dalam beberapa kasus, streaming memungkinkan penggunaan model yang lebih canggih dengan latensi dasar yang lebih tinggi, karena tampilan progresif mengurangi dampak waktu pemrosesan yang lebih lama.

Skalakan Chatbot Anda

Seiring kompleksitas Chatbot Anda bertambah, arsitektur aplikasi Anda dapat berkembang untuk menyesuaikan. Sebelum Anda menambahkan lapisan lebih lanjut ke arsitektur Anda, pertimbangkan opsi yang kurang menyeluruh berikut:

  • Pastikan bahwa Anda memanfaatkan prompt Anda sebaik mungkin dan mengoptimalkan melalui prompt engineering. Gunakan panduan prompt engineering kami untuk menulis prompt yang paling efektif.
  • Tambahkan alat tambahan ke prompt (yang dapat mencakup rantai prompt) dan lihat apakah Anda dapat mencapai fungsionalitas yang diperlukan.

Jika Chatbot Anda menangani tugas yang sangat bervariasi, Anda mungkin ingin mempertimbangkan untuk menambahkan pengklasifikasi intent terpisah untuk mengarahkan query pelanggan awal. Untuk aplikasi yang ada, ini akan melibatkan pembuatan pohon keputusan yang akan mengarahkan query pelanggan melalui pengklasifikasi dan kemudian ke percakapan khusus (dengan set alat dan prompt sistem mereka sendiri). Perhatikan, metode ini memerlukan panggilan tambahan ke Claude yang dapat meningkatkan latensi.

Integrasikan Claude ke dalam alur kerja dukungan Anda

Meskipun contoh kami telah berfokus pada fungsi Python yang dapat dipanggil dalam lingkungan Streamlit, menerapkan Claude untuk chatbot dukungan real-time memerlukan layanan API.

Berikut cara Anda dapat mendekati ini:

  1. Buat pembungkus API: Kembangkan pembungkus API sederhana di sekitar fungsi klasifikasi Anda. Misalnya, Anda dapat menggunakan Flask API atau Fast API untuk membungkus kode Anda menjadi Layanan HTTP. Layanan HTTP Anda dapat menerima input pengguna dan mengembalikan respons Asisten secara keseluruhan. Dengan demikian, layanan Anda dapat memiliki karakteristik berikut:

    • Server-Sent Events (SSE): SSE memungkinkan streaming respons real-time dari server ke klien. Ini penting untuk memberikan pengalaman yang lancar dan interaktif saat bekerja dengan LLM.
    • Caching: Mengimplementasikan caching dapat secara signifikan meningkatkan waktu respons dan mengurangi panggilan API yang tidak perlu.
    • Retensi konteks: Mempertahankan konteks ketika pengguna menavigasi pergi dan kembali penting untuk kontinuitas dalam percakapan.
  2. Bangun antarmuka web: Implementasikan antarmuka pengguna web yang ramah pengguna untuk berinteraksi dengan agen yang didukung Claude.

Was this page helpful?