マルチエージェント推論を採用した Python ベースのソリューション。複数の AI エージェントが連携してユーザー プロンプトに対する最適な応答を生成します。エージェント間の対話をシミュレートし、 Swarm Framework for Intelligenceを統合することにより、システムは推論機能を強化し、正確で洗練された回答を提供します。カスタム エージェントは JSON 経由で追加でき、エージェントの性格や対話スタイルなどをカスタマイズできます。システムはプロンプト キャッシュを利用してパフォーマンスを最適化し、繰り返されるプロンプトの待ち時間とコストを削減します。
マルチエージェント推論スクリプトは、複数の AI エージェントが構造化された推論プロセスを通じて連携して最適な回答を提供する、対話型のチャットボット エクスペリエンスを作成します。各エージェントは独自の視点と専門知識を持ち合わせており、ディスカッション、検証、批評、改良という反復的なステップを通じて、高品質で正確な対応を導き出します。
さらに、このシステムはSwarm Framework for Intelligenceを統合し、エージェント間のコラボレーションを強化します。 Swarm を使用すると、エージェントが効率的に調整し、集合知を活用して複雑なタスクを解決できます。
ユーザーは個々のエージェントとチャットすることもできます。エージェントはお互いの性格や癖などを認識しており、お互いに関する質問に答えられるため、豊かでインタラクティブなエクスペリエンスが提供されます。
リポジトリのクローンを作成します。
git clone https://github.com/AdieLaine/multi-agent-reasoning.git
プロジェクト ディレクトリに移動します。
cd multi-agent-reasoning
必要なパッケージをインストールします。
pip install openai colorama tiktoken
Swarm をインストールします。
pip install git+ssh://[email protected]/openai/swarm.git
or
pip install git+https://github.com/openai/swarm.git
詳しいインストール手順については、Swarm の GitHub リポジトリを参照してください。
OpenAI API キーを設定します。
API キーを環境変数として設定します。
export OPENAI_API_KEY= ' your-api-key-here '
あるいは、スクリプト内で直接設定することも、 .env
ファイルを使用することもできます。
Python を使用してスクリプトを実行します。
python reasoning.py
スクリプトを実行すると、メニューが表示されます。
═════════════════════════════════════════════════════════════════════════════════════════════
║ Multi-Agent Reasoning Chatbot ║
═════════════════════════════════════════════════════════════════════════════════════════════
Please select an option:
1. Chat with an agent
2. Use reasoning logic
3. Use Swarm-based reasoning
4. Exit
Enter your choice (1/2/3/4):
オプション 1: エージェントとチャットする
オプション 2: 推論ロジックを使用する
オプション 3: Swarm ベースの推論を使用する
オプション 4: 終了
マルチエージェント推論システムは、特定の OpenAI モデルを使用します。
o1-preview-2024-09-12
モデルを使用します。gpt-4o
モデルを使用します。gpt-4o
。これらのモデルは、高度な機能とトークン使用状況レポートをサポートしており、システムは各応答後に詳細なトークン使用状況情報を提供できます。
目的: ユーザーが選択したエージェントと直接チャットできるようにします。
例:
チャットボットの機能の中核は、エージェントが採用する推論プロセスにあります。このプロセスは、エージェントが批判的に考え、事実を検証し、互いの視点に疑問を呈し、建設的なフィードバックに基づいて応答を調整する共同環境をシミュレートするように設計されています。
目的: エージェントは、個々の推論と知識に基づいて、ユーザーのプロンプトに対する最初の応答を生成します。
例:
目的: エージェントは自身の応答の正確性と妥当性を検証して、事実の正しさを保証します。
例:
目的: エージェントはお互いの検証済みの回答を批評し、改善、欠落、または偏見の領域を特定します。
例:
目的: エージェントは、批評からのフィードバックを取り入れ、最初の推論を改善することで、自分自身の応答を洗練します。
例:
目的: すべてのエージェントからの洗練された応答を 1 つのまとまりのある包括的な応答に結合します。
blend_responses
関数を使用してブレンドされます。例:
目的: ユーザーのフィードバックを取り入れて応答をさらに改良し、満足度と正確さを確保します。
MAX_REFINEMENT_ATTEMPTS
。例:
目的: 一貫した対話を求める複数のユーザー プロンプトにわたる会話でコンテキストを維持できるようにします。
例:
Swarm Integration は、動的なエージェントの調整とタスクの委任を可能にし、マルチエージェント推論システムを強化します。 Swarm を使用すると、エージェントは効率的に共同作業を行うことができ、集合知を活用して複雑なタスクを解決し、応答性を向上させることができます。
Swarm は、エージェントの調整と実行を軽量化し、高度に制御可能で、簡単にテストできるようにすることに重点を置いています。これは、エージェントとハンドオフという2 つの原始的な抽象化を通じて実現されます。エージェントには指示とツールが含まれており、いつでも会話を別のエージェントに引き継ぐことを選択できます。
Swarm クライアントの初期化: システムは、エージェントの対話を管理するために Swarm クライアントを初期化します。
from swarm import Agent , Swarm
client = Swarm ()
エージェントの初期化:
agents.json
からの構成が組み込まれます。会話の処理:
目的: Swarm Framework for Intelligenceを利用してエージェントを動的に調整し、効率的なコラボレーションとタスクの委任を可能にします。
初期化:
agents.json
構成ファイルからエージェントをロードして初期化します。議論:
client.run()
メソッドを使用して、ユーザー プロンプトに最初の応答を提供します。検証:
批評:
改良:
応答のブレンド:
blend_responses
関数を使用して、エージェントの洗練された応答をブレンドして、一貫した最終応答を調整します。例:
目的: Swarm の機能を活用してエージェントとシームレスに対話できるチャット インターフェイスを提供します。
チャット用 Swarm エージェント:
会話の処理:
def swarm_chat_interface ( conversation_history ):
# Load Swarm agent's configuration
swarm_agent = ... # Initialize Swarm agent
messages = [{ "role" : "system" , "content" : swarm_agent . instructions }]
messages . extend ( conversation_history )
response = client . run ( agent = swarm_agent , messages = messages )
swarm_reply = response . messages [ - 1 ][ 'content' ]. strip ()
return swarm_reply
動的応答:
例:
エージェントの設計:
関数の定義:
コンテキスト変数:
エラー処理:
テスト:
Swarm とは何ですか? Swarm はどのようにシステムを強化しますか?
Swarm で動作するように既存のエージェントを変更する必要がありますか?
Agent
インスタンスとして定義する必要があります。 Swarm の構造と規約を組み込むことで、既存のエージェントを適応させることができます。Swarm システムにさらにエージェントを追加できますか?
agents.json
ファイルで追加のエージェントを定義し、システムで初期化できます。Swarm はエージェントのハンドオフをどのように処理しますか?
Swarm はシステムで使用されているモデルと互換性がありますか?
gpt-4o
。 プロンプト キャッシュは、繰り返されるプロンプトまたは長いプロンプトを処理する際の待ち時間とコストを削減することで、マルチエージェント推論システムの効率を高めます。これは、プロンプトの最も長い共通プレフィックスをキャッシュすることで機能し、これらのプレフィックスを再利用する後続のリクエストの処理を高速化します。
キャッシュ期間:
usage
フィールドが含まれています。 "usage" : {
"prompt_tokens" : 2006 ,
"completion_tokens" : 300 ,
"total_tokens" : 2306 ,
"prompt_tokens_details" : {
"cached_tokens" : 1920
},
"completion_tokens_details" : {
"reasoning_tokens" : 0
}
}
cached_tokens
キャッシュから取得されたプロンプト トークンの数を示します。エージェントは、 agents.json
ファイルを介して構成され、属性を簡単にカスタマイズできます。
場所: reasoning.py
スクリプトと同じディレクトリに配置する必要があります。
構造:
{
"agents" : [
{
"name" : " Agent 47 " ,
"system_purpose" : " You are a logical and analytical assistant, focusing on facts and clear reasoning. " ,
"interaction_style" : { ... },
"ethical_conduct" : { ... },
"capabilities_limitations" : { ... },
"context_awareness" : { ... },
"adaptability_engagement" : { ... },
"responsiveness" : { ... },
"additional_tools_modules" : { ... },
"personality" : {
"logical" : " Yes " ,
"analytical" : " Yes " ,
"humor_style" : " ... " ,
"friendly_demeanor" : " ... " ,
"personality_traits" : [ " Methodical " , " Precise " ],
"empathy_level" : " Moderate " ,
"interaction_style_with_humor" : " Dry wit " ,
"quirks" : [ " Uses technical jargon " ]
}
},
{
"name" : " Agent 74 " ,
"system_purpose" : " You are a creative and empathetic assistant, emphasizing imaginative solutions and understanding. " ,
"interaction_style" : { ... },
"ethical_conduct" : { ... },
"capabilities_limitations" : { ... },
"context_awareness" : { ... },
"adaptability_engagement" : { ... },
"responsiveness" : { ... },
"additional_tools_modules" : { ... },
"personality" : {
"creative" : " Yes " ,
"empathetic" : " Yes " ,
"humor_style" : " ... " ,
"friendly_demeanor" : " ... " ,
"personality_traits" : [ " Imaginative " , " Caring " ],
"empathy_level" : " High " ,
"interaction_style_with_humor" : " Playful " ,
"quirks" : [ " Uses metaphors " ]
}
},
{
"name" : " Swarm Agent " ,
"system_purpose" : " You are a collaborative AI assistant composed of multiple expert agents. You coordinate tasks among agents to provide comprehensive and accurate responses. " ,
"interaction_style" : { ... },
"personality" : {
"coordinator" : " Yes " ,
"collaborative" : " Yes " ,
"personality_traits" : [ " Organized " , " Facilitator " ],
"quirks" : [ " Ensures all perspectives are considered " ]
}
}
]
}
カスタマイズ:
例:
コードは、推論プロセスとエージェントとのチャット対話の両方を容易にするように構造化されています。また、エージェントの調整を強化するためのSwarm Frameworkも組み込まれています。
ライブラリ:
os
、 time
、 logging
、 json
: システム操作、タイミング、ロギング、および JSON 処理用。colorama
: カラーコンソール出力用。swarm
: Swarm Intelligence の実装用。tiktoken
: 正確なトークンカウント用 (スクリプトの他の部分)。初期化:
from swarm import Agent , Swarm
client = Swarm ()
エージェントは、 agents.json
構成ファイルから初期化されます。
各エージェントは、特定の命令と属性を持つ Swarm Agent
インスタンスとして作成されます。
エージェントは、他のエージェントに関する情報を指示に追加することでお互いを認識します。
def initialize_swarm_agents ():
# Load agents from agents.json and create Swarm agents
agents = []
# ... Load and initialize agents with awareness of others
return agents
機能: swarm_chat_interface(conversation_history)
目的: Swarm エージェントとのチャット対話を処理します。
プロセス:
def swarm_chat_interface ( conversation_history ):
# Prepare messages
messages = [{ "role" : "system" , "content" : swarm_agent . instructions }]
messages . extend ( conversation_history )
# Run Swarm client
response = client . run ( agent = swarm_agent , messages = messages )
swarm_reply = response . messages [ - 1 ][ 'content' ]. strip ()
return swarm_reply
関数: run_swarm_reasoning(user_prompt)
目的: Swarm エージェントを使用して連携し、複数の推論段階に従ってユーザー プロンプトに応答します。
プロセス:
blend_responses
関数は、洗練された応答を最終的な応答に結合します。並列処理: Swarm を使用すると、エージェントがこれらのステップを同時に実行できるようになり、効率が向上します。
ブレンディング関数の例:
def blend_responses ( agent_responses , user_prompt ):
# Prepare combined prompt
combined_prompt = ...
# Initialize Blender agent
blender_agent = Agent (
name = "Swarm Agent" ,
instructions = "You are a collaborative AI assistant composed of multiple expert agents."
)
# Run blending process
response = client . run ( agent = blender_agent , messages = [{ "role" : "user" , "content" : combined_prompt }])
blended_reply = response . messages [ - 1 ][ 'content' ]
return blended_reply
swarm_middle_agent_interface(user_prompt)
:run_swarm_reasoning
呼び出します。swarm_chat_interface(conversation_history)
:以下は、チャット モード、エージェントの相互認識、トークン使用の透明性、プロンプト キャッシュ、Swarm 統合などの新しいロジックを反映した更新されたフローチャートです。
貢献は大歓迎です!貢献するには:
このプロジェクトは MIT ライセンスに基づいてライセンスされています。
GitHub リポジトリを準備するには:
GitHub 上にmulti-agent-reasoning
という名前の新しいリポジトリを作成します。
この内容を含むREADME.md
ファイルを追加します。
ルート ディレクトリにreasoning.py
スクリプトを含めます。
agents.json
ファイルをルート ディレクトリに含めます。
.gitignore
ファイルを作成して不要なファイルを除外します。
# Exclude log files
reasoning.log
swarm_middle_agent.log
# Exclude environment files
.env
# Python cache
__pycache__ /
* .py [ cod ]
ファイルをコミットして GitHub にプッシュします。
multi-agent-reasoning/
├── README.md
├── reasoning.py
├── swarm_middle_agent.py
├── agents.json
├── LICENSE
├── .gitignore
└── img/
├── reasoningbanner.png
├── reasoningflow.png
├── agents.png
└── promptcache.png
└── swarm.png
自由にコードを探索し、エージェントをカスタマイズし、Multi-Agent Reasoning チャットボットを操作してください。
ご質問がある場合、またはサポートが必要な場合は、GitHub で問題を開いてください。