📗
【GAS】スプレッドシート上で「Claude」を使ってみる。
この記事では、スプレッドシート上でClaude(Anthropic)を使ってテキスト生成をする「カスタム関数」 を作ります。
今回作るもの
こんな感じで使えるカスタム関数を作ります。
準備:用意するもの
- Anthropicのアカウント
- AnthropicのAPIキー(APIキーを発行する)
手順
- Google App Scriptを作成する
- APIキーを設定する
-
コード.gs
にコードを記載する - スプレッドシートから関数を使う
1)Google App Scriptを作成する
まず「拡張機能」にある「App Script」をクリックして、App Scriptを作成します。
2)APIキーを設定する
左のメニューバーから「プロジェクトの設定」を選択します。下の方にある「スクリプト プロパティ」にAPIキーを設定します。
コード.gs
にコードを記載する
3)コード.gs
に下記コードを貼り付けて保存します。
/**
* Anthropic APIを使用してチャット応答を生成します。
*
* @param {string} userPrompt ユーザーからの入力テキスト
* @param {string} systemPrompt システムプロンプト(省略可)
* @param {"claude-3-5-sonnet-latest"|"claude-3-5-haiku-latest"|"claude-3-opus-latest"|"claude-3-sonnet-20240229"|"claude-3-haiku-20240307"} model 使用するモデル
* @param {number=} temperature 応答のランダム性(0.1-1.0の範囲、省略可)
* @param {number=} maxToken 最大トークン数(デフォルト4096)
* @return {string} AIからの応答テキスト
* @customfunction
*/
function ChatAIAnthropic(userPrompt="", systemPrompt="", model, temperature, maxToken=4096) {
// 対応モデル
const validModels = [
"claude-3-5-sonnet-latest",
"claude-3-5-haiku-latest",
"claude-3-opus-latest",
"claude-3-sonnet-20240229",
"claude-3-haiku-20240307"
];
// バリデーション
if (userPrompt === "" || !userPrompt) throw new Error("プロンプトを入力してください");
if (model === "" || !model) throw new Error("モデルを指定してください");
if (!validModels.includes(model)) throw new Error(`無効なモデルです。以下から選択してください: ${validModels.join(", ")}`);
// APIのセットアップ
const apiKey = PropertiesService.getScriptProperties().getProperty('ANTHROPIC_API_KEY');
const apiUrl = 'https://api.anthropic.com/v1/messages';
// メッセージの作成
const messages = [];
if (systemPrompt !== "") messages.push({'role': 'user', 'content': systemPrompt});
messages.push({'role': 'user', 'content': userPrompt});
// リクエストボディの作成
const requestBody = {
'model': model,
'messages': messages
};
// オプショナルパラメータが指定されている場合のみ追加
if (temperature !== "") requestBody.temperature = temperature;
if (maxToken !== "") requestBody.max_tokens = maxToken;
// リクエストの作成
const headers = {
'x-api-key': apiKey,
'anthropic-version': '2023-06-01',
'Content-type': 'application/json',
};
// リクエストの実行
const response = UrlFetchApp.fetch(apiUrl, {
'method': 'POST',
'headers': headers,
'payload': JSON.stringify(requestBody)
});
// レスポンスの解析
const responseBody = response.getContentText();
const responseJson = JSON.parse(responseBody);
const content = responseJson.content[0].text;
return content;
}
4)スプレッドシートから関数を使う
=ChatAIAnthropic(B2,C2,"claude-3-haiku-20240307")
参考ページ
- Anthropic Models
- Anthropic APIキー発行
- Anthropic APIリファレンス
Discussion