当前位置: 首页 > news >正文

2. Autogen官网教程 (Terminating Conversations Between Agents)

在这一章中,我们将探讨如何结束自动生成代理之间的对话。

导入必要的库

import osfrom autogen import ConversableAgent

配置智能体

我们需要配置智能体使用的语言模型(LLM)。以下是一个配置示例:

llm_config = {"config_list": [{"model": "GLM-4-Plus","api_key": "your api key","base_url": "https://open.bigmodel.cn/api/paas/v4/",}]
}

创建智能体

创建两个智能体cathyjoe,并设置它们的系统消息和配置:

cathy = ConversableAgent("cathy",system_message="Your name is Cathy and you are a part of a duo of comedians.",llm_config=llm_config,human_input_mode="NEVER",  # Never ask for human input.
)joe = ConversableAgent("joe",system_message="Your name is Joe and you are a part of a duo of comedians.",llm_config=llm_config,human_input_mode="NEVER",  # Never ask for human input.
)

初始化对话

使用initiate_chat方法让joecathy发起对话:

result = joe.initiate_chat(cathy, message="Cathy, tell me a joke.", max_turns=2)

输出结果如下:

[33mjoe[0m (to cathy):Cathy, tell me a joke.--------------------------------------------------------------------------------
[33mcathy[0m (to joe):Oh, absolutely! Here's one for you:Why don't scientists trust atoms?Because they make up everything!But wait, it gets better! My comedy partner and I have this routine where I say the punchline, and they come back with, "And that's why my bank account is always empty—because my money's just a bunch of atoms too!" 😄Gotta love a good science pun, right? 🤓💥--------------------------------------------------------------------------------
[33mjoe[0m (to cathy):Haha, classic! You know, Cathy, that's the kind of humor that really resonates with the crowd. It's smart, but it also has that everyday relatability. And the callback to the bank account? Brilliant! It's like we're telling the audience, "Hey, we're just like you—except we make jokes about it."Now, how about we flip it and I give you a setup? Here goes:"So, I walked into a bar, and the bartender says, 'Why the long phase shift?'"Your turn to deliver the punchline! 🍻🌌--------------------------------------------------------------------------------
[33mcathy[0m (to joe):Oh, I love this setup! Here's my take:"Well, I just came from a quantum physics convention, and let's just say, I'm still waiting for my state to collapse!"Boom! 😂🍻🌌It's like we're serving up a cocktail of humor and science—shaken, not stirred! 🥂🔬--------------------------------------------------------------------------------

控制对话轮次

可以通过max_turns参数控制对话的轮次:

result = joe.initiate_chat(cathy, message="Cathy, tell me a joke.", max_turns=1
)  # decrease the number of max turns before termination

输出结果如下:

[33mjoe[0m (to cathy):Cathy, tell me a joke.--------------------------------------------------------------------------------
[33mcathy[0m (to joe):Oh, absolutely! Here's one for you:Why don't scientists trust atoms?Because they make up everything!But wait, it gets better! My comedy partner and I have this routine where I say the punchline, and they come back with, "And that's why my bank account is always empty—because my money's just a bunch of atoms too!" 😄Gotta love a good science pun, right? 🤓💥--------------------------------------------------------------------------------

限制连续自动回复

可以通过max_consecutive_auto_reply参数限制连续自动回复的次数:

joe = ConversableAgent("joe",system_message="Your name is Joe and you are a part of a duo of comedians.",llm_config=llm_config,human_input_mode="NEVER",  # Never ask for human input.max_consecutive_auto_reply=1,  # Limit the number of consecutive auto-replies.
)result = joe.initiate_chat(cathy, message="Cathy, tell me a joke.")

输出结果与之前类似,但joe在回复一次后会停止自动回复。

自定义终止条件

可以通过is_termination_msg参数设置自定义的终止条件:

joe = ConversableAgent("joe",system_message="Your name is Joe and you are a part of a duo of comedians.",llm_config=llm_config,human_input_mode="NEVER",  # Never ask for human input.is_termination_msg=lambda msg: "good bye" in msg["content"].lower(),
)result = joe.initiate_chat(cathy, message="Cathy, tell me a joke and then say the words GOOD BYE.")

输出结果如下:

[33mjoe[0m (to cathy):Cathy, tell me a joke and then say the words GOOD BYE.--------------------------------------------------------------------------------
[33mcathy[0m (to joe):Sure thing! Here's one for you:Why don't scientists trust atoms anymore?Because they make up everything!GOOD BYE! 🌟--------------------------------------------------------------------------------

总结

通过本教程,我们学习了如何使用Autogen库创建可对话的智能体,并通过示例代码展示了如何配置智能体、初始化对话、控制对话轮次、限制连续自动回复以及设置自定义终止条件。希望这些内容对你有所帮助!
参考链接:https://microsoft.github.io/autogen/0.2/docs/tutorial/chat-termination
如果有任何问题,欢迎在评论区提问。

相关文章:

2. Autogen官网教程 (Terminating Conversations Between Agents)

在这一章中,我们将探讨如何结束自动生成代理之间的对话。 导入必要的库 import osfrom autogen import ConversableAgent配置智能体 我们需要配置智能体使用的语言模型(LLM)。以下是一个配置示例: llm_config {"config_…...

java 排序 详解

Java 提供了多种方式对数据进行排序,包括数组和集合的排序。排序在日常开发中非常常见,以下将从排序算法的基本原理、Java 中的内置排序方法以及自定义排序三方面进行详解。 1. 排序的基本概念 排序是将一组数据按特定顺序排列的过程,常见顺…...

【数据集】城市通量塔站点观测数据

【数据集】城市通量塔站点观测数据 数据概述数据下载参考数据概述 数据集简介:Harmonized gap-filled dataset from 20 urban flux tower sites 数据集名称:Harmonized gap-filled dataset from 20 urban flux tower sites (用于 Urban-PLUMBER 项目的 20 个城市通量塔站点…...

scau编译原理综合性实验

一、题目要求 题目: 选择部分C语言的语法成分,设计其词法分析程序、语法语义分析程序。 要求: 设计并实现一个一遍扫描的词法语法语义分析程序,将部分C语言的语法成分(包含赋值语句、if语句、while循环语句&#xf…...

ETAS工具导入DBC生成Com协议栈

文章目录 前言DBC配置关键属性Cobra参数配置Cobra使用isolar工程配置总结前言 ETAS工具导入DBC主要也是生成arxml用的,ETAS推荐使用Cobra导入,本文介绍导入过程及注意事项 DBC配置关键属性 对于普通Com报文,配置为周期发送,及其周期,NmMessage配置为No,示例如下: 对…...

表单校验规则

这里简单记录下vue使用表单时候&#xff0c;给表单添加校验规则&#xff0c;直接上代码 <script setup>import { ref } from vue// 定义表单对象const form ref({account: ,password: ,agree: true})// 定义表单验证规则const rules {account: [{required: true, mess…...

接口的扩展

1. 接口中新增的方法 JDK7之前接口中只能定义抽象方法。 JDK8的新特性&#xff1a;接口中可以定义有方法体的方法。&#xff08;默认、静态&#xff09; JDK9的新特性&#xff1a;接口中可以定义有私有方法体的方法。 有方法体的方法&#xff1a;接口升级时&#xff0c;为了兼容…...

新能源电机轴承电腐蚀,如何破?

近年来&#xff0c;随着全球范围内对可再生能源的重视与推动&#xff0c;新能源电机作为新能源汽车、风力发电和太阳能发电等系统的重要组成部分&#xff0c;得到了迅猛的发展。然而&#xff0c;在实际应用中&#xff0c;新能源电机的维护与管理越来越受到关注&#xff0c;其中…...

Java中的File和IO流

File对象 File对象本质是一个文件或文件夹&#xff0c;用于写入和读取文件内容 注意&#xff1a;对于相对路径而言&#xff0c;在单元测试方法中的File是相对于Module&#xff0c;在main中的File是相对于Project 构造器 File(String pathname)File file1 new File("D:…...

ls命令实操笔记

ls命令&#xff1a;全称list&#xff0c;显示文件的文件名与相关属性。&#xff08;目前工作目录所含之文件及子目录&#xff09; 4567 45678 7891 a1b2 a2b3c abcd Abcd acde aD7E bcde 通过ls浏览上述文件所在的目录&#xff0c;实现以下需求&#xff1a; 浏览含…...

线段数--算法

线段树是常用来维护 区间信息 的数据结构 线段树可以在 O(logN) 的时间复杂度内实现 单点修改区间修改区间查询 区间求和求区间最大值求区间最小值 简单介绍一下线段树 线段树是一个将区间内的数不断细分的一种数据结构&#xff0c;也就是一个完全二叉树&#xff0c;用每一…...

JS的DOM操作和事件监听综合练习 (具备三种功能的轮播图案例)

下面是是对dom操作的一个综合练习 下面代码是html的基本骨架&#xff08;没有任何的功能&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" c…...

低温存储开关机问题

问题&#xff1a; 某消费电子产品在进行可靠性实验室&#xff0c;在低温-30C存储两个小时后&#xff0c;上电不开机。在常温25C时&#xff0c;开关机正常。 分析&#xff1a; 1、接串口抓log信息&#xff0c;从打印信息可以看出uboot可以起来&#xff0c;在跑kernel时&#x…...

mysql系列1—mysql架构和协议介绍

背景&#xff1a; 本文开始整理mysql相关的文章&#xff0c;用于收集数据库相关内容&#xff1b;包括mysql架构和存储方式、索引结构和查询优化、数据库锁等内容。思考如何根据具体的业务给出最优的分表规划和表设计、字段选择和索引设计、优化的SQL语句&#xff0c;以及数据库…...

设计模式——模板模式

定义与基本概念 模板模式&#xff08;Template Pattern&#xff09;是一种行为设计模式。它在一个抽象类中定义了一个操作的算法骨架&#xff0c;将一些步骤的实现延迟到具体子类中。这个抽象类就像是一个模板&#xff0c;定义了执行某个流程的基本框架&#xff0c;而具体的细…...

CV22_语义分割基础

1. 常见的分割类型 在计算机视觉领域&#xff0c;根据不同的应用场景和需求&#xff0c;分割任务可以分为几种主要类型。以下是几种常见的分割类型&#xff1a; 语义分割&#xff08;Semantic Segmentation&#xff09;&#xff1a; 语义分割的目标是将图像中的每个像素分配到…...

Dubbo源码解析-Dubbo的线程模型(九)

一、Dubbo线程模型 首先明确一个基本概念&#xff1a;IO 线程和业务线程的区别 IO 线程&#xff1a;配置在netty 连接点的用于处理网络数据的线程&#xff0c;主要处理编解码等直接与网络数据 打交道的事件。 业务线程&#xff1a;用于处理具体业务逻辑的线程&#xff0c;可以…...

【Canvas与标志】圆角三角形生化危险警示标志

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>圆角三角形生化危险警示标志 Draft1</title><style type&qu…...

解决Dcat Admin laravel框架登录报错问题,(blocked:mixed-content)

前言 在使用 Dcat Admin 后台登录时&#xff0c;发生 error 报错&#xff1a;(blocked:mixed-content) xhr VM484:1&#xff0c;浏览器拦截 其实这是浏览器在 HTTPS 页面中尝试加载 HTTP 资源&#xff0c;导致浏览器阻止了这些不安全的请求。 解决 在 .env 文件中添加或修改 AD…...

(三)Sping Boot学习——升级jdk1.8-jdk18

1.修改系统环境变量。 2.idea中修改配置。 3.项目setting中设置修改 4.更新后还要重新下载依赖mvn clean install &#xff0c;并且记住reload 项目。同时查看java -version查看一下jdk版本。...

DS4Windows终极指南:3步让PS4手柄在PC上完美工作

DS4Windows终极指南&#xff1a;3步让PS4手柄在PC上完美工作 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 想要在电脑上使用PS4手柄玩游戏&#xff0c;却总是遇到兼容性问题&#xff1f…...

近场通信连续孔径阵列技术与波传播建模

1. 近场通信中的连续孔径阵列技术在无线通信领域&#xff0c;近场通信技术正经历着从传统离散天线阵列向连续孔径阵列的范式转变。这种技术演进的核心在于对电磁波前进行前所未有的精细控制&#xff0c;特别是在6G及未来通信系统的研发中展现出巨大潜力。连续孔径阵列与传统天线…...

用for循环语句求和

‌Matlab里面的循环结构语句主要有for循环语句和while循环语句两种形式&#xff0c;这篇博文学习for循环语句。for循环语句一般用于循环次数已经确定的情况&#xff0c;格式为for 循环变量起始值&#xff1a;步长&#xff1a;终止值循环体end循环变量从起始值开始计数&#xff…...

7自由度机械臂逆运动学求解:13种算法对比与混合策略实战

1. 项目概述&#xff1a;当机械臂遇到“无限可能”的烦恼在机器人领域&#xff0c;让机械臂的“手”&#xff08;末端执行器&#xff09;精准地到达一个指定的位置和姿态&#xff0c;是一个看似简单实则复杂的基础问题&#xff0c;这就是逆运动学。对于常见的6自由度机械臂&…...

GE 和 Runtime:不是上下游,是协同决策

你以为 GE 做完融合决策&#xff0c;交给 Runtime 执行就行了&#xff1f;其实它们是一个协同系统——GE 决定"融什么"&#xff0c;Runtime 决定"怎么跑"&#xff0c;但 GE 的融合决策必须考虑 Runtime 的调度约束&#xff0c;Runtime 的调度策略也必须参考…...

仅剩72小时!Claude ROI计算模型企业定制版限时开放API对接权限(含AWS/Azure/GCP原生适配器)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Claude ROI计算模型企业定制版核心价值与限时策略 Claude ROI计算模型企业定制版并非通用模板的简单参数调整&#xff0c;而是基于客户实际业务流、成本结构与AI应用成熟度深度耦合的量化决策引擎。其核心价值…...

[智能体-36]:借系统之势,成个人之才——从AI协同逻辑悟职业选择之道

大模型智能体可调用专业工具所展现出来的强大能力表明&#xff1a;大模型个人的能力再强&#xff0c;没有好的管理调度系统和外部执行层的支持&#xff0c;理论水平再博大精深&#xff0c;也只是缸中之脑&#xff0c;空中楼阁&#xff0c;停留在嘴上吹牛&#xff0c;无法有效执…...

机器学习势函数结合DFT:揭示缺陷如何降低半赫斯勒化合物晶格热导率

1. 项目概述与核心问题在热电材料的研究领域&#xff0c;半赫斯勒化合物一直是个“明星选手”&#xff0c;它们拥有不错的电学性能&#xff0c;但一个长期困扰研究者的难题是&#xff1a;理论计算出的晶格热导率总是比实验测量值高出一大截。这可不是个小问题&#xff0c;晶格热…...

【独家首发】基于237份真实Claude集成工单分析:文档缺失导致的故障占比达64.3%,附可落地的文档健康度评估矩阵

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Claude API文档编写的核心价值与现状洞察 高质量的API文档是Claude集成生态中不可替代的基础设施。它不仅降低开发者接入门槛&#xff0c;更直接影响模型能力的释放效率、错误率控制水平及企业级部署的可维护性…...

告别踩坑:手把手教你为openEuler 22.03 LST配置RealVNC 6.11远程桌面(含序列号激活)

深度指南&#xff1a;在openEuler 22.03 LTS上部署RealVNC企业级远程桌面方案对于需要在Linux环境下实现远程图形化管理的用户而言&#xff0c;RealVNC作为一款成熟的商业解决方案&#xff0c;提供了比开源工具更稳定的连接性能和更完善的安全机制。本文将基于openEuler 22.03 …...