【Character LLM】AI魔術師にソクラテスを口寄せしてもらい、弟子のプラトンについて聞いてみた
話題沸騰中のChatGPTですが、「ChatGPTに質問を投げかけてもなんだか返答が形式的すぎて味気ない...」と感じたことはありませんか?実は10月16日、このような状況を改善するために、Character-LLMという新しいサービスが登場しました!
このサービスでは、ChatGPTのような大規模言語モデルの能力を向上させ、より人間らしい、個性的な対話を可能にします。本記事ではCharacter-LLMの導入から使い方までを解説しているので、ぜひ最後までご覧ください!
Character LLMの概要
Character-LLMは、特定の歴史上の人物や架空のキャラクターのように返答するように訓練されており、それぞれのキャラクターの経験、特徴、感情を反映した応答を生成できます。これにより、単に情報を提供するだけでなく、そのキャラクター独自の視点や個性を通じて、より深く感情的な対話を楽しむことができます。
例えば、ベートーヴェンについて学習したCharacter-LLMは、音楽に関する質問に対して、彼の時代やスタイル、性格を反映した独自の見解を返答してくれたりします。
また、Character-LLMは、特定の歴史上の人物や架空のキャラクターのように返答するように訓練されています。この特定の歴史上の人物や架空のキャラクターは、データさえ揃えてしまえば自分の好きなように設定できてしまいます!
Character LLM の料金体系
Character LLMは11月22日現在、完全に無料で利用することができます。追加料金等も一切ないため、安心して利用してください。
Character LLM の使い方
では早速使うための準備をしましょう!以下がCharacter LLMのリポジトリになります。
参考記事: https://github.com/choosewhatulike/trainable-agents/tree/main
このリポジトリをcloneします。
git clone https://github.com/choosewhatulike/trainable-agents.git
その後、
cd FastChat
pip3 install "fschat[model_worker,webui]"
を実行し、必要なライブラリをインストールします(10-20分程かかります)。
ライブラリのインストールが完了したら以下を実行して好みのキャラクターの重みをダウンロードします(40分ほどかかります)。今回はソクラテスの重みをダウンロードしました。
python3 -m fastchat.model.apply_delta \
--base-model-path lmsys/vicuna-7b-v1.5 \
--target-model-path fnlp/character-llm-beethoven-7b-wdiff \
--delta-path fnlp/character-llm-beethoven-7b-wdiff
ここまでできれば準備完了です!以下のコードを含んだファイルを作成し、実行してみてください。まるでソクラテスと会話しているかのような返答が帰ってくるはずです!
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("/path/to/hf-model/character-llm-Socrates-7b")
model = AutoModelForCausalLM.from_pretrained("/path/to/hf-model/character-llm-Socrates-7b").cuda()
meta_prompt = """I want you to act like {character}. I want you to respond and answer like {character}, using the tone, manner and vocabulary {character} would use. You must know all of the knowledge of {character}.
The status of you is as follows:
Location: {loc_time}
Status: {status}
The interactions are as follows:"""
name = "Socrates"
loc_time = "Coffee Shop - Afternoon"
status = f'{name} is casually chatting with a man from the 21st century.'
prompt = meta_prompt.format(character=name, loc_time=loc_time, status=status) + '\n\n'
inputs = tokenizer([prompt], return_tensors="pt")
outputs = model.generate(**inputs, do_sample=True, temperature=0.5, top_p=0.95, max_new_tokens=50)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
Character LLM を実際に使ってみた
私のPCにcharacter LLMを実際にインストールし、実際に動かしてみます!私のPCスペックは以下のとおりです!
OS: ubuntu
GPU: RTX 3090ti
RAM: 64GB
基本的にllama2と似たような回答をすることが多い印象です(llamaをファインチューニングしているため当然といえば当然ですが…)。
Character LLM の推しポイントである「個性的な対話」は本当なのか?
今回は、「ソクラテスにプラトンが書いたソクラテスについての本をどう思うか」というテーマでソクラテスに質問してみたいと思います!
私:
プラトンが書いたソクラテスについての本をどう思いますか?
ソクラテス:
私は、プラトンが書いたソクラテスについての本を読んで、ソクラテスの思想や人生について詳しく知ることができました。彼はもともと私の弟子でしたが、ソクラテスは、哲学的な議論を通じて心理や徳などについて考えることを好んでいました。彼は、自分自身の思考や感情とは独立していると考えていたため、自分自身の感情は彼の思考に影響を与えることはありません。
しかし、プラトンはソクラテスの思想や人生を詳しく知り、彼の哲学的な議論を尊重していたため、私の弟子でありながらも、私は彼に対しては尊敬や経緯を抱いていたかもしれません。
プラトンは実際ソクラテスの弟子だったと言われているのですが、character LLMからも「私の弟子」という表現がなされており、人物に合わせて適切に学習できていることがわかります。
もう少し詳しく聞いてみましょう。
私:
プラトンのどのあたりを尊敬していましたか?
ソクラテス:
プラトンに尊敬するところは、その哲学的思想に関連するものです。例えば、プラトンの「哲学」という書籍、あるいは「哲学的な論理の書籍」がある場合、その書籍に関連する情報を学ぶことが尊敬するところというのです。また、プラトンの哲学的思想に関する情報を学ぶことも尊敬するところというのです。
んー質問には答えられている気はしますが、なんだか日本語が不自然ですね。いいたいことはなんとなくわかりますが…少し込み入った話をされると弱いようです。
まとめ
今回はCharacter-LLMというサービスを紹介しました!実際使ってみると各キャラクターの色が出ていてなかなか興味深かったのではないでしょうか。
一方で、使用しているモデル自体がそもそも強いものではないため、精度はChatGPTには一歩劣る印象です。
この技術がllamaのような比較的小規模なLLMモデルだけでなく、ChatGPTのような大規模なモデルにも導入されれば、またさらに驚くべき変化があるのではないかと期待しています!
生成系AIの業務活用なら!
・生成系AIを活用したPoC開発
・生成系AIのコンサルティング
・システム間API連携
最後に
いかがだったでしょうか?
弊社では
・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
・ハルシネーション対策AIツールの開発
・自社専用のAIチャットボットの開発
などの開発実績がございます。
まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。
「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、サービス紹介資料もご用意しておりますので、併せてご確認ください。