GPT-4より優秀なClaude APIで LINEbotをGAS (Google Apps Script) で作る方法
話題のClaude3にもAPIがあったので、LINEボットを作ってみました! 誰でも簡単に無料で(しかもクレジットカード登録なしで)作れると思います。
ぜひ挑戦してみてください!
◆ 作成したLINEボット
「Claude3くん」というのを作成したので、友だち登録して何か送ってみてください。
※無料で使える5ドル分を使い切ったら動かなくなると思います。悪しからず。
◆ プログラム
// LINE developersのメッセージ送受信設定に記載のアクセストークン
const LINE_TOKEN = ''; // Messaging API設定の一番下で発行できるLINE Botのアクセストークン(Channel Secretはいらないみたいです。)
const LINE_URL = 'https://api.line.me/v2/bot/message/reply';
//postリクエストを受取ったときに発火する関数
function doPost(e) {
// 応答用Tokenを取得
const replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
// メッセージを取得
const userMessage = JSON.parse(e.postData.contents).events[0].message.text;
// クロードの返答を取得
const claudeMessage = callClaude(userMessage);
// 返答用メッセージを作成
// スタンプのリスト -> https://developers.line.biz/en/docs/messaging-api/sticker-list/
const messages = []
// ***************************
// スプレットシートからデータを抽出
// ***************************
// 1. 今開いている(紐付いている)スプレッドシートを定義
const sheet = SpreadsheetApp.getActiveSpreadsheet();
// 2. ここでは、デフォルトの「シート1」の名前が書かれているシートを呼び出し
const listSheet = sheet.getSheetByName("シート1");
// ***************************
// スプレッドシートにデータを入力
// ***************************
// 最終列にデータを新しく入力
listSheet.appendRow([userMessage, claudeMessage])
// 返答用メッセージを追加
const after_msg = {
'type': 'text',
'text': claudeMessage,
}
messages.push(after_msg);
// lineで返答する
UrlFetchApp.fetch(LINE_URL, {
'headers': {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': `Bearer ${LINE_TOKEN}`,
},
'method': 'post',
'payload': JSON.stringify({
'replyToken': replyToken,
'messages': messages,
}),
});
ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}
function callClaude(message) {
const apiKey = '';
const model = 'claude-3-opus-20240229';
const maxTokens = 1024;
const messages = [{ role: 'user', content: message }];
const url = 'https://api.anthropic.com/v1/messages';
const payload = {
model: model,
max_tokens: maxTokens,
messages: messages,
};
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': apiKey,
'anthropic-version': '2023-06-01',
},
payload: JSON.stringify(payload),
};
try {
const response = UrlFetchApp.fetch(url, options);
const responseText = response.getContentText();
const json = JSON.parse(responseText);
console.log(json);
console.log(json.content[0].text)
return json.content[0].text;
} catch (error) {
console.log('Error:', error);
return error;
}
}
◆ 参考資料
◆ Claude 公式チャットページ
◆ Claude3 API 発行ページ
◆ Claudeのモデルの概要
プログラム内で使用しているモデルは「claude-3-opus-20240229」です。
◆ LINE Developers
◆ PR(Udemy 講座)
◆ YouTube チャンネル登録
この記事が気に入ったらサポートをしてみませんか?