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 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

AutoGen入门-让两个AI自行聊天完成任务的更多相关文章

  1. Netty入门(二)之PC聊天室

    参看Netty入门(一):Netty入门(一)之webSocket聊天室 Netty4.X下载地址:http://netty.io/downloads.html 一:服务端 1.SimpleChatS ...

  2. Netty入门(一)之webSocket聊天室

    一:简介 Netty 是一个提供 asynchronous event-driven (异步事件驱动)的网络应用框架,是一个用以快速开发高性能.高可靠性协议的服务器和客户端. 换句话说,Netty 是 ...

  3. WPF入门(三)->两个几何图形合并(CombinedGeometry)

    原文:WPF入门(三)->两个几何图形合并(CombinedGeometry) 在WPF中,提供了一个CombinedGeometry对象可以使两个几何图形合并产生效果 CombinedGeom ...

  4. 两年AI研究经验(教训)总结,进来看看吧!

    https://www.jianshu.com/p/2149c9fee166 摘要: 本文以过来人的身份将自身2年的研究经验做了一下分享,希望本文对于即将开始从事人工智能研究的朋友有所帮助. 人工智能 ...

  5. xml入门简介--两天学会xml

    前言 在很久以前,笔者曾见到过1000+页的xml书,里面还有n多的概念,XSL,Xquery,让人头痛.无奈最近需要用到,所以在w3c恶补了一下.以下大致整理了一下相关概念,但是对XSL等派生语言没 ...

  6. 一文带你入门图像分析,成为AI专家不是梦!

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云AI中心发表于云+社区专栏 腾讯云高级研究员讲述,从成像到图像分析如何入门 文︱冀永楠 "AI来了"邀请到我 ...

  7. POJ P2318 TOYS与POJ P1269 Intersecting Lines——计算几何入门题两道

    rt,计算几何入门: TOYS Calculate the number of toys that land in each bin of a partitioned toy box. Mom and ...

  8. Qt插件开发入门(两种方法:High-Level API接口,Low-Level API接口)

    Qt中为我们提供了两种开发插件的方式.一种是使用High-Level API接口,一种是使用Low-Level API接口.所谓High-Level API 是指通过继承Qt为我们提供的特定的插件基类 ...

  9. 推荐两个AI神器:ChatGPT只需1个标题,2分钟全自动生成PPT!

    今天给大家分享两个工具,帮助你全自动生成PPT,接下来以自动化测试为主题,教大家如何2分钟生成好PPT. 1.第一个工具:ChatGPT 1.打开ChatGPT页面,输入prompt,告诉它,让它帮你 ...

  10. Nginx入门之两种handler函数的挂载方式

    请在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 接着上次的文章,今天研究<深入理解Nginx模块开发与架构解析>一书中给出的mytest的例子,发现和 /tengine.t ...

随机推荐

  1. Mysql数据库个人整理笔记

    数据类型 tinyint/smallint/int/bigint float double char/varchar date/time/datetime/timestamp DDL 数据库 crea ...

  2. Github第一Star数的国产免费开源防火墙--雷池社区版初步体验

    前言 近期准备搭建一个博客网站,用来存储工作室同学们的学习笔记.服务器准备直接放在公网上,方便大家随时随地的上传和浏览,为了防止网站被人日穿成为肉鸡,一些防御措施还是要部署的. 首先明确自己的需求: ...

  3. jetty嵌入式配置总结

    Jetty配置到项目 拷贝lib/jsp和lib下的所有jar包到项目中. 在工程中创建文件夹jetty/etc.jetty/contexts 拷贝jetty包中的jetty.xml和webdefau ...

  4. python之常用方法(精)

    查找列表中出现最频繁的元素 使用 max() 函数可以快速查找出一个列表中出现频率最高的某个元素. >>> a = [1, 2, 3, 4, 3, 4, 5, 4, 4, 2] &g ...

  5. Ubuntu18.04安装Java

    介绍 Java和JVM(Java的虚拟机)是许多软件所必需的,包括Tomcat,Jetty,Glassfish,Cassandra和Jenkins. 在本教程中,您将使用apt安装各种版本的Java ...

  6. 2022-2023 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2022)

    F. Foreign Football 一共有\(n\)支队伍,每支队伍的名称为\(s_i\),给定一个\(n \times n\)的矩阵,\(a_{i,j}\)代表第\(i\)支队伍和第\(j\)支 ...

  7. 启动Node.js前端项目

    跟前端同事联调的时候,有时前端同事要跟其他后端同事联调,心想就自己启个前端项目,这样前端同事跟其他后端同事联调的时候,我可以先自己调来试试. 安装Node.js,NPM,NVM等,一气呵成.将前端项目 ...

  8. 开源的 Linux 游戏平台「GitHub 热点速览」

    <越狱>.<迷失>.<西部风云>等经典美剧背后的民间字幕翻译团队--人人影视,由于 AI 翻译的崛起.官方中文字幕的普及和版权问题,最终决定以开源的方式,为这段旅程 ...

  9. .NET 使用 ZXing.Net 生成二维码,并识别

    .NET 使用 ZXing.Net 生成二维码,并识别 前言 前面已经分享给很多创建二维码,条形码...等一系列的方式 各有优缺点,暂时不做评价.今天推荐ZXing.Net .也是比较全面的一种方式, ...

  10. 树莓派设置CPU运行的核心数为3,保留核心4号

    具体步骤:1.打开终端,输入 sudo nano /boot/cmdline.txt2.在第一行最后空一格加上isolcpus=33.保存