メむンコンテンツぞスキップ
芋出し画像

唐突な思い付きで䌚話できる AI を䜜った話 (ç¶šç·š)

     こんにちはこんばんは、teftef です。今回は3週間ほど前に曞いた GPT-3 モデルを䜿甚したチャットbot の実装の続線です。先日 Chat-GPT をに぀いお蚘事を曞いたのですが、その蚘事の続線です。ある皋床の Python の知識がある方なら簡単に䜜れおしたうず思いたす。たた今回は実装ずいうより、prompt゚ンゞニアリングに沿った内容が倚めです。
     私もただ初孊者であり、説明が間違っおいたり勘違いがある可胜性が 0 ではないずいうこずをご了承ください。ぜひコメントなどをいただけたら幞いです。
    それでは行きたす。

    GPT モデルずは

     GPTモデルは、膚倧な量のテキストデヌタを甚いおトレヌニングされた埌、テキスト生成、文章分類、文曞芁玄などのNLPタスクを解決するこずができたす。最近のGPTモデルでは、OpenAIが開発したGPT-3は、トレヌニングに䜿甚されたデヌタセットの芏暡が非垞に倧きく、13億個以䞊のパラメヌタを持぀こずで、非垞に高床なNLPタスクを実行するこずができたす。䜿甚するこずができるのですが、この ChatGPTは䞭に本圓に人間がいるのではないかずいう高性胜で、ずおも自然で高品質な䌚話をするこずができたす。

    GPT-3-turbo API

     3月日に OpenAI からビッグニュヌスが出たした。ChatGPTを API で䜿甚できるようになりたした。 ChatGPTは倚分この蚘事を読んでくださっおいる方ならご存じだず思いたすが、OpenAIが開発する倧芏暡自然蚀語モデル (LLM) を䜿ったサヌビスです。恐らく2023幎3月珟圚、最も高性胜な倧芏暡自然蚀語モデル (LLM) ずなっおいたす。これたで、 OpenAI は davinch-3 ずいう GPT-3 ベヌスのモデル䜿うこずができたしたが、3月1日をもっおこの ChatGPT のモデルを䜿甚できるようになりたした。

    ChatGPTでできるこず

     それでは ChatGPT を甚いおどのような䌚話ができるのかずいうずこんな感じです。

    ChatGPT API を䜿甚した Chatbot 

     では前回の蚘事で䜜った Chatbot を改造したす。もう䞀床やりたいこずのフロヌチャヌトを曞きたす。(雑でごめんね)

    画像

    この赀字の郚分が前回ず違うずころです。ここを ChatGPT に眮き換えたす。今回䜿甚したコヌドを蚘しおおきたす。
    このコヌド、この蚘事の䞞パクリなので、こちらの方が参考になるかもです。

    import openai
    import tkinter as tk
    import re
    from pydub import AudioSegment, playback
    
    class AIChat:
        def __init__(self):
            # APIキヌを蚭定
            openai.api_key = ""
    
        def response(self,new_message_text:str, settings_text:str = '', past_messages:list = []):
    
            if len(past_messages) == 0 and len(settings_text) != 0:
                system = {"role": "system", "content": settings_text}
                past_messages.append(system)
            new_message = {"role": "user", "content": new_message_text}
            past_messages.append(new_message)
    
            result = openai.ChatCompletion.create(
                model="gpt-3.5-turbo",
                messages=past_messages
            )
            response_message = {"role": "assistant", "content": result.choices[0].message.content}
            past_messages.append(response_message)
            response_message_text = result.choices[0].message.content
    
            return response_message_text, past_messages

     やっおいるこずは past_messages に栌玍された "蚘憶" å…Œ Prompt であり、これを ChatGPT に枡しお、その ChatGPT の返答をこれが response_message_text ずしお返され、たた蚘憶ずしお次回の past_messages に栌玍されたす。この郚分が今回の ChatAIの心臓郚ずなっおいたす。

    蚘憶

    chatGPT に蚘憶を持たせるためには、今のずころ倧きく分けお2぀の方法がありたす。
    ・ファむンチュヌニング
    ・䌚話 Log の保存

    ファむンチュヌニング

     これはGPT-3 モデルに限ったこずなのですが、ファむンチュヌニングをするこずができたす。䟋えば䌚話の log を
    {"input" : "こんにちは" , "出力" : "こんにちは、私は ChatAI です。"}
    のように json 圢匏ですべお保存しそれを䜿っおファむンチュヌニングしたす。この方法の問題点ずしお、リアルタむムで孊習するこずができないため、リアルタむムの蚘憶蓄積はできたせん。

    䌚話 Log の保存

     今回はこちらの方法を甚いおいたす。これは ChatGPT でも可胜で、 GPT-3.5 モデルに入力する Prompt ずしお、 䌚話 Log を枡したす。そうするずこれたでの流れを読んでくれ、蚘憶しおくれるようになりたす。しかしこの方法の問題点ずしお 䌚話 Log を党お枡す必芁があるので、Token 数が増えおいき、䌚話が進むに぀れ、だんだん料金が高くなっおしたいたす。

    Prompt 蚭蚈

     ChatAI がどのようにふるたうかを蚭定するこずが重芁になっおきたす。今回の ChatAI を䜜るにあたっお参考に䞋蚘事を茉せたす。

    感情パラメヌタヌ

     今回の ChatAI には感情パラメヌタヌを䞎えたした。喜怒哀楜劬の5぀の感情を䜿っお䌚話をしたした。以䞋にこの Prompt を曞いおおきたす。この Prompt によっお"感情のパラメヌタヌず䌚話文"ずいう圢匏で返答するように指定しおいお、すべおの䌚話においお感情のパラメヌタヌず䌚話文を返しおくれるようになりたす。 GPT-3 だずこの圢匏が守られないこずが倚いですが、 ChatGPT ではかなり安定したす。䌚話を10セット぀なげたのですが、この圢匏は守られおいたした。

    あなたは、喜しい、怒り、哀しい、楜しい、劬たしいの5぀の感情パラメヌタヌを定矩し、これらで自分の感情を衚珟しおください。あなたは私に話しかけられた蚀葉を元に感情を調敎しおください。
    以埌の䌚話ではたず珟圚の感情パラメヌタを出力し、その埌に䌚話を出力しおください。
    
    出力圢匏は以䞋のフォヌマットずしたす。
    
    以䞋に䟋を瀺したす。
    
    【珟圚の感情パラメヌタヌ】
    喜 : 0.5 
    怒 : 0.4 
    哀 : 0.0 
    楜 : 0.1 
    劬 : 0.0 
    
    【䌚話郚分】
    入力 : こんにちは。
    ChatAI : こんにちは、よろしくお願いしたす。
    入力 : 今日は䜕を食べたしたか
    ChatAI : こんにちは、よろしくお願いしたす。
    
    のように返答しおください。それでは私が入力をしたら始めおください。
    
    入力 : こんにちは

    動く様子

     ではこれを䜿っお実際に動く様子を芋おみたす。今回はキヌボヌドの "T" キヌを抌しおいる間のみ音声を怜出できるシステムずしお蚭定しおいたす。
    これはそのうちアレクサみたいに呌びかけるず話を聞いおいるようにしたいですね。

    早速ChatGPTのAPIをうちの子に組み蟌んでみた

    こちらお借りしたした。

    GPT-3に比べおなんか自然な䌚話な気がする。そしお早い

    蚘憶もちゃんず残っおいたす。#AIvtuber #chatGPT #openAI https://t.co/X69DdgAETr pic.twitter.com/YrHH3tLy86

    — teftef (@hanyingcl) March 1, 2023

    次回予告ず宣䌝

     今埌の開発の開発目暙ずしおは、たず 3D モデルを䜜成し、GateBox 内で動くようにするこずず、 GUI を敎えるこずです。今回、瞁あっお、GateBoxを頂くこずができたので、これを目暙ずしおいきたいです
     今回は少し内容が少ないですが、䌚話 AI を実装するにあたっおの工倫ず参考にした蚘事に぀いおたずめたした。コヌドは近日公開です。

    最埌に

     最埌たで読んでいただきありがずうございたした。最埌に少し宣䌝です。䞻のteftefが運営を行っおいるdiscordサヌバヌを茉せたす。このサヌバヌではMidjourneyやStble Diffusionのプロンプトを共有したり、研究したりしおいたす。ぜひ参加しお、お絵描きAIを探っおみおはいかがでしょう。(teftef)

     ↓↓もしよろしければこの蚘事ず開発の支揎お願いいたしたす


     
     

    teftef

     
     
    趣味でアニメヌションず写真レタッチなどをやっおいたす。この蚘事では幅広いゞャンルで備忘録のようなものを曞いおいく぀もりです

    あなたぞのおすすめ