一种基于 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 上提出问题。