- Anthropic, JSON API için CORS desteğini etkinleştirdi
- Bu da artık kullanıcının tarayıcısından doğrudan Claude LLM çağrısı yapılabileceği anlamına geliyor
- Bu özellik, "anthropic-sdk-typescript: add support for browser usage" PR'ında gizliydi
- İncelendiğinde, ilgili koda yönelik Anthropic TypeScript SDK değişiklikleri yeni JSON API özelliğini ortaya koyuyor
- Aşağıdaki HTTP istek başlığı eklenerek Anthropic API için CORS desteği etkinleştirilebiliyor:
anthropic-dangerous-direct-browser-access: true
- Bu başlık eklendiğinde tarayıcıdan doğrudan Anthropic modellerine çağrı yapılabiliyor
- API anahtarı istemci koduna gömülürse, siteye erişebilen kullanıcılar bu API anahtarını çalıp onun yerine istek gönderebileceği için Anthropic bu özelliği eklemeye isteksizdi
- Buna rağmen bu özellik için birkaç makul kullanım senaryosu var
- Güvenilir kullanıcılara açık şirket içi araçlar için uygun olabilir
- Ya da kullanıcıların istemci taraflı uygulamada kullanmak üzere kendi anahtarlarını sağladığı "BYOK(Bring Your Own Key)" desenini uygulamak mümkün
Haiku - istemci taraflı uygulama örneği
- Hızlıca hazırlanmış Haiku sayfası, CORS desteği gerektiren istemci taraflı bir uygulama örneği
- Web kamerasına erişim istiyor, ardından Anthropic API anahtarını istiyor (tarayıcının
localStorage alanında saklıyor), sonra fotoğraf çekip Haiku modelini kullanarak bunu bir haikuya dönüştüren basit bir uygulama
- Daha önce Vercel üzerinde kendi proxy'sini çalıştırarak Anthropic API'ye CORS desteği eklemek gerekiyordu
- Artık uygulama yeni başlığı gönderecek şekilde güncellendi ve proxy olmadan doğrudan Anthropic ile iletişim kurabiliyor
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 yorum
Hacker News görüşleri
Kişisel olarak kullanıcıların kendi anahtarlarını getirdiği web uygulamaları yapmayı seviyorum
Kullanıcıların kendi anahtarlarını getirdiği durumlarda bu sorun olmaz
Neden JWT desteklenmediğini anlamıyorum
Anthropic ve tüm yapay zeka sağlayıcıları "Login with ___" özelliğini hayata geçirmeli
Kullanıcıların kendi anahtarlarını getirdiği durumda OAuth daha iyi bir çözüm
İç geliştirme için uygun olabilir ama son kullanıcıya yönelik uygulamalar için uygun değil