- Anthropic hat CORS-Unterstützung für seine JSON API aktiviert
- Das bedeutet, dass Claude LLM jetzt direkt aus dem Browser des Nutzers aufgerufen werden kann
- Diese Funktion ist im PR „anthropic-sdk-typescript: add support for browser usage“ versteckt
- Beim genaueren Hinsehen zeigen die Änderungen am Anthropic TypeScript SDK für diesen Code neue JSON-API-Funktionen
- Die CORS-Unterstützung für die Anthropic API lässt sich durch Hinzufügen des folgenden HTTP-Request-Headers aktivieren:
anthropic-dangerous-direct-browser-access: true
- Mit diesem Header können Aufrufe an Anthropic-Modelle direkt aus dem Browser erfolgen
- Anthropic war bislang zurückhaltend mit der Einführung dieser Funktion, weil bei Einbettung des API-Schlüssels in Client-Code jeder Nutzer mit Zugriff auf die Seite den API-Schlüssel stehlen und auf eigene Rechnung Anfragen stellen kann
- Trotzdem gibt es einige sinnvolle Use Cases für diese Funktion
- Für interne Unternehmens-Tools, die nur vertrauenswürdigen Nutzern zugänglich sind, ist das in Ordnung
- Oder man kann das Muster „BYOK (Bring Your Own Key)“ umsetzen, bei dem Nutzer ihren eigenen Schlüssel für die Verwendung in der clientseitigen App bereitstellen
Haiku - Beispiel für eine clientseitige App
- Die schnell gebaute Haiku-Seite ist ein Beispiel für eine clientseitige App, die CORS-Unterstützung benötigt
- Die App fragt den Zugriff auf die Webcam sowie einen Anthropic-API-Schlüssel an (der im
localStorage des Browsers gespeichert wird), macht anschließend ein Foto und verwandelt es mit dem Haiku-Modell in ein Haiku
- Zuvor musste dafür ein eigener Proxy auf Vercel betrieben werden, um der Anthropic API CORS-Unterstützung hinzuzufügen
- Jetzt wurde die App so aktualisiert, dass sie den neuen Header sendet und ohne Proxy direkt mit Anthropic kommunizieren kann
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 Kommentare
Hacker-News-Kommentare
Ich mag persönlich Web-Apps, bei denen Nutzer ihren eigenen Key mitbringen.
In Fällen, in denen Nutzer ihren eigenen Key mitbringen, ist das kein Problem.
Ich verstehe nicht, warum JWT nicht unterstützt wird.
Anthropic und alle AI-Anbieter sollten eine Funktion „Login with ___“ implementieren.
Wenn Nutzer ihren eigenen Key mitbringen, ist OAuth die bessere Lösung.
Für interne Entwicklung kann das geeignet sein, aber nicht für Apps für Endnutzer.