Claude AI เก่งภาษาไทยจริงไหม? มาลองพัฒนา LINE x Claude กันใน 3 ขั้นตอนเท่านั้น!

Tan Warit
LINE Developers Thailand
4 min readMay 13, 2024

ผมเคยเปรียบเทียบ AI 3 ตัวท๊อป (ChatGPT vs Gemini vs Claude) กันไปแล้ว ซึ่งใน Publication ของ LINE Developers Thailand ของเราก็มีเนื้อหาเกี่ยวกับการต่อ LINE API กับ ChatGPT และ Gemini หลายๆบทความ แต่ยังไม่มีบทความที่ลองเชื่อมต่อกับ Claude วันนี้เราเลยจะมาลองพัฒนา LINE API เชื่อมต่อกับ Claude กันบ้างฮะ!

รู้จักกับ Claude กันหน่อย

แนะนำสั้นๆครับ Claude AI ถูกพัฒนาโดยบริษัทชื่อ ‘Anthropic’ ซึ่งหลายๆคนมองว่า AI ของบริษัทนี้กำลังเป็นคู่แข่งที่เทียบชั้น ChatGPT และ Gemini ได้เลย

เกร็ดประวัติศาสตร์ที่น่าสนใจคือ Anthropic ก่อตั้งขึ้นจากทีมงานเก่าของ OpenAI (OMG) ได้รับเงินลงทุนจากยักษ์ใหญ่ทั้ง Amazon, Google และ Salesforceโดยย้อนกลับไปช่วงต้นปี 2023 ทาง Anthropic ได้เปิดตัว ‘Claude’ (คลอด์) โมเดลแรกออกมา หลังจากนั้นไม่นานในเดือนกรกฎาคม 2023 ก็ได้ปิดตัว Claude 2 โมเดลที่มีประสิทธิภาพมากกว่ารุ่นก่อน และโมเดลล่าสุดเมื่อวันที่ 3 มีนาคม 2024 Anthropic เปิดตัว ‘Claude 3' โมเดล AI แบบ Multimodal เวอร์ชันใหม่ที่เคลมว่าเก่งและทรงพลังกว่าโมเดลอื่นๆในตลาดขณะนั้น (เคลมได้แปปนึง ChatGPT ก็ออกตัวอัพเดทมาใหม่ ผลัดกันแซง 55+)

ความเจ๋งของ Claude AI คือมันสามารถวิเคราะห์ข้อมูลที่ซับซ้อนและการตอบคำถามที่เกี่ยวกับข้อเท็จจริงได้แม่น วิเคราะห์รูปภาพหลายๆรูปแบบอย่างแม่นยำ รวมไปถึงความเข้าใจด้านภาษาที่โดดเด่นของ Claude ที่ถูกใจผู้ใช้ชาวไทยเป็นอย่างมาก

ตระกูล Claude 3 มีโมเดลย่อย 3 ตัวครับได้แก่

  • Claude 3 Opus โมเดลขนาดใหญ่และแพงที่สุด ทำงานช้าหน่อยแต่จะเหมาะกับงานที่มีความซับซ้อนสูง ต้องใช้การวิเคราะห์หนักๆ
  • Claude 3 Sonnet โมเดลขนาดกลางที่เหมาะกับงานขององค์กรธุรกิจทั่วๆไป มีราคาถูกลงมา
  • Claude 3 Haiku โมเดลขนาดเล็กสุด เร็วและราคาถูกที่สุดด้วย เหมาะกับงานที่เน้นการโต้ตอบแบบ Real-time สร้างประสบการณ์ AI ที่ราบรื่นเหมือนโต้ตอบกับมนุษย์ (เราจะใช้ตัวนี้ในบทความนี้นะครับ ผมลองตัว Opus แล้วมันแอบช้าไปสำหรับเอาไว้แชท)
https://docs.anthropic.com/claude/docs/models-overview#model-comparison

3 Steps ในการพัฒนา

สิ่งที่เราจะทำใน Chatbot ตัวนี้ก็ง่ายๆมีอยู่แค่ 3 ขั้นตอนเท่านั้นครับ ได้แก่

  1. สร้าง LINE Chatbot ด้วย Cloud Functions
  2. สมัครเข้าใช้งาน Claude API และสร้าง Secret Key เพื่อเข้าใช้งาน
  3. พัฒนาระบบเพื่อจัดการข้อความในกลุ่มไลน์จาก Webhook เรียกใช้ Claude API และส่งผลลัพธ์หาผู้ใช้

1. สร้าง LINE Chatbot ด้วย Cloud Functions

สำหรับใครที่ยังไม่เคยพัฒนา LINE Chatbot ด้วย Cloud Functions for Firebase ให้ทำตามขั้นตอนของบทความนี้เพื่อสร้าง Chatbot ขึ้นมาก่อน (เฉพาะข้อ 1,2,3 ก็พอครับ) และบทความนี้ (เฉพาะข้อ 2)

2. สมัครเข้าใช้งาน Claude API และสร้าง Secret Key เพื่อเข้าใช้งาน

ก่อนจะไปเริ่มพัฒนาผมอยากให้เราได้ API Key เพื่อเอาไว้เข้าใช้งาน Claude API กันก่อน แรกสุดให้ไป Sign up สมัครเข้าใช้งาน Claude ให้เรียบร้อยที่ https://www.anthropic.com/api

พอสมัครเรียบร้อยแล้วจะเข้าไปที่หน้า Console ในหน้าแรกให้ทำการกดปุ่ม Get API Key > Create Key ด้านขวามือ > ตั้งชื่อ Key

เมื่อได้ Secret key แล้วให้ Copy เก็บไว้ให้ดีๆเพราะมันจะไม่สามารถเรียกมาดูได้ใหม่แล้ว ถ้าเราทำหายก็คือกดสร้างใหม่ลูกเดียวฮะ

Claude Billing

ถ้าเราเพิ่งสมัครใหม่เลยจะมี Free Credit ให้มาด้วย 5$ สามารถทดลองใช้ได้เลยฮะ ส่วนเรื่องราคาดูรายละเอียดได้เพิ่มเติมที่นี่เลยครับ

3. พัฒนาระบบเพื่อจัดการข้อความในกลุ่มไลน์จาก Webhook เรียกใช้ Claude API และส่งผลลัพธ์หาผู้ใช้

ในโฟลเดอร์ /functions ของโปรเจคที่เราได้เตรียมไว้(ขั้นตอนที่ 1) ให้เปิดไฟล์ package.json ขึ้นมา แล้วเพิ่ม dependency ชื่อ axios และ @anthropic-ai/sdk เข้าไปครับ

"dependencies": {
"axios": "^1.6.8",
"firebase-admin": "^12.1.0",
"firebase-functions": "^5.0.0",
"@anthropic-ai/sdk": "0.20.9"
}

จากนั้นให้เปิดไฟล์ index.js ขึ้นมาและสร้างฟังก์ชันต่างๆตาม code ด้านล่างนี้ครับ (XXXX แทนด้วยค่า Channel Access Token ส่วน YYYY แทนด้วยค่า Claude Secret Key)

const { onRequest } = require("firebase-functions/v2/https");

const axios = require("axios");

const LINE_HEADER = {
"Content-Type": "application/json",
Authorization: "Bearer XXXX"
};

const Anthropic = require("@anthropic-ai/sdk");
const anthropic = new Anthropic({
apiKey: 'YYYY'
});

exports.webhook = onRequest(async (req, res) => {
if (req.method === "POST") {
const events = req.body.events;
for (const event of events) {
const userId = event.source.userId;
await loading(userId);
if (event.type === "message" && event.message.type === "text") {
const response = await anthropicRequest(event.message.text);
await reply(event.replyToken, [{ type: "text", text: response }]);
}
}
}
res.send(req.method);
});

const anthropicRequest = async (message) => {
const responseMessage = await anthropic.messages.create({
model: "claude-3-haiku-20240307",
max_tokens: 1024,
messages: [
{"role": "user", "content": message}
]
});

console.log(JSON.stringify(responseMessage));
console.log(JSON.stringify(responseMessage.content[0].text));
return responseMessage.content[0].text;
}

const reply = (token, payload) => {
return axios({
method: "post",
url: "https://api.line.me/v2/bot/message/reply",
headers: LINE_HEADER,
data: { replyToken: token, messages: payload }
});
};

function loading(userId) {
return axios({
method: "post",
url: "https://api.line.me/v2/bot/chat/loading/start",
headers: LINE_HEADER,
data: { chatId: userId }
});
}

จากนั้นให้เปิด Terminal หรือ Command line แล้ว cd ไปที่ /functions จากนั้นให้เรียกคำสั่งด้านล่างก็สามารถทำการ Deploy ได้เบยยย

firebase deploy --only function

เมื่อ Deploy เรียบร้อยแล้วให้เอา URL ที่มี /webhook กลับไปใส่ใน LINE Developers Console พร้อมทั้งกดเปิด Use webhook ก็เป็นอันเรียบร้อยฮะ

ทดสอบ

สรุป

ในบทความนี้เราได้เรียนรู้เกี่ยวกับ Claude AI ซึ่งเป็น LLM อีกตัวที่กำลังได้รับความนิยมอย่างมากในโลกของ AI และถือเป็นจิ๊กซอว์ชิ้นสุดท้ายใน Publication ของ LINE Developers Thailand ที่มีบทความทั้ง ChatGPT, Gemini และ Claude ให้นักพัฒนา LINE DEV ลองไปเล่นเปรียบเทียบกันดูฮะ!

Reference

--

--