AutoGen介绍
AutoGen 是一个开源编程框架,用于构建 AI 代理并促进多个代理之间的合作以解决问题。AutoGen 旨在提供一个易于使用和灵活的框架,以加速代理型 AI 的开发和研究,就像 PyTorch 之于深度学习。它提供了诸如代理之间可以对话、LLM 和工具使用支持、自主和人机协作工作流以及多代理对话模式等功能。
主要特点
AutoGen使得基于多智能体对话构建下一代LLM应用程序变得非常容易。它简化了复杂LLM工作流的编排、自动化和优化。它最大化了LLM模型的性能并克服了它们的弱点。
它支持复杂工作流的各种对话模式。通过使用可定制和可对话的代理,开发人员可以使用AutoGen构建各种涉及对话自主性、代理数量和代理对话拓扑的对话模式。
它提供了一系列不同复杂度的运行系统。这些系统涵盖了来自不同领域和复杂度的各种应用程序。这展示了AutoGen如何轻松支持各种对话模式。
入门
现在AutoGen有两个版本,一个是0.2,是稳定版本,一个是0.4,是正在开发的版本。
本次入门使用的是开发版本。
首先创建一个Python虚拟环境:
python -m venv myenv
激活虚拟环境:
myenvScriptsactivate
安装相关包:
pip install "autogen-agentchat==0.4.0.dev13" pip install "autogen-ext[openai]==0.4.0.dev13"
后面运行时,会显示还缺少几个库,按照报错的信息,继续安装所需的包即可。
入门的例子是创建一个AI团队,一个当任务执行者,一个当评判者,当评判者觉得可以了,就停止对话,完成任务。
Python代码如下:
import asyncio from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.base import TaskResult from autogen_agentchat.conditions import ExternalTermination, TextMentionTermination from autogen_agentchat.teams import RoundRobinGroupChat from autogen_agentchat.ui import Console from autogen_core import CancellationToken from autogen_ext.models.openai import OpenAIChatCompletionClient async def main(): # Create an OpenAI model client. model_client = OpenAIChatCompletionClient( model="gpt-4o-2024-08-06", api_key="", # Optional if you have an OPENAI_API_KEY env variable set. ) # Create the primary agent. primary_agent = AssistantAgent( "primary", model_client=model_client, system_message="You are a helpful AI assistant.", ) # Create the critic agent. critic_agent = AssistantAgent( "critic", model_client=model_client, system_message="Provide constructive feedback. Respond with 'APPROVE' to when your feedbacks are addressed.", ) # Define a termination condition that stops the task if the critic approves. text_termination = TextMentionTermination("APPROVE") team = RoundRobinGroupChat( [primary_agent, critic_agent], termination_condition=text_termination, # Use the bitwise OR operator to combine conditions. ) await Console(team.run_stream(task="写一首关于秋天的短诗")) if __name__ == "__main__": asyncio.run(main())
运行效果:
---------- user ---------- 写一首关于秋天的短诗 ---------- primary ---------- 秋风轻摇叶漫天, 金黄稻穗笑丰年。 枫红染尽山川路, 硕果满枝惹人怜。 晨霜点缀草间珠, 夕阳映影湖中船。 静谧凉月盈满空, 秋夜温柔如梦甜。 [Prompt tokens: 28, Completion tokens: 81] ---------- critic ---------- 这首关于秋天的短诗运用了丰富的意象生动地描绘了秋天的美丽。以下是一些建议来进一步提升这首诗: 1. 开头的两行已经相当完整,但可以考虑将“轻摇”替换为更具体的动词,比如“飘落”,以增强画面感。 2. 第二节中的“晨霜点缀草间珠”可以更加具体化,比如但不局限于使用“白霜”,进一步富有诗意地描述秋季清晨的细节。 3. 尾句“秋夜温柔如梦甜”可以再结合一个感官描写,比如“如梦”可以结合沁人心脾的“桂香扑鼻”之类的细节来丰富整体体验。 这些建议旨在增加诗歌的生动性和情感深度,整体上已经非常优秀。请进行相应的改动后,我将很高兴地给予批准。 [Prompt tokens: 126, Completion tokens: 215] ---------- primary ---------- 非常感谢您的建议!根据您的意见,我对诗歌做了一些修改: 秋风飘落叶漫天, 金黄稻穗笑丰年。 枫红染尽山川路, 硕果满枝惹人怜。 白霜点缀草间珠, 夕阳映影湖中船。 桂香扑鼻月满空, 秋夜温柔如梦甜。 希望这些改动能够增强诗歌的生动性,带来更加丰富的秋季体验。 [Prompt tokens: 334, Completion tokens: 120] ---------- critic ---------- 改动后的诗歌确实更加生动且富有画面感。使用“飘落”更好地描绘了秋天的特征,而“白霜”和“桂香扑鼻”的加入使得诗歌在感官描述上更加具体和丰富。这 些改动有效地增强了诗歌的生动性和情感深度。因此,我准许该稿件。 APPROVE [Prompt tokens: 471, Completion tokens: 92] ---------- Summary ---------- Number of messages: 5 Finish reason: Text 'APPROVE' mentioned Total prompt tokens: 959 Total completion tokens: 508 Duration: 14.87 seconds
现在试试用一下国内的模型,毕竟使用OpenAI的模型不是很方便。
我以为改一下baseurl就行了,如下所示:
运行时会报错,如下所示:
现在需要解决这个问题。
改成这样:
还是会出现问题:
解决方案:
改成这样就可以了,如下所示:
让Qwen/Qwen2.5-72B-Instruct与deepseek-ai/DeepSeek-V2.5协作完成任务:
---------- user ---------- 写一首关于秋天的短诗 ---------- primary ---------- 秋风轻抚过田野, 黄叶飘零诉离别。 果实累累挂枝头, 丰收的歌在空中回响。 白露凝霜晨光里, 红枫如火映晚晴。 秋水共长天一色, 宁静致远,思绪随风。 [Prompt tokens: 27, Completion tokens: 61] ---------- critic ---------- 这首诗以自然意象为载体,描绘了秋天的丰富色彩与情感。秋风、黄叶、果实、白露、红枫等元素,形成了层次分明的秋日图景,表达了丰收与离别交替的复杂情感。诗中“宁静致远”一句,更是点明了秋天带给人们的沉思与感慨。整体语言流畅,意境深远,情感细腻,是一首不错的秋之赞歌。 以下是一些具体的反馈建议: 1. **“黄叶飘零诉离别”**:这一句的表达略显直白,可以考虑用更含蓄或独特的意象来表达离别之情,以增强诗歌的韵味。 2. **“秋水共长天一色”**:这一句虽然取自王勃的《滕王阁序》,但使用在此处稍显突兀,可能会让读者感受到某种经典符号的重复。可以考虑替换为更个性化的表达,与前文的自然意象形成更好 的呼应。 如果你能根据这些建议进行调整,这首诗将会更加出色。期待看到你的进一步修改! [Prompt tokens: 103, Completion tokens: 239] ---------- primary ---------- 非常感谢你的详细反馈和建议!根据你的意见,我将对这首诗进行一些调整,以增强其含蓄性和个性化表达。 --- 秋风轻抚过田野, 黄叶轻舞似鸿羽。 果实累累挂枝头, 丰收的歌在空中回响。 白露凝霜晨光里, 红枫如火映晚晴。 秋水清澈连天际, 宁静致远,思绪随风。 --- 1. **“黄叶轻舞似鸿羽”**:用“鸿羽”这一意象来表达黄叶的轻盈,增强视觉和情感的层次感。 2. **“秋水清澈连天际”**:替换“秋水共长天一色”为更个性化的表达,使意境更加独特和自然。 希望这些调整能更好地传达秋天的美好与复杂情感。感谢你的指导! [Prompt tokens: 332, Completion tokens: 182] ---------- critic ---------- 调整后的诗句更显细腻与含蓄,黄叶与秋水的意象都更加个性化,情感表达也更加丰富。以下是具体反馈: 1. **“黄叶轻舞似鸿羽”**:这一修改非常成功,“鸿羽”不仅增添了轻盈之感,还赋予了黄叶一种飘逸的动态美,增强了诗歌的视觉与情感张力。 2. **“秋水清澈连天际”**:这一改写避免了经典句式的重复,同时营造了秋水澄澈、连通天际的广阔意境,使整体氛围更加宁静致远。 3. **情感表达**:诗歌整体情感更加内敛,通过自然意象的细腻描绘,既表达了丰收的喜悦,又蕴含了秋天的宁静与思索,尤其最后一句“宁静致远,思绪随风”更是将情感推向了深远的境界。 总体来说,这首诗的意境已经非常成熟,语言流畅,情感细腻,具有很高的艺术表现力。如果后续没有更多的修改需求,我认为可以定稿。 **APPROVE** [Prompt tokens: 547, Completion tokens: 239] ---------- Summary ---------- Number of messages: 5 Finish reason: Text 'APPROVE' mentioned Total prompt tokens: 1009 Total completion tokens: 721 Duration: 75.84 seconds