- Anthropic a activé la prise en charge de CORS pour son API JSON
- Cela signifie qu’il est désormais possible d’appeler directement le LLM Claude depuis le navigateur de l’utilisateur
- Cette fonctionnalité est cachée dans la PR « anthropic-sdk-typescript: add support for browser usage »
- En creusant, les modifications apportées au SDK TypeScript d’Anthropic pour ce code révèlent une nouvelle capacité de l’API JSON
- Il est possible d’activer la prise en charge de CORS pour l’API Anthropic en ajoutant l’en-tête HTTP suivant :
anthropic-dangerous-direct-browser-access: true
- En ajoutant cet en-tête, il devient possible d’effectuer des appels directs aux modèles Anthropic depuis le navigateur
- Anthropic hésitait à ajouter cette fonctionnalité, car si une clé API est incluse dans le code client, tout utilisateur ayant accès au site peut la voler et envoyer des requêtes à votre place
- Malgré cela, il existe quelques cas d’usage valables pour cette fonctionnalité
- Elle convient à des outils internes d’entreprise exposés à des utilisateurs de confiance
- Il est aussi possible de mettre en œuvre un modèle « BYOK (Bring Your Own Key) » dans lequel l’utilisateur fournit sa propre clé pour l’utiliser dans l’application côté client
Haiku - exemple d’application côté client
- La page Haiku créée rapidement est un exemple d’application côté client nécessitant la prise en charge de CORS
- C’est une application simple qui demande l’accès à la webcam, puis une clé API Anthropic (stockée dans le
localStorage du navigateur), prend une photo et la transforme en haïku à l’aide du modèle Haiku
- Auparavant, il fallait exécuter son propre proxy sur Vercel pour ajouter la prise en charge de CORS à l’API Anthropic
- L’application a maintenant été mise à jour pour envoyer le nouvel en-tête et peut communiquer directement avec Anthropic, sans 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 commentaires
Avis sur Hacker News
Personnellement, j’aime créer des applications web où l’utilisateur apporte sa propre clé
Ce n’est pas un problème quand les utilisateurs apportent leur propre clé
Je ne comprends pas pourquoi JWT n’est pas pris en charge
Anthropic et tous les fournisseurs d’IA devraient implémenter une fonction « Login with ___ »
Quand les utilisateurs apportent leur propre clé, OAuth est une meilleure solution
Cela peut convenir au développement interne, mais pas aux applications destinées aux utilisateurs