- Anthropic telah mengaktifkan dukungan CORS untuk JSON API mereka
- Artinya, kini Claude LLM bisa dipanggil langsung dari browser pengguna
- Fitur ini tersembunyi di PR "anthropic-sdk-typescript: add support for browser usage"
- Setelah ditelusuri, perubahan pada Anthropic TypeScript SDK untuk kode tersebut memperlihatkan fitur baru di JSON API
- Dukungan CORS untuk Anthropic API bisa diaktifkan dengan menambahkan header permintaan HTTP berikut:
anthropic-dangerous-direct-browser-access: true
- Dengan menambahkan header ini, pemanggilan ke model Anthropic bisa dilakukan langsung dari browser
- Anthropic selama ini enggan menambahkan fitur ini karena jika API key dimasukkan ke dalam kode klien, siapa pun yang memiliki akses ke situs tersebut bisa mencuri API key dan menggunakannya untuk membuat permintaan atas nama pengguna
- Meski begitu, ada beberapa use case yang cukup masuk akal untuk fitur ini
- Cocok untuk alat internal perusahaan yang hanya digunakan oleh pengguna tepercaya
- Atau bisa juga menerapkan pola "BYOK(Bring Your Own Key)" di mana pengguna menyediakan key mereka sendiri untuk dipakai di aplikasi sisi klien
Haiku - contoh aplikasi sisi klien
- Halaman Haiku yang dibuat sederhana ini adalah contoh aplikasi sisi klien yang membutuhkan dukungan CORS
- Aplikasi ini meminta akses ke webcam, lalu meminta Anthropic API key (disimpan di
localStorage browser), mengambil foto, dan menggunakan model Haiku untuk mengubahnya menjadi haiku
- Sebelumnya, perlu menjalankan proxy sendiri di Vercel untuk menambahkan dukungan CORS ke Anthropic API
- Sekarang aplikasinya telah diperbarui agar mengirim header baru tersebut, dan bisa berkomunikasi langsung dengan Anthropic tanpa proxy
fetch("https://api.anthropic.com/v1/messages", {
method: "POST",
headers: {
"x-api-key": apiKey,
"anthropic-version": "2023-06-01",
"content-type": "application/json",
"anthropic-dangerous-direct-browser-access": "true",
},
body: JSON.stringify({
model: "claude-3-haiku-20240307",
max_tokens: 1024,
messages: [
{
role: "user",
content: [
{ type: "text", text: "Return a haiku about how great pelicans are" },
],
},
],
}),
})
.then((response) => response.json())
.then((data) => {
const haiku = data.content[0].text;
alert(haiku);
});
1 komentar
Komentar Hacker News
Secara pribadi saya suka membuat aplikasi web yang meminta pengguna membawa kunci mereka sendiri
Dalam situasi di mana pengguna membawa kunci mereka sendiri, ini bukan masalah
Saya tidak mengerti mengapa JWT tidak didukung
Anthropic dan semua vendor AI seharusnya mengimplementasikan fitur "Login with ___"
Jika pengguna membawa kunci mereka sendiri, OAuth adalah solusi yang lebih baik
Mungkin cocok untuk pengembangan internal, tetapi tidak cocok untuk aplikasi yang ditujukan kepada pengguna