見出し画像

Lang chainを使った格闘ゲームをサポートする孫子AIを作成した


はじめに

格闘ゲームで伸び悩んでいるユーザー向けた「孫子AIチャットボット」を開発しました。
このチャットボットは、一問一答形式でアドバイスを提供するだけでなく、プレイヤーの現在の熟練度や質問に応じて、孫子の兵法の知恵を活用した具体的なアドバイスを提供します。
たとえば、初心者には基本的な立ち回りを、中級者には状況判断力の向上についてなど、段階的なアドバイスが可能です。

以下のリンクからチャットボットやコードをご覧いただけます。

この記事では、このチャットボットの特徴、技術的な背景、開発過程、そして今後について簡単に解説します。
このチャットボットは、以下のような方々におすすめです。

・格闘ゲームにランクが上がらなくて伸び悩んでいるユーザー
・独自のチャットボットの作成に興味があるユーザー
・孫子の兵法を知らないユーザー

このチャットボットは、さまざまなプレイヤーにとって楽しめるツールです。

作るきっかけ理由

今までは客観的に見て、このようなことができそうだなと考え、プロンプトや簡単なChatBotを形にしていきましたが、今回は自分の周りにあるものを使って独自のチャットボット作成したいと考えていました。
連敗や同じパターンで負ける経験から、アドバイスの重要性を痛感しました。そこで、趣味の読書で得た孫子の知識を活かし、独自のチャットボットを開発しました。

技術の説明や処理の流れ

以下は、チャットボットの全体の流れを簡単に書いた概要図です。

1.チャットボットを渡した資料内容

・孫子の兵法をゲームに置き換えて作成したQ&A
・ランク情報(各ランクで必要なこと)
・格闘ゲームのルールやゲームの設定

2.処理の流れ・手順

1.ユーザー入力
・ランクの選択や格闘ゲームの悩みや質問を入力
(例:「相手にパターンを読まれないようにするには、どのような工夫が必要ですか?」)

2.情報検索
・孫子の兵法をゲームに置き換えて作成したQ&Aやランク情報などの資料内容を使って、解決するアドバイスを検索する。

3.回答生成
・検索結果とユーザーの熟練度を考慮し、実用的なアドバイスを生成する。
(例:「『兵は詭道なり』という教えの通り、相手の予測を裏切る動きが重要です。たとえば、フェイントを多用して相手のガードを崩してみましょう。」)

4.ユーザーへの応答
・最終的なアドバイスを、チャット形式でわかりやすく画面に表示する。

2.使用した技術

1.Lang Chain
概要:
・大規模言語モデル(LLM)を活用してアプリケーションを効率的に開発するためのフレームワークです。
活用方法:
・検索結果と会話履歴をもとに、最適な回答を作成
・会話履歴を保持し、過去の対話に基づいて文脈に合った応答を生成。
・ユーザーのランクにあったプロンプトを取得する。

2.Lang Graph
概要:
大規模言語モデル(LLM)を活用して動的なAIアプリケーションを構築するためのライブラリでタスクの流れを管理し、内容の状態を保持します。
活用方法:
・複数のタスク(例:データ取得 → 処理 → 結果出力)を順序通りに実行。
・条件に応じた処理の分岐や、繰り返し処理の設計。

3.OpenAIEmbeddings 
概要:
テキストデータの意味を数値で表現することで、機械学習や自然言語処理タスクの効率と精度を向上させるツール
活用方法:
・質問と資料内容の意味的な近さを計算することができます。

4.retriever
概要:
関連情報を検索するシステムで質問を解決してくれる資料内容を検索するために使いました。
活用方法:
・FAISSから関連性の高い情報を取得する。

5.FAISS 
概要:
テキスト、画像、音声などのデータを数値ベクトルとして扱い、大規模なデータセットから高速に類似アイテムを検索できるライブラリです。
活用方法:
・資料内容をベクトル化してFAISSに保存。
・大量のデータから瞬時に最適な結果を返すQAシステム。


具体的な工夫


1.工夫したこと

・retrieverやFAISSなどを使って資料内容を使って悩んでるユーザーを解決するアドバイス作成したこと。
・初心者には基本的な立ち回りを、中級者には状況判断力の向上についてなど、ランクごとのアドバイスを提供すること。

2.やりたかったけどできなかったこと

・AIエージェントのような処理の流れにしたかったけれど出力フォーマットが崩れてしまうので今回はLang Graphの流れの変更や条件エッジを使うことをやめたました。

今後はAIエージェントのような柔軟な対話ができるよう、Lang Graphの活用をさらに進める予定です。

参考になった記事や本

感想

この孫子AIチャットボットを通じて、たくさんの技術や経験できました。
AIエージェントの動きをできるようにアップデートをすることを考えています。
最後までこの記事を読んでいただき、ありがとうございました!
このチャットボットをぜひ試してみてください。


いいなと思ったら応援しよう!