OpenAIの言語モデル、GPT-3を社内Slackに導入したら捗りすぎてやばい
2022年12月1日にTwitterで面白いツイートをされている方がいました。
OpenAIはたまに話題にあがる凄いAIだと認識していましたが、使ったことがなかったので早速触ってみたところ、とても自然な会話ができることに驚きました。
僕は廃業したくないです
これは日々の業務に活用できるレベル……!と感じた僕は早速社内Slackにbotを作成し、導入すること1日。とても捗っています。
どれくらい精度が高いかをついでに体験できると思いますので、以下内容はOpenAIが生成したテキストと、僕自身が書いたもの合わせてご紹介していきます。
弊社のGPT-3 Slack bot おぷたん
※ちなみにおぷたんのアイコンはNovelAIの画像生成で作成しています
僕 is 誰
Web業界に入って14年くらいのエンジニアです。 北海道札幌で Nickel Lab. という会社を経営しております。経営の傍ら、コードはがしがし書いていて、最近はブロックチェーンが好きで触っています。
ふるさと納税は毎年牛タンです。今年も牛タンです。
OpenAIのGPT-3とは?
OpenAIのGPT-3とは、2020年に開発された自然言語処理システムです。このシステムは、開発者がテキストから対話、文章作成、テキストを要約するなどのタスクを実行できるように設計されています。GPT-3は、入力されたテキストを機械学習を使用して分析した後、有効なレスポンスを生成します。 GPT-3は、自然言語処理の初期段階からリードを取っていると見られており、可能な限りのタスクを完了するだけでなく、人間の表現を自由に再現する可能性もあります。
つまり、とても凄いAIです!(語彙力)
なにを目的としてSlackに導入したのか
これをSlackで導入すれば以下のことが解決できるのではないか?と考えました。
- エンジニアの調査時間削減
- 新しい技術導入時に行うキャッチアップの容易化
- 他者へ説明する際に第三者の補足事項として根拠を持たせることで、より高品質な会話ができる
実際に検証したんですが、概ね良い結果を得られています。
エンジニアの調査時間削減
まず1つめのエンジニアの調査時間の短縮ですが、これは間違いなく効果があります。
これを見てください。
import React, { useState, useEffect } from 'react';
import firebase from 'firebase';
const useAuth = () => {
const [authUser, setAuthUser] = useState(null);
useEffect(() => {
const unsubscribe = firebase.auth().onAuthStateChanged(user => {
if (user) {
setAuthUser(user);
} else {
setAuthUser(null);
}
});
return () => unsubscribe();
}, []);
return authUser;
};
export default useAuth;
これは廃業だわ。
この質問をGoogleで検索をする場合、エンジニアの行動はおそらく以下のようになります。
- firebase Authの公式ドキュメントを見に行く
- node.jsのクライアントサイドで動くライブラリのページを見つける
- onAuthStateChanged のことを知る
- 試しに書いてみる
実際にこのムーヴを行った場合、恐らく最速でも10分〜15分くらいはかかるのではないでしょうか。Firebaseのことを全く知らないのであれば、もっと時間がかかるでしょう。
それを1分以内に具体的なコードも添えて回答してくれるんですよ? とてつもない威力です。
エンジニアはこのコードから更に気になった質問をすることもできますし、より基礎部分の知識を得るためのキーワードを得たということにもなります。
なにを調べていいかわからないってあるじゃないですか? でもこのコードから、 onAuthStateChanged
を知ることができてますから、とりあえずそこを足がかりにFirebaseの世界に潜っていけるんですよ。
僕はおぷたんに聞いちゃいますけどね!
新しい技術導入時に行うキャッチアップの容易化
今まで触っていなかった新しい技術を勉強するときって、ワクワクもありますが情報量が多すぎて迷子になることもありますよね。
僕はブロックチェーンの勉強を始めた時、新しい用語が多すぎてわけもわからない状態になったのを覚えています。
そこで、おぷたんに最初の入口によさそうなものを聞いてみることにしました。
ブロックチェーンを実装するためのライブラリとしては、JavaScript向けにEthers.jsやweb3.js、Python向けにpyethereumなどがあります。ReactやVueなどのJavaScriptのフレームワークでも、ブロックチェーンを実装するための機能を実装することができます。
ブロックチェーン開発に必要な前提項目を抑えつつ、深堀りすると具体的なライブラリを教えてもらうことができました。
これを自分で検索した場合、 いかがでしたか? で心を乱されながら質の良い記事を見つけることから始まります。でもそれがなくなるんですよ。
Ethers.js か Web3.js を軸に自分で調べていけば、そこはもうWeb3の世界です。迷うことはないでしょう。技術的なことで迷うのであれば、またおぷたんに聞いてしまえばよいのです。
他者へ説明する際に第三者の補足事項として根拠を持たせる
毎日忙しいですよね。エンジニアは集中するまとまった時間も必要で、たまに雑な回答を後輩にしてしまったりしていませんか?
いいんですよ。そのままで。
OpenAIが助けてくれるんですよ。
後輩に、
「AWSのEC2インスタンスのIPアドレス変わっちゃうんですけど、これどうしたら固定されるんですか?」
と聞かれたとき、ちょっと忙しいと。
あー、それ多分静的IPアドレス設定してないんじゃない? 調べてみて。
みたいな返信をしてしまったりするじゃないですか? しますよね? ほんとは良くないと自分でも後から反省するやつです。
でもOpenAIがあれば。。。
EC2インスタンスをセットアップして、次の手順に従ってIPアドレスを設定します。
集中を切らさずに優しさを1つ加えることができました。優しい先輩でいましょう。
と、こんな感じで遊びの域を超えて真顔で使えるレベルの便利さです
普通に日々の業務でお世話になれるレベルです。 今日導入したばかりなので、チームに使ってもらってその便利さを布教していこうと思います。
botの構築方法は?
Slack botを使っていますが、OpenAIのAPIを呼び出すにはGASを利用しています。
- Slack bot
- Google Apps Script
- OpenAI API
この3つで実装することが可能です。
GPT-3の設定は?
GPT-3はただメッセージを送るだけだと、あまり上手に回答を作ってくれませんが、OpenAIのExampleページにあるChat Exampleをベースに設定することで、おぷたんを実装しています。
AIに前提知識を伝える、 prompt
プロパティが重要です。この prompt
で、うまく値を設定することで、弊社のおぷたんは対話形式で質問することも可能にしています。
{
'prompt': `The following is a conversation with an AI assistant. The assistant is helpful, creative,
clever.\n${prevMessage}\nHuman: ${message}\nAI: `,
}
prevMessageは人間とAIの会話履歴です。GASでは CacheService
を利用すると指定時間データをキャッシュすることができます。
cache.put('prevMessage', `${prevMessage}Human: ${humanMessage}\nAI: ${responseMessage}\n`, 300);
会話履歴が長すぎるとOpenAI APIでエラーが出るので気をつけましょう。
最後に
OpenAIの凄さが少しでも解ってもらえたら嬉しいなと思いました。
なにか僕に質問がありましたら、ツイッターでお答えできると思いますので、よろしければフォローよろしくおねがいします😀
それでは〜
Discussion