一種基於 Python 的解決方案,採用多代理推理,其中多個 AI 代理協作產生對使用者提示的最佳回應。透過模擬代理之間的互動並整合Swarm 智慧框架,該系統增強了推理能力,以提供準確而精緻的答案。可以透過 JSON 添加自訂代理,從而允許您自訂他們的個性、互動風格等。該系統利用提示快取來優化效能並減少重複提示的延遲和成本。
多代理推理腳本創建了一種互動式聊天機器人體驗,其中多個人工智慧代理透過結構化推理過程進行協作,以提供最佳答案。每個代理人都帶來獨特的觀點和專業知識,透過討論、驗證、批評和完善的迭代步驟,他們匯集出高品質、準確的回應。
此外,該系統還整合了Swarm 智慧框架,以增強代理之間的協作。 Swarm 允許代理有效地協調,並利用集體智慧來解決複雜的任務。
用戶還可以與個別代理商聊天。客服人員相互了解,包括他們的個性和怪癖,並且可以回答有關彼此的問題,從而提供豐富的互動體驗。
克隆儲存庫:
git clone https://github.com/AdieLaine/multi-agent-reasoning.git
導航到專案目錄:
cd multi-agent-reasoning
安裝所需的軟體包:
pip install openai colorama tiktoken
安裝群:
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
。這些模型支援高級功能和令牌使用報告,允許系統在每次回應後提供詳細的令牌使用資訊。
目標:允許使用者直接與選定的代理程式聊天。
例子:
聊天機器人功能的核心在於代理人所採用的推理過程。此過程旨在模擬協作環境,在該環境中,代理進行批判性思考、驗證事實、挑戰彼此的觀點,並根據建設性回饋完善他們的回應。
目標:代理人根據其個人推理和知識產生對使用者提示的初始回應。
例子:
目標:代理人驗證自己回應的準確性和有效性,以確保事實的正確性。
例子:
目標:代理人對彼此經過驗證的回答進行批評,以確定需要改進、遺漏或偏見的領域。
例子:
目標:代理人透過整合批評回饋並改進他們的最初推理來完善他們自己的反應。
例子:
目標:將所有代理人的精細回應合併為一個單一的、有凝聚力的、全面的答案。
blend_responses
函數混合響應。例子:
目標:納入使用者的回饋,進一步完善回應,確保滿意度和準確性。
MAX_REFINEMENT_ATTEMPTS
。例子:
目標:允許對話在多個使用者提示中保持上下文,以實現連貫的對話。
例子:
Swarm Integration透過啟用動態代理協調和任務委派來增強多代理推理系統。 Swarm 允許代理高效協作,利用集體智慧來解決複雜任務並提高回應能力。
Swarm 專注於使代理協調和執行變得輕量級、高度可控且易於測試。它透過兩個原始抽象來實現這一點:代理和切換。代理包含指令和工具,並且可以在任何時候選擇將對話移交給另一個代理。
Swarm 用戶端初始化:系統初始化 Swarm 用戶端來管理代理互動。
from swarm import Agent , Swarm
client = Swarm ()
代理初始化:
agents.json
的配置。對話處理:
目標:利用Swarm 智慧框架動態協調代理,從而實現高效協作和任務委派。
初始化:
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 配合使用?
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
:用於實現群體智慧。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
請隨意探索程式碼、自訂代理並與多代理推理聊天機器人互動!
如果您有任何疑問或需要協助,請在 GitHub 上提出問題。