Bagaimana cara menambahkan Claude ke skill Alexa?

CometAPI
AnnaDec 29, 2025
Bagaimana cara menambahkan Claude ke skill Alexa?

Asisten suara semakin banyak ditenagai oleh model bahasa besar. Jika Anda ingin menghadirkan API Claude milik Anthropic ke dalam skill Alexa yang Anda kelola atau bangun, panduan ini akan memandu Anda melalui arsitektur praktis, pola kode konkret, dan pertimbangan operasional yang Anda perlukan — dari bukti konsep cepat hingga skill kelas produksi.

CometAPI adalah gerbang agregasi API yang menyediakan antarmuka terpadu, kompatibel dengan OpenAI, untuk ratusan model bahasa besar (LLM), termasuk keluarga Claude milik Anthropic (Sonnet, Opus, dan varian terkait). Alih-alih memanggil API Anthropic secara langsung, pelanggan dapat memanggil endpoint CometAPI dan memilih model Claude berdasarkan nama; CometAPI menangani perutean model, agregasi penagihan, dan, dalam banyak kasus, penyederhanaan autentikasi serta parameter.

Dari perspektif sebuah skill Alexa, menambahkan model Claude melalui CometAPI menawarkan tiga manfaat praktis: (1) akses cepat ke rilis Claude terbaru (varian Sonnet / Opus) tanpa menulis ulang kode klien saat nama model berubah; (2) permukaan REST bergaya OpenAI yang konsisten dan didukung banyak SDK; serta (3) analitik penggunaan terpusat, pembatasan laju, dan paket harga yang sering kali lebih mudah dikelola dibanding banyak kontrak vendor langsung.

Apa itu Claude dan mengapa menambahkannya ke skill Alexa?

Claude adalah keluarga model bahasa besar dan API percakapan (Messages API) dari Anthropic yang dapat dipanggil pengembang dari aplikasi mereka. Model Claude (baru-baru ini diperbarui pada seri Opus/Sonnet/Haiku, Claude Opus 4.5, Claude Sonnet 4.5, Claude Haiku 4.5) memberikan kemampuan pembuatan bahasa alami, penalaran, dan kemampuan agen yang berkualitas tinggi. Mengintegrasikan Claude ke dalam skill Alexa memungkinkan Anda mengganti atau melengkapi respons berbasis aturan dengan “otak” percakapan berbasis LLM yang dapat meringkas, menalar, mempersonalisasi, atau bertindak sebagai “agen” untuk tugas kompleks.

Komponen apa yang saling berkomunikasi?

Secara garis besar, polanya sederhana: perangkat Alexa (Echo) mengirim masukan suara ke backend Skills Alexa (skill Anda). Backend Anda — biasanya fungsi AWS Lambda atau layanan HTTPS — mengubah intent pengguna menjadi prompt teks dan memanggil API Claude. Respons Claude kemudian diubah menjadi ucapan (SSML) dan dikembalikan ke Alexa untuk diputar. Opsional, Anda dapat menggunakan streaming, progressive responses, atau pola Agent/Tool untuk membuat pengalaman lebih responsif dan kuat.

Mengapa memilih Claude?

Claude menyediakan Messages API modern (REST + SDK) dan mendukung respons streaming (SSE), dukungan tools/Agent (Agent Skills & Model Context Protocol), dan model bertingkat dengan profil biaya/kinerja yang bervariasi — menjadikannya cocok untuk pengalaman suara percakapan atau agen yang kompleks. Gunakan Claude jika Anda menginginkan model yang berfokus pada keselamatan dengan tooling untuk menghubungkan ke data eksternal dan perilaku streaming demi latensi yang dirasakan lebih rendah.

Bagaimana mengarsiteki skill Alexa yang menggunakan Claude dari CometAPI?

Arsitektur tingkat tinggi apa yang layak?

Terdapat dua pola kelas produksi yang perlu dipertimbangkan:

1. Lambda langsung → CometAPI
Sebuah skill Alexa (biasanya didukung oleh fungsi AWS Lambda) memanggil endpoint REST CometAPI secara sinkron untuk setiap giliran pengguna. Lambda membangun payload chat completion / messages, meneruskannya ke CometAPI, dan mengembalikan teks model ke Alexa untuk TTS/SSML. Pola ini sederhana dan bekerja baik untuk trafik rendah hingga menengah serta bukti konsep. Ini meminimalkan komponen sehingga mengurangi titik kegagalan, namun menempatkan logika pembatasan laju dan retry di Lambda.

2. Skill → Layanan backend → CometAPI (direkomendasikan untuk produksi)
Skill Alexa meneruskan permintaan ke layanan backend khusus (di-host di Fargate/ECS, EKS, atau armada EC2 yang autoscaling). Layanan tersebut bertanggung jawab untuk:

  • state percakapan, context window, dan peringkasan;
  • penghitungan token/biaya dan caching;
  • retry, backoff, dan circuit-breaking;
  • penyaringan keamanan input/output dan redaksi PII;
  • respons streaming/parsial (jika didukung) dan pembaruan progresif ke Alexa.

Pola ini memusatkan concern lintas-fungsi dan memungkinkan logika perutean model (misalnya, memilih Claude Opus untuk penalaran kompleks, Sonnet untuk jawaban singkat). Ini adalah pendekatan yang direkomendasikan bagi tim yang memperkirakan pertumbuhan, kebutuhan regulasi, atau telemetri yang kompleks.

Bagaimana siklus suara Alexa dipetakan ke panggilan Claude melalui CometAPI?

  1. Pengguna berbicara → perangkat Alexa melakukan ASR dan mengirim IntentRequest ke skill Anda (Lambda atau webhook).
  2. Skill Anda mengekstrak teks dan konteks sesi (locale, kemampuan perangkat, opt-in pengguna).
  3. Kode Anda menyiapkan prompt (instruksi sistem + giliran percakapan + giliran pengguna). Untuk suara, utamakan instruksi sistem singkat yang membatasi verbositas.
  4. Layanan Anda memanggil CometAPI — baik endpoint chat/completions yang kompatibel dengan OpenAI atau endpoint messages khusus CometAPI — dengan memilih model Claude target. Backend menerima respons teks atau terstruktur.
  5. Skill Anda mengonversi teks menjadi SSML / kartu dan mengembalikan respons Alexa. Untuk jawaban panjang, berikan ringkasan singkat untuk ucapan dan kirim teks lengkap ke aplikasi pendamping Alexa sebagai kartu.
  6. Monitoring & penghitungan biaya: korelasikan ID permintaan Alexa dengan ID permintaan CometAPI dan metrik penggunaan token model untuk observabilitas.

Langkah konkret untuk mengimplementasikan Claude dalam skill Alexa (end-to-end)?

Di bawah ini adalah panduan langkah demi langkah yang praktis ditambah contoh handler Lambda Node.js untuk memulai.

Langkah 1 — Buat skill Alexa dan model interaksi

  1. Di Alexa Developer Console: buat skill Custom.

  2. Definisikan

    Intents

    (misalnya,

    OpenChatIntent
    

    ,

    FollowUpIntent
    

    ,

    StopIntent
    

    ) dan contoh ucapan. Contoh:

    • Ucapan OpenChatIntent: “mulai ngobrol”, “tanya Claude”, “mengobrol dengan AI”.
  3. Atur Endpoint ke ARN AWS Lambda Anda (atau endpoint HTTPS). Simpan dan bangun model. Lihat REST API dan dokumentasi Alexa untuk panduan lengkap.

Langkah 2 — Implementasikan backend Lambda

Alur tingkat tinggi di dalam Lambda:

  1. Terima permintaan Alexa (JSON).
  2. Ekstrak ucapan pengguna dan data sesi.
  3. Opsional kirim progressive response Alexa (agar pengguna mendengar “Sedang memikirkan…”) saat Anda memanggil Claude.
  4. Panggil Claude (melalui Anthropic REST API atau Bedrock). Gunakan streaming jika Anda menginginkan respons parsial.
  5. Konversi respons Claude ke format keluaran Alexa (disarankan SSML).
  6. Kembalikan objek respons alexa.

Di bawah ini contoh Node.js yang ringkas (untuk keterbacaan kami menunjukkan satu pendekatan — fetch langsung ke REST Claude; di produksi pindahkan rahasia ke Secrets Manager dan tambahkan penanganan error/caching). Ini menggunakan sintaks gaya node-fetch (tersedia di runtime Node 18+) dan API Claude CometAPI.

// index.js (AWS Lambda - Node 18+)
import { Handler } from 'aws-lambda';
import fetch from 'node-fetch'; // atau global fetch di Node 18+

const CLAUDE_API_URL = process.env.CLAUDE_API_URL || 'https://api.cometapi.com/v1/messages'; // contoh
const CLAUDE_API_KEY = process.env.CLAUDE_API_KEY; // simpan di Secrets Manager atau variabel lingkungan Lambda

export const handler = async (event) => {
  // 1. Parsing permintaan Alexa
  const alexaRequest = JSON.parse(event.body || JSON.stringify(event));
  const intentName = alexaRequest.request?.intent?.name;
  const userUtterance = alexaRequest.request?.intent?.slots?.userQuery?.value || alexaRequest.request?.intent?.slots?.query?.value;

  // 2. Opsional: kirim progressive response ke Alexa (agar pengguna mendapat umpan balik segera)
  // (Implementasi diabaikan untuk ringkasnya; gunakan Alexa Progressive Response API dengan directive endpoint)

  // 3. Bangun payload Claude
  const claudePayload = {
    model: "claude-4-opus", // pilih model yang sesuai dengan langganan Anda
    messages: [
      { role: "system", content: "Anda adalah asisten yang membantu untuk sebuah skill Alexa. Jaga respons tetap singkat dan ramah untuk diucapkan." },
      { role: "user", content: userUtterance }
    ],
    max_tokens_to_sample: 800
  };

  // 4. Panggil Claude (contoh panggilan non-streaming sederhana)
  const resp = await fetch(CLAUDE_API_URL, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': CLAUDE_API_KEY
    },
    body: JSON.stringify(claudePayload),
    timeout: 20000 // perhatikan latensi; Alexa memiliki batas waktu
  });

  if (!resp.ok) {
    console.error('Claude API error', await resp.text());
    return buildAlexaResponse("Maaf, saya mengalami kendala menghubungi asisten saat ini. Silakan coba lagi nanti.");
  }

  const claudeJson = await resp.json();
  // Struktur JSON bergantung pada API atau pembungkus Bedrock yang Anda gunakan
  const assistantText = claudeJson?.completion || claudeJson?.output?.[0]?.content || extractTextFromClaude(claudeJson);

  // 5. Konversi ke SSML (pendekkan jika perlu)
  const ssml = `<speak>${sanitizeForSSML(assistantText)}</speak>`;

  // 6. Kembalikan respons Alexa
  return {
    statusCode: 200,
    body: JSON.stringify({
      version: "1.0",
      response: {
        outputSpeech: {
          type: "SSML",
          ssml
        },
        shouldEndSession: false
      }
    })
  };
};

function buildAlexaResponse(text) {
  return {
    statusCode: 200,
    body: JSON.stringify({
      version: "1.0",
      response: {
        outputSpeech: { type: "PlainText", text },
        shouldEndSession: true
      }
    })
  };
}

function sanitizeForSSML(text) {
  return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}

function extractTextFromClaude(json) {
  // implementasikan pemetaan dari respons API Claude ke string
  if (json?.output && Array.isArray(json.output)) {
    return json.output.map(o => o.content).join("\n");
  }
  return (json?.completion || '') + '';
}

Catatan: Field API Claude dan nama endpoint aktual mungkin berbeda (dokumen Anthropic menampilkan API messages dan mode streaming). Selalu rujuk dokumentasi Claude terbaru untuk field payload dan dukungan streaming yang tepat.

Langkah 3 — (Opsional namun direkomendasikan) Gunakan streaming untuk respons yang terasa lebih cepat

  • Mengapa streaming? Streaming memungkinkan Alexa mulai membacakan keluaran parsial saat model masih menghasilkan. Ini menurunkan persepsi latensi dan meningkatkan nuansa percakapan. Claude mendukung respons streaming (SSE atau websocket) dan memiliki “fine-grained tool streaming” untuk operasi kompleks. Mengimplementasikan streaming memerlukan saluran asinkron: Alexa Progressive Response + streaming terpotong ke klien atau relai SSE ke Lambda Anda, atau lebih baik, gunakan layanan perantara yang dapat mendorong potongan ke perangkat.
  • Catatan: Platform Alexa memberlakukan aturan waktu dan directive tersendiri. Pola yang umum adalah mengirim directive Progressive Response lebih awal, kemudian saat model selesai memberikan keluaran bicara final. Streaming langsung real-time ke perangkat Alexa dibatasi oleh model directive Alexa, jadi simulasikan streaming dengan sering mengirim progressive response dan kemudian respons final.

Langkah 4 — Petakan keluaran Claude ke UX suara Alexa

  • Jaga jawaban singkat dan ramah suara: Claude dapat menghasilkan teks panjang — transformasikan atau potong untuk menghindari paragraf panjang yang diucapkan. Gunakan tag SSML (break, emphasis) untuk meningkatkan prosodi.
  • Tangani konteks multi-giliran: Simpan context window yang pendek (ID pengguna/riwayat percakapan) tetapi hindari menyimpan setiap ucapan di sisi server kecuali diperlukan. Gunakan atribut sesi atau penyimpanan memori jangka pendek (DynamoDB dengan TTL) untuk tindak lanjut.
  • Alur error dan fallback: Jika Claude gagal atau mengembalikan konten yang tidak aman, sediakan pesan fallback yang aman (“Saya tidak dapat membantu dengan itu”) serta jalur pelaporan/pencatatan untuk analisis.

Bagaimana mengamankan kredensial dan melindungi data pengguna?

Di mana menyimpan kunci API dan rahasia?

  • AWS Secrets Manager adalah penyimpanan produksi yang direkomendasikan untuk kunci CometAPI dan kredensial pihak ketiga lainnya. Berikan Lambda atau layanan backend Anda peran IAM dengan kebijakan sempit yang hanya mengizinkan membaca rahasia yang diperlukan. Putar kunci secara terjadwal dan gunakan rotasi otomatis jika didukung.
  • Jangan menanam kunci di kode sumber atau repositori publik. Jika Anda menggunakan variabel lingkungan untuk prototipe cepat, pastikan manajemen rahasia di CI/CD mengganti nilai tersebut dalam pipeline build.

Bagaimana menghindari pengiriman PII dan data suara sensitif?

  • Redaksi atau anonimisasi PII apa pun sebelum mengirim teks ke CometAPI. Hapus nama, alamat, nomor akun, dan data apa pun yang tidak ingin Anda ungkapkan.
  • Minta persetujuan saat skill harus memproses data pribadi yang sensitif atau saat menggunakan fitur profil pribadi (sesuai kebijakan Alexa).
  • Retensi & log: beri tag log dan trace sehingga proses audit dapat menghapus input model atas permintaan; terapkan jendela retensi yang selaras dengan kebijakan privasi Anda.

Bagaimana mengelola latensi dan pengalaman pengguna Alexa?

Mengapa progressive responses dan timeout penting?

Alexa mengharapkan respons dari skill Anda dalam sekitar 8 detik untuk sebagian besar antarmuka; jika backend Anda (dan panggilan model) akan melebihi jendela tersebut, Anda harus menggunakan Progressive Response API untuk menjaga keterlibatan pengguna. Progressive responses memberi tahu pengguna bahwa skill sedang bekerja (misalnya, “sebentar, saya carikan jawabannya”), yang secara signifikan meningkatkan persepsi latensi dalam interaksi suara. Implementasikan progressive response segera setelah Anda menerima intent dan sebelum panggilan LLM yang panjang.

Dapatkah Anda melakukan streaming keluaran model ke Alexa?

CometAPI dan beberapa varian Claude mendukung primitive streaming (token atau event streaming). Namun, perangkat Alexa tidak mendukung streaming token berkelanjutan dengan cara yang sama seperti UI web. Pendekatan praktisnya adalah:

  • Gunakan progressive responses untuk menerbitkan pesan singkat sementara saat menghasilkan jawaban lengkap.
  • Jika backend Anda menerima token streaming dari model, buffer dan tampilkan hanya kalimat atau paragraf lengkap pada interval reguler (misalnya, setiap 800–1200 ms) sebagai progressive responses, dan berikan TTS final yang telah dikonsolidasikan saat siap. Ini menghindari ucapan yang terputus-putus dan menghormati model respons Alexa.

Rancang prompt yang ramah suara

Batasi verbositas pada tingkat prompt. Gunakan instruksi sistem seperti:

“Anda adalah asisten suara Alexa yang ringkas. Berikan jawaban lisan tidak lebih dari 30 kata dan kartu dengan ringkasan lebih panjang untuk aplikasi Alexa.”

Untuk keluaran terstruktur, minta model mengembalikan JSON dengan field speech dan card. Parsing keluaran ini di sisi server dan petakan speech ke SSML dan card ke kartu aplikasi Alexa. Ini mengurangi kejutan dan meningkatkan kualitas TTS.

Dapatkah saya melakukan streaming respons Claude ke Alexa agar pengguna mendengar teks saat dihasilkan?

Apakah streaming didukung oleh Claude, dan bagaimana Alexa menanganinya?

Claude mendukung streaming melalui Server-Sent Events (SSE) saat Anda mengatur stream:true pada Messages API — ini memungkinkan backend Anda menerima token secara bertahap. Namun, model pemutaran perangkat Alexa tidak menerima ucapan token-per-token langsung dari backend Anda. Pola praktisnya adalah:

  1. Gunakan streaming Claude di backend Anda untuk mulai menerima respons saat masih dihasilkan.
  2. Saat backend menerima potongan streaming, kirim satu atau lebih progressive response Alexa agar pengguna mendengar “Saya sedang mengerjakannya” atau pesan sementara yang singkat.
  3. Saat backend memiliki potongan yang berguna (atau jawaban penuh), sintesis potongan tersebut (SSML) dan berikan respons. Untuk jawaban sangat panjang, pertimbangkan memecah respons menjadi bagian yang mudah dicerna (dan atur shouldEndSession sesuai).

Batasan penting: progressive responses membantu tetapi tidak memperpanjang jendela pemrosesan maksimum; Alexa tetap mengharapkan respons keseluruhan dalam waktu yang diizinkan. Streaming dapat mengurangi waktu tunggu backend dan meningkatkan UX, tetapi Anda harus merancang sesuai model waktu Alexa.

Rekomendasi praktik terbaik teknik dan UX?

Desain percakapan

  • Jaga jawaban lisan tetap singkat — pengguna Alexa lebih menyukai respons ringkas.
  • Gunakan SSML untuk mengontrol tempo dan jeda.
  • Jika model mungkin mengajukan pertanyaan klarifikasi, rancang set kecil pertanyaan lanjutan agar dialog terasa natural.

Mode kegagalan dan timeout

  • Berikan fallback yang anggun saat Claude lambat/tidak tersedia.
  • Jika panggilan LLM Anda gagal, gunakan konten siap pakai atau permintaan maaf singkat dan tawarkan untuk mencoba lagi nanti.
  • Lacak error dan keluhan pengguna untuk iterasi cepat.

Pengujian

  • Uji unit intent dengan Alexa Test Simulator dan Virtual Alexa.
  • Uji beban backend Anda untuk panggilan bersamaan yang diharapkan dan sesi suara berdurasi panjang.

Jebakan umum yang harus dihindari?

  1. Memblokir jendela waktu Alexa — jangan melebihi batas waktu Alexa; gunakan progressive responses dan streaming secara cerdas.
  2. Kebocoran rahasia — jangan pernah mencatat kunci API atau menanamnya di kode klien; gunakan Secrets Manager.
  3. Penggunaan token berlebihan — riwayat percakapan panjang dan prompt verbose meningkatkan biaya; pangkas dan rangkum.
  4. Ketidaksesuaian kebijakan — mengirim data sensitif ke LLM pihak ketiga tanpa persetujuan pengguna yang jelas atau pemeriksaan kebijakan.

Contoh praktis prompt dan kiat rekayasa prompt untuk suara Alexa

Gunakan instruksi sistem singkat untuk kesesuaian suara

Contoh: "You are a concise, polite Alexa voice assistant. Keep spoken answers to ~30 words; offer to send longer summaries to the Alexa app."

Kendalikan verbositas dan format untuk SSML

Minta Claude mengeluarkan hasil dalam sejumlah kecil kalimat atau dalam JSON dengan field speech dan card. Kemudian konversi speech menjadi SSML dan card menjadi kartu Skill. Contoh akhiran prompt: "Return a JSON object with fields: 'speech' (short, for TTS), 'card' (longer text for the Alexa app). Do not include any extra text." Parsing keluaran terstruktur mengurangi ambiguitas.

Prompt untuk tindak lanjut dan saran

Dorong Claude untuk mengakhiri dengan pertanyaan jika sesuai: "Would you like me to send this summary to your Alexa app?" Ini membantu menjaga interaksi suara tetap natural dan mudah ditemukan.

Apakah ada alternatif no-code atau low-code?

Ya — platform integrasi seperti Zapier dan AppyPie menawarkan konektor untuk mengaitkan pemicu Alexa ke aksi Claude jika Anda menginginkan automasi cepat atau prototipe tanpa menulis kode server. Alat tersebut paling cocok untuk alur kerja sederhana tetapi tidak akan memberikan latensi rendah atau kontrol keamanan seperti backend kustom.

Dalam alternatif low-code seperti Zapier, CometAPI juga dapat membantu pengembang.

Kesimpulan:

Mengintegrasikan Claude dari CometAPI ke dalam skill Alexa adalah jalur menarik untuk dengan cepat mendapatkan akses ke LLM kelas Anthropic dengan satu integrasi yang kompatibel dengan OpenAI. Migrasi teknisnya mudah bagi tim yang sudah akrab dengan API chat/completion, dan model agregasi CometAPI mempercepat eksperimen.

Developer dapat mengakses Claude API melalui CometAPI. Untuk memulai, jelajahi kemampuan model di CometAPI dalam Playground dan lihat panduan API untuk instruksi terperinci. Sebelum mengakses, pastikan Anda telah masuk ke CometAPI dan memperoleh kunci API. CometAPI menawarkan harga yang jauh lebih rendah dibanding harga resmi untuk membantu Anda berintegrasi.

Siap mulai?→ Uji coba gratis API Claude!

Siap memangkas biaya pengembangan AI hingga 20%?

Mulai gratis dalam beberapa menit. Kredit uji coba gratis disertakan. Tidak perlu kartu kredit.

Baca Selengkapnya