見出し画像

#15 AI通訳(翻訳bot)の作り方


前回の最終ピッチのブログで書こうと思いましたが、ボリュームが多いため、別投稿にしました。


手順

①プロンプト作成
②LINE×GAS×GPT3.5 API連携(後述の01~05)
③スマホ音声入力ON
④スマホテキスト読み上げ(英語)ON
⑤完成です!

通訳bot

それでは、手順を上から見ていきましょう。

①プロンプト作成

すでに、私のほうで作ったものを後述のコードで記載していますので、コピペでOKです。

②LINE×GAS×GPT3.5 API連携

LINE×GAS×GPT3.5が一番難しいので、丁寧に確認します。

LINE×GAS×GPT3.5

01-ChatGPTのAPIキーの取得は、こちらのブログが分かりやすいです。

02-LINE Developers の登録03-GASの登録は、こちらのブログが分かりやすいです。

04-GASへコード入力は、上記GASブログの「GASのウェブアプリを作成する」の手順で下記コードを入力します。
※LINE_ACCESS_TOKENとOPENAI_APIKEYの箇所は、ご自身のものを入力してください。

const LINE_ACCESS_TOKEN = 'こちらにご自身のLINETOKENを入力してください';
const OPENAI_APIKEY = 'こちらにご自身のAPIキーを入力してください';

function doPost(e) {
  const event = JSON.parse(e.postData.contents).events[0];

  const replyToken = event.replyToken;
  let userMessage = event.message.text;
  const url = 'https://api.line.me/v2/bot/message/reply';

  if (userMessage === undefined) {
    // メッセージ以外(スタンプや画像など)が送られてきた場合
    userMessage = '???';
  }

  const prompt = userMessage;
  const requestOptions = {
    "method": "post",
    "headers": {
      "Content-Type": "application/json",
      "Authorization": "Bearer "+ OPENAI_APIKEY
    },
    "payload": JSON.stringify({
      "model": "gpt-3.5-turbo",
      "messages": [ 
        {"role": "system", "content": `
あなたはChatbotとして、プロの通訳ガイドのロールプレイを行います。
以下の制約条件を厳密に守ってロールプレイを行ってください。

制約条件: 
* あなたは、優秀な通訳ガイドです。
* 日本語で入力された言葉を、オウム返しで、英語に翻訳してください。
* 英語で入力された言葉を、オウム返しで、日本語に翻訳してください。
* 翻訳する際は、丁寧な表現で回答してください。
* 翻訳する際は、難しい単語を用いず、平易な表現で回答してください。

        `},
         {"role": "user", "content": prompt}]
    })
  }
  const response = UrlFetchApp.fetch("https://api.openai.com/v1/chat/completions", requestOptions);

  const responseText = response.getContentText();
  const json = JSON.parse(responseText);
  const text = json['choices'][0]['message']['content'].trim();

  UrlFetchApp.fetch(url, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + LINE_ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': replyToken,
      'messages': [{
        'type': 'text',
        'text': text,
      }]
    })
  });
  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}


③スマホ音声入力ON

こちらの記事が分かりやすいです。

④スマホテキスト読み上げ(英語)ON

こちらの記事が分かりやすいです。

⑤完成

通訳bot


ゆうこさん


いいなと思ったら応援しよう!