- Anthropic đã bật hỗ trợ CORS cho JSON API
- Nghĩa là giờ đây có thể gọi trực tiếp Claude LLM từ trình duyệt của người dùng
- Tính năng này được ẩn trong PR "anthropic-sdk-typescript: add support for browser usage"
- Khi xem kỹ, các thay đổi trong Anthropic TypeScript SDK cho đoạn mã đó cho thấy một tính năng mới của JSON API
- Có thể kích hoạt hỗ trợ CORS cho Anthropic API bằng cách thêm header HTTP sau:
anthropic-dangerous-direct-browser-access: true
- Khi thêm header này, có thể gọi trực tiếp các model của Anthropic từ trình duyệt
- Anthropic trước đây do dự trong việc bổ sung tính năng này vì nếu nhúng API key vào mã phía client, bất kỳ ai có thể truy cập trang đó cũng có thể đánh cắp API key và gửi yêu cầu thay bạn
- Dù vậy, vẫn có một số trường hợp sử dụng khá hợp lý cho tính năng này
- Phù hợp với các công cụ nội bộ của công ty chỉ lộ ra cho những người dùng đáng tin cậy
- Hoặc cũng có thể triển khai mô hình "BYOK(Bring Your Own Key)", nơi người dùng tự cung cấp key của họ để dùng trong ứng dụng phía client
Haiku - ví dụ ứng dụng phía client
- Trang Haiku được làm nhanh là một ví dụ về ứng dụng phía client cần hỗ trợ CORS
- Đây là một ứng dụng đơn giản: xin quyền truy cập webcam, yêu cầu API key của Anthropic (lưu trong
localStorage của trình duyệt), chụp ảnh rồi dùng model Haiku để biến nó thành một bài haiku
- Trước đây phải chạy proxy riêng trên Vercel để thêm hỗ trợ CORS cho Anthropic API
- Giờ đây ứng dụng đã được nâng cấp để gửi header mới, và có thể giao tiếp trực tiếp với Anthropic mà không cần 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 bình luận
Ý kiến Hacker News
Cá nhân tôi thích làm các ứng dụng web nơi người dùng tự mang theo khóa của mình
Trong trường hợp người dùng tự mang khóa của mình thì đây không phải là vấn đề
Tôi không hiểu vì sao lại không hỗ trợ JWT
Anthropic và mọi nhà cung cấp AI nên triển khai tính năng "Đăng nhập bằng ___"
Nếu người dùng tự mang khóa của mình thì OAuth là giải pháp tốt hơn
Có thể phù hợp cho phát triển nội bộ, nhưng không phù hợp cho ứng dụng hướng tới người dùng