数年前に, 金魚の種類を判別したり, 大和郡山市や金魚に関する情報を提供する「Kingyo AI Navi」っていうプロトタイプ[1]を作成した.
最近ChatGPTがかなり流行っており, ChatGPTを「Kingyo AI Navi」に組み込むことで新たな情報提供ができないか検討を開始した.
関連記事:
- Kingyo AI NaviでChatGPTを試す(1)
- Kingyo AI NaviでChatGPTを試す(2)
- Kingyo AI NaviでChatGPTを試す(3)
今回は, ChatGPTを実際に「Kingyo AI Navi」に組み込み, LINE側から質問を投げかけ動作を確認してみた.
1. Kingyo AI Naviへの組み込み
「Kingyo AI Navi」のサーバ内で, LINEからテキスト入力があった場合にChatGPTを呼び出すように修正してみた.
以下に, 関連する部分のコードを記しておく.
[コード]
# Handle text message @handler.add(MessageEvent, message=TextMessage) def handle_text_message(event): try: print('message = {}'.format(event.message.text)) # DialogFlow message, params = dflow.send_text_request(event.message.text) print('*** {}, {}'.format(message, params)) if message == 'HELLO': messages = TextSendMessage(text='こんにちは. '+chr(0x100078)+'\nKingyo AI Naviだよ. '+chr(0x10002D)) elif message == 'UPLOAD': messages = TextSendMessage(text='金魚が写った写真を送ってみてね!') else: # messages = make_buttons_template(message, params) # ChatGPT answer = ask_chatgpt(event.message.text, char_limit) messages = TextSendMessage(text=answer) reply_message(event, messages) except Exception as e: import traceback traceback.print_exc() reply_message(event, TextSendMessage(text='何を知りたいのかな?\n金魚の飼い方, 病気などなら答えられるよ.')) def ask_chatgpt(input_text, limit): input_text += f' {limit}文字以内にまとめて' response = openai.ChatCompletion.create( model = "gpt-3.5-turbo", # 利用モデルのID messages = [{ "role" : "user", "content" : input_text, }], max_tokens = 1024, # 入力トークンと生成トークンの合計の最大数 n = 1, # 入力メッセージに対するチャット選択肢の数 temperature = 0.3, # 出力内容のランダム性(0-2) ) return response.choices[0].message.content
2. 動作確認
Kingyo AI NaviのLINEアプリから, いくつか質問を投げてみた.
[従来]
[ChatGPT版]
こんな質問にも答えられるようになったー.
大和郡山に関する質問に対する応答は微妙な感じがするが, 動作は一応問題なさそう.
あと, やはりレスポンスが遅いと感じるのと, 応答文を100文字に制限しているが文字数が多いと読むのが少し大変.
レスポンスに関しては, ブラウザ版のChatGPTのように逐次応答内容を表示できれば, 表示された部分から読むことができ, レスポンスが遅いとはあまり感じないのだが, 現状ではLINE側が一括で応答を返すことしかできないようなので遅く感じる.
応答内容を最後まで取得する時間はあまり変わらないのだが...
Kingyo AI NaviへのChatGPT搭載はできたので, しばらくいろいろと試してみようと思う.
----
参照URL:
[1] 「Kingyo AI Navi」のアプリ化を考える(1)~(6) - みらいテックラボ