写点什么

AutoGen 入门 - 让两个 AI 自行聊天完成任务

  • 2025-01-08
    福建
  • 本文字数:3630 字

    阅读完需:约 12 分钟

AutoGen 介绍


AutoGen 是一个开源编程框架,用于构建 AI 代理并促进多个代理之间的合作以解决问题。AutoGen 旨在提供一个易于使用和灵活的框架,以加速代理型 AI 的开发和研究,就像 PyTorch 之于深度学习。它提供了诸如代理之间可以对话、LLM 和工具使用支持、自主和人机协作工作流以及多代理对话模式等功能。



主要特点


AutoGen 使得基于多智能体对话构建下一代 LLM 应用程序变得非常容易。它简化了复杂 LLM 工作流的编排、自动化和优化。它最大化了 LLM 模型的性能并克服了它们的弱点。


它支持复杂工作流的各种对话模式。通过使用可定制和可对话的代理,开发人员可以使用 AutoGen 构建各种涉及对话自主性、代理数量和代理对话拓扑的对话模式。


它提供了一系列不同复杂度的运行系统。这些系统涵盖了来自不同领域和复杂度的各种应用程序。这展示了 AutoGen 如何轻松支持各种对话模式。


入门


现在 AutoGen 有两个版本,一个是 0.2,是稳定版本,一个是 0.4,是正在开发的版本。


本次入门使用的是开发版本。


首先创建一个 Python 虚拟环境:


python -m venv myenv
复制代码


激活虚拟环境:


myenv\Scripts\activate
复制代码


安装相关包:


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 AssistantAgentfrom autogen_agentchat.base import TaskResultfrom autogen_agentchat.conditions import ExternalTermination, TextMentionTerminationfrom autogen_agentchat.teams import RoundRobinGroupChatfrom autogen_agentchat.ui import Consolefrom autogen_core import CancellationTokenfrom 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: 5Finish reason: Text 'APPROVE' mentionedTotal prompt tokens: 959Total completion tokens: 508Duration: 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: 5Finish reason: Text 'APPROVE' mentionedTotal prompt tokens: 1009Total completion tokens: 721Duration: 75.84 seconds
复制代码


文章转载自:mingupupup

原文链接:https://www.cnblogs.com/mingupupu/p/18658018

体验地址:http://www.jnpfsoft.com/?from=001YH

用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
AutoGen入门-让两个AI自行聊天完成任务_人工智能_不在线第一只蜗牛_InfoQ写作社区