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

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

导入必要的库

import os

from 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
如果有任何问题,欢迎在评论区提问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值