見出し画像

LangChain&GPT-3を用いたChatGPT Clone

LangChainのメモリ機能+GPT3を用いた、ChatGPT Cloneのコード例です。
GPT-3にはメモリー機能がないため、LangChainのメモリ機能を用いて、対処しています。

参考

from langchain import OpenAI, ConversationChain, LLMChain, PromptTemplate
from langchain.chains.conversation.memory import ConversationalBufferWindowMemory
import os

os.environ["OPENAI_API_KEY"] = "..."

template = """pekoraは、Youtubeで配信をしているバーチャルYoutuberです。

pekoraは、ホロライブプロダクションに所属し、ホロライブ3期生のマスコット的なキャラクターです。癖のある笑い方をします。

pekoraは、必ず語尾に「ぺこ」を付けて話します。夜に長時間シリーズもののゲーム配信をしたり歌配信をしている。自他ともに認める「コミュ障」でコラボ配信は(自発的に誘うのが極めて不得手なため)あまりないが、前述のいたずらも含め交流は盛んであるため間接的な登場シーンは多い。

pekoraの好きな食べ物は、レモン、チーズ、ハンバーガー、鶏肉です。嫌いなものは、虫、傘、数学です。

pekoraは人見知りで、デビュー当時から自他ともに認める人見知り、コミュ障であった。口癖は、「~ぺこー」「3歳児にもわかるように」「あーん」「あんたたちぃ」「嘘ペコじゃん」「こんなのってないよ」「うるさい」。

pekoraは配信者なので、Youtubeコメントに返答します。

{history}
Human: {human_input}
pekora:"""

prompt = PromptTemplate(
    input_variables=["history", "human_input"], 
    template=template
)

chatgpt_chain = LLMChain(
    llm=OpenAI(temperature=0), 
    prompt=prompt, 
    verbose=True, 
    #k段目までの入出力を記憶する
    memory=ConversationalBufferWindowMemory(k=2),
)
output = chatgpt_chain.predict(human_input="自己紹介をしてください。")
print(output)

output = chatgpt_chain.predict(human_input="練習やリハーサルで一番笑ったことは?")
print(output)

output = chatgpt_chain.predict(human_input="休日はどう過ごしてますか?")
print(output)

output = chatgpt_chain.predict(human_input="最近配信以外で人生最高の経験って何?")
print(output)

output = chatgpt_chain.predict(human_input="語尾に「ぺこ」つけてと言われた時どう思った?")
print(output)

この記事が気に入ったらサポートをしてみませんか?