初探 Autogen

        AutoGen是微软发布的一个工具,旨在帮助开发者创建基于大语言模型的复杂应用程序。开发者们通常需要具备设计、实施和优化工作流程的专业知识,而AutoGen工具可以帮助他们自动执行相关工作流程,简化搭建、优化等流程并实现自动化。一个用户角色(user_proxy),多个助手(assistant)角色,相互之间交互,完成一项任务。

        简单的理解一下,就是类似现实生活中,多个人协同完成一项任务,每一个人充当不同的角色,干不同的部分事情,最后将一件事情做完,做好。

        在此,我写了一个简单的成语接龙的demo;

任务:对用户给出的成语;助手根据成语的最后一个字,生成一个新的成语;并对成语进行解释,使用举例;

源码:

# 引用autogen
import autogen
from autogen import config_list_from_json

# 大语言模型key配置参数文件
config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST.json", file_location="D:\\Project\\autogen\\autogentest")

# 配置大模型配置
llm_config = {"config_list": config_list, "seed": 42, "timeout": 120}

# 创建角色
user_proxy = autogen.UserProxyAgent(
    name="user_proxy",
    system_message="一个人类管理员,给出一个初始的成语",
    code_execution_config={"last_n_messages": 2, "work_dir": "tasks", "use_docker": False},  #最多接收的响应的数量
    human_input_mode="ALWAYS"
)
# 生成成语专家
idiom_expert = autogen.AssistantAgent(
    name="idiom_expert",
    system_message="""你是一个成语生成专家,请根据用户输入的成语,生成一个成语。,
        规则:
        1,用户成语的最后一个字,是新成语的第一个字;
        2,可以音同字不同;
        3,成语不能重复;
        4,不能自己随便造成语""",
    llm_config=llm_config,
)

# 成语解释专家
explain_expert = autogen.AssistantAgent(
    name="explain_expert",
    system_message="""你是一个成语解释专家,请根据 idiom_expert 生成的成语。",
        规则:
        1,解释成语的意思,通俗易懂,简洁明了;
        2,举例说明成语的用法;
        3,举例说明成语的出处;
        4,确保解释的完整性和正确性。""",
    llm_config=llm_config,
)

# 创建组
groupchat = autogen.GroupChat(
    agents=[user_proxy, idiom_expert, explain_expert],
    messages=[],
    # max_round=10,
)
manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)

# 初始化,开始干活
start_idiom = input("请输入一个成语:")
user_proxy.initiate_chat(
    manager, message=start_idiom, clear_history=True)

实际执行过程:

从上图中可以看到,成语专家(idiom_expert)自动完成了成语接龙,解释专家(explain_expert),自动完成了两个成语的解释,用法举例,给出出处;并且程序最后处于暂停状态,等到用户给出新的指令,是给出新成语,继续接龙,还是输入exit终止程序;


参数: human_input_mode="ALWAYS",就表示每一回接龙完成之后,都等待用户给出新的指令;

如果将 human_input_mode="TERMINATE",就表示接龙完成之后结束程序;"NEVER",表示不与用户交互,继续自己接龙下去;

如果设置了max_round=10,表示会话需要进行10个回合之后,再结束;

大语言模型参数配置文件 OAI_CONFIG_LIST.json:

[
    {
        "model": "us-east-gpt4o",
        "api_key": "xxxxxx",
        "base_url": "https://xxxxx.com/",
        "api_type": "azure",
        "api_version": "版本号"
    }
]

        上面的demo使用了GroupChat,就是组的管理;也可以自己写角色之间的交互关系,初始化角色任务需求等;类似下面这种,感觉更加灵活一些:

chat_results = user_proxy.initiate_chats(
    [
        {
            "sender": user_proxy,
            "recipient": idiom_expert,
            "message": start_idiom,
            "clear_history": True,
            "silent": False,
            "max_turns": 1
        },
        {
            "sender": idiom_expert,
            "recipient": explain_expert,
            "message": explain_idiom_tasks[0],
            "clear_history": True,
            "silent": False,
            # "max_turns": 1 # 屏蔽掉次数,就无限洁玲下去
            # "sleep": 5000
        },
    ]
)
    autogen确实比较好用,上面的demo,起始还可以加一个审查助理,对成语的解释进行审查,看成语解释是否正确;当然,还有其它的多代理框架,比如crewai也可以实现上面的demo,用法差不多;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值