在这一章中,我们将探讨如何结束自动生成代理之间的对话。
导入必要的库
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/",}]
}
创建智能体
创建两个智能体cathy
和joe
,并设置它们的系统消息和配置:
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
方法让joe
向cathy
发起对话:
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
如果有任何问题,欢迎在评论区提问。