フォーム読み込み中
こんにちは。ご覧いただきありがとうございます。
ChatGPTをはじめとした生成AI(ジェネレ―ティブ AI)は今や注目の的になっていますね。
本日は Google スプレッドシートや Google ドキュメントと Azure OpenAI Service を連携する方法を紹介します。
Azure OpenAI Service は、マイクロソフトの Azure クラウドプラットフォーム上で OpenAI社のAI技術を利用できるサービスです。Azure OpenAI Service では、OpenAIが開発したChatGPTを含むGPT-3やCodex、GPT-4などのAIモデルを利用することができます。
Azure OpenAI Service を利用するには、Azure 上でリソースを作成し、モデルをデプロイする必要があります。
具体的な手順については、以下 Microsoft の公式ドキュメントを参考にすると分かりやすいです。
Azure OpenAI Service を使用してリソースを作成し、モデルをデプロイする
①サブスクリプション:既存のものを選択
②リソースグループ:新規作成
③リージョン:[France Central]か[West Europe]か[Japan East]を選択
④名前:任意の名前
⑤価格レベル:Standard S0
設定したリソースを見てみると以下の画面になります。
[キーの管理]をクリックすると[キー1]が表示されるのでコピーしておきます。こちらがAPIキーになります。
[キー1][キー2]がありますが、どちらを選んでも大丈夫です。
<1>モデル:使用したいモデルを選択
<2>デプロイ名:任意の名前
モデルのデプロイをすると、作成したデプロイが確認できます。
[デプロイ名]は次の手順で必要となるため、コピーしておきます。
新しい Google スプレッドシートを新規作成して、[拡張機能] - [App Scripts] から GAS の画面に移動します。
以下のスクリプトをコピーし、 Google Apps Script(以下GAS)に貼り付けます。
var apikey = "APIキー入力";
var model = "gpt-3.5-turbo";
var temperature = 0;
var url = "https://Azure OpenAI リソースの名前入力.openai.azure.com/openai/deployments/モデルデプロイの名前入力/chat/completions?api-version=2023-05-15";
function GPT(content, maxTokens=2048) {
if(content){
const requestBody = {
"model": model,
"messages": [{'role': 'user', 'content': content}],
"temperature": temperature,
"max_tokens": maxTokens
};
const requestOptions = {
"method": "POST",
"headers": {
"Content-Type": "application/json",
"api-key": apikey
},
"payload": JSON.stringify(requestBody)
};
var response = JSON.parse(UrlFetchApp.fetch(url, requestOptions).getContentText());
return response.choices[0].message.content.trim();
}else{
return "no result";
}
}
GAS 実行の際、スクリプト実行の承認を求められるので、[続行]をクリックします。(初回のみ、承認画面が出ます)
Google アカウントを選択後、[許可]をクリックします。
以下の様にセルA2に質問を記述して、セルB2に数式を入力します。関数名は「GPT」です。
GPT関数とは、質問を引数として指定して Azure OpenAI Service からの回答を表示できる関数です。
以下のように質問に対する回答が得られたら成功です。
新しい Google ドキュメントを新規作成して、[拡張機能] - [App Scripts] からGASの画面に移動します。
以下のスクリプトをコピーし、GAS に貼り付けます。ここでは OpenAI のAPIを使用して文章生成を行います。具体的には、以下の2つの関数を実装しています。
①AI関数:OpenAIのAPIを使用して、与えられたテキストに基づいて自動的に文章を生成します。
②CATEGORIZE関数:与えられたテキストを分類するために、AI関数を使用します。引数として、分類するためのカテゴリのリスト、入力テキスト、およびカテゴリを割り当てるためのルールのリストを受け取ります。これらの引数を使用してAI関数がプロンプトを生成し、AIが生成したテキストを整形して、入力テキストを与えられたカテゴリに割り当てます。
const apikey = "APIキー入力";
const MAX_TOKENS = 200;
function AI(prompt, temperature = 0, model = "gpt-3.5-turbo") {
const url = "https://Azure OpenAI リソースの名前入力.openai.azure.com/openai/deployments/モデルデプロイの名前入力/chat/completions?api-version=2023-05-15";
const requestBody = {
"model": model,
"messages": [{ 'role': 'user', 'content': prompt }],
"temperature": temperature,
"max_tokens": MAX_TOKENS
};
const options = {
"method": "POST",
"headers": {
"Content-Type": "application/json",
"api-key": apikey
},
"payload": JSON.stringify(requestBody)
};
const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
return res.choices[0].message.content;
}
function CATEGORIZE(categories, input, rules = []) {
const prompt = "The available categories are " + categories.map((c) => `"${c}"`).join(", ") + ". " + rules.join(". ") + "The category for '" + input + "' is ";
console.log(prompt);
const completion = AI(prompt, 0, "gpt-3.5-turbo");
// Replace "s and .s at the start and end of the string
return completion.replace(/^"/g, '').replace(/["|.]{0,2}$/, '');
}
GAS で[エディタ > +]から新たにスクリプトを作成します。名前は「Query2OpenAI.gs」などと付けてください。
その後、以下のスクリプトをコピーし、貼り付けます。
ここでは Google ドキュメントからテキスト情報を取得しています。
具体的には、以下の2つの関数を実装しています。
①getDocsSelection関数: Google ドキュメントから選択した範囲のテキスト情報を取得します。
②addText関数:OpenAIから受け取った情報を Google ドキュメントに渡します。
function getDocsSelection(e) {
var text = '';
var selection = DocumentApp.getActiveDocument().getSelection();
Logger.log(selection);
if (selection) {
var elements = selection.getRangeElements();
for (var i = 0; i < elements.length; i++) {
Logger.log(elements[i]);
var element = elements[i];
// Only modify elements that can be edited as text; skip images and other non-text elements.
if (element.getElement().asText() && element.getElement().asText().getText() !== '') {
text += element.getElement().asText().getText() + '\n';
}
}
}
addText(text);
}
function addText(question){
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var paragraphs = body.getParagraphs();
var p1 = paragraphs[paragraphs.length-1]
p1.appendText("\n\n" + AI(question));
}
GAS で[エディタ > +]から新たにスクリプトを作成します。名前は「menu.gs」などと付けてください。
その後、以下のスクリプトをコピーし、貼り付けます。
onOpen 関数を実行し、ドキュメントのメニューに「文書作成」と言うボタンを作成します。
これにより GAS を操作しなくても、 Google ドキュメント上でAIに質問して回答を取得するという機能が実現できます。
function onOpen() {
var ui = DocumentApp.getUi()
var menu = ui.createMenu("文章作成");
menu.addItem("作成","myFunction");
menu.addToUi();
}
function myFunction(){
getDocsSelection();
}
GASでのコーディングは以上です。
OpenAIに質問したい内容をドラッグして選択します。この選択したテキストがOpenAIに質問として送られます。
[文章作成 > 作成]をクリックして実行します。
スプレッドシート同様、スクリプト実行の承認を求められるので、承認します。
以下のように質問に対する回答が得られたら成功です。
Google スプレッドシートやドキュメントをOpenAIと連携させると、非常に便利なツールとなります。
今回は連携しただけですが、例えば、スプレッドシートにさまざまなデータが記録されている場合、OpenAIを使用することでデータを自動的に分類、要約、分析することができるようになります。また、 Google ドキュメントでは、自動応答、文章の要約などのさまざまなタスクを自動化することができます。
今回はスプレッドシートとドキュメントでしたが、次回は Google Chatや Google スライドを使って連携する方法をご紹介したいと思います。
最後までお読みいただき、ありがとうございました。
Azure OpenAI serviceは、OpenAIのAIモデルをMicrosoft Azure上のセキュアな環境で利用できるサービスで、機械学習や自然言語処理などの高度な機能を提供します。簡単にAIを組み込み、スケーラブルなソリューションを構築し、効率的にビジネス価値を生み出すことができます。
Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要なときに必要な量だけ従量課金で利用することができます。
Google Workspace は、あらゆる業務に合わせて、すべてのビジネス機能をそろえた統合ワークスペースです。あらゆる働き方に対応する業務効率化を実現します。
条件に該当するページがございません