- Anthropic เปิดใช้งานการรองรับ CORS สำหรับ JSON API แล้ว
- นั่นหมายความว่าตอนนี้สามารถเรียกใช้ Claude LLM ได้โดยตรงจากเบราว์เซอร์ของผู้ใช้
- ฟีเจอร์นี้ซ่อนอยู่ใน PR ชื่อ "anthropic-sdk-typescript: add support for browser usage"
- เมื่อลองไล่ดู พบว่าการเปลี่ยนแปลงใน Anthropic TypeScript SDK สำหรับโค้ดดังกล่าวแสดงให้เห็นฟีเจอร์ใหม่ของ JSON API
- สามารถเปิดใช้การรองรับ CORS สำหรับ Anthropic API ได้โดยเพิ่ม HTTP request header ต่อไปนี้:
anthropic-dangerous-direct-browser-access: true
- เมื่อเพิ่ม header นี้ ก็จะสามารถเรียกใช้โมเดลของ Anthropic ได้โดยตรงจากเบราว์เซอร์
- Anthropic เคยลังเลที่จะเพิ่มฟีเจอร์นี้ เพราะหากใส่ API key ไว้ในโค้ดฝั่งไคลเอนต์ ผู้ใช้ที่เข้าถึงเว็บไซต์นั้นได้ก็อาจขโมย API key ไปใช้ส่งคำขอแทนได้
- ถึงอย่างนั้น ก็ยังมี use case ที่เหมาะสมสำหรับฟีเจอร์นี้อยู่บ้าง
- ใช้ได้ดีกับเครื่องมือภายในบริษัทที่เปิดให้ผู้ใช้ที่เชื่อถือได้
- หรืออาจใช้รูปแบบ "BYOK (Bring Your Own Key)" ที่ให้ผู้ใช้ใส่คีย์ของตนเองเพื่อใช้งานในแอปฝั่งไคลเอนต์ก็ได้
Haiku - ตัวอย่างแอปฝั่งไคลเอนต์
- หน้า Haiku ที่ทำขึ้นแบบง่าย ๆ เป็นตัวอย่างของแอปฝั่งไคลเอนต์ที่ต้องการการรองรับ CORS
- เป็นแอปง่าย ๆ ที่ขอสิทธิ์เข้าถึงเว็บแคม ขอ Anthropic API key (แล้วเก็บไว้ใน
localStorage ของเบราว์เซอร์) จากนั้นถ่ายภาพและใช้โมเดล Haiku เปลี่ยนภาพนั้นให้เป็นไฮกุ
- ก่อนหน้านี้จำเป็นต้องรันพร็อกซีของตัวเองบน Vercel เพื่อเพิ่มการรองรับ CORS ให้กับ Anthropic API
- ตอนนี้ได้อัปเกรดแอปให้ส่ง header ใหม่นี้แล้ว และสามารถสื่อสารกับ Anthropic ได้โดยตรงโดยไม่ต้องมีพร็อกซี
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 ความคิดเห็น
ความคิดเห็นจาก Hacker News
โดยส่วนตัวชอบทำเว็บแอปที่ให้ผู้ใช้นำคีย์ของตัวเองมาใช้
ในกรณีที่ผู้ใช้นำคีย์ของตัวเองมาใช้ ก็ไม่ใช่ปัญหา
ไม่เข้าใจว่าทำไมถึงไม่รองรับ JWT
Anthropic และผู้ให้บริการ AI ทุกรายควรทำฟีเจอร์ "Login with ___"
ถ้าผู้ใช้นำคีย์ของตัวเองมาใช้ OAuth เป็นทางออกที่ดีกว่า
อาจเหมาะกับการพัฒนาภายในองค์กร แต่ไม่เหมาะกับแอปที่ทำให้ผู้ใช้ทั่วไป