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

黄浦区网站建设公司常州模板网站建设咨询

黄浦区网站建设公司,常州模板网站建设咨询,山西大同企业做网站,网站开发哪里培训好这篇文章瞄的是AutoGen官方教学文档 Advanced 章节中的 Serializing Components 篇章,介绍了如何对组件进行序列化,包括终止条件、Agent、Team。 官网链接:https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/ser…

这篇文章瞄的是AutoGen官方教学文档 Advanced 章节中的 Serializing Components 篇章,介绍了如何对组件进行序列化,包括终止条件AgentTeam

  • 官网链接:https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/serialize-components.html ;

【注意】:无论是序列化反序列化,在加载配置时必须与保存时对象的结构一致,这里的保存和加载其实是对 配置 进行保存和加载,而不是对这个实例进行操作。


Serializing Components

AutoGen提供了一个 Component 配置类,定义了将组件序列化和反序列化的规范,通过使用函数 .dump_component().load_component() 来实现这两个功能。就我个人而言序列化和反序列化的最常见的作用就是分享实例,可以将实例整体压缩到很小的体积。

微软在这里写了以下三个警告:

  • 序列化与反序列化仅能用来加载 可信赖 的组件;
  • 每个组件都实现了序列化与反序列化的逻辑,如何生成声明性规范以及如何将其转换回对象;
  • 在某些情况下序列化与反序列化后可能包含代码,因此仅用来加载 可信赖 的组件;

这里之所以强调 可信赖 是因为一旦进行反序列化加载到内存中后,具体配置是看不见的,除非再将配置序列化到本地进行内容对比。

【注意】因为这里的序列化和反序列化函数返回的是 Component 而非真正意义上的 json,所以需要我们自己手动进行转换,下面这段代码在本小节中所有示例中都通用,运行demo时只需要将其复制粘贴到指定位置即可:

from typing import Any
import json#------------------------------------------------------#
# 自定义转化类
class CustomJSONEncoder(json.JSONEncoder):def default(self, obj):if hasattr(obj, "__dict__"):  # 处理对象类型return obj.__dict__  return super().default(obj)  # 让 JSONEncoder 处理其余情况#------------------------------------------------------#
# 将json保存到本地的函数
def save_json(data: Any, filename: str) -> None:try:with open(filename, "w", encoding="utf-8") as file:json.dump(data, file, indent=4, ensure_ascii=False, cls=CustomJSONEncoder)print(f"数据成功保存到 {filename}")except Exception as e:print(f"保存 JSON 文件时出错: {e}")#------------------------------------------------------#
# 从本地加载json的函数
def load_json(filename: str) -> None:try:with open(filename, "r", encoding="utf-8") as file:data = json.load(file)print(f"数据成功从 {filename} 加载")return dataexcept FileNotFoundError:print(f"错误: 文件 {filename} 不存在")except json.JSONDecodeError:print(f"错误: 无法解析 {filename} 中的 JSON 数据")except Exception as e:print(f"加载 JSON 文件时出错: {e}")

Termination Condition Example

这个demo中展示了如何将终止条件 Termination Condition 导出dict 或者 json 格式的数据,我在官网代码的基础上添加了本地IO的操作以更好模拟导出与加载:

  • 导出json:
import json
from typing import Anyfrom autogen_agentchat.conditions import MaxMessageTermination, StopMessageTermination#------------------------------------------------------#
# 将 [Serializing Components] 的保存与加载代码粘贴到此处
#------------------------------------------------------#
# 定义两个终止条件并将其进行序列化
max_termination = MaxMessageTermination(5)
stop_termination = StopMessageTermination()or_termination = max_termination | stop_terminationor_term_config = or_termination.dump_component()
print("Config: \n", or_term_config.model_dump_json())save_json(or_term_config, "./termination.json")

运行结果如下:

$ python demo.py

在这里插入图片描述

  • 导入json:
    【注意】:加载时需要保证 类型相同,配置会在加载后修改成本地文件中的指定值
import jsonfrom autogen_agentchat.conditions import MaxMessageTermination, StopMessageTermination#------------------------------------------------------#
# 将 [Serializing Components] 的保存与加载代码粘贴到此处
#------------------------------------------------------## Step1. 定义一个相同结构的终止条件但配置不同
or_termination = MaxMessageTermination(10) | StopMessageTermination()
print(or_termination)
print(or_termination.dump_component())
print("-" * 50)#------------------------------------------------------#
# Step2. 从本地文件中加载这个配置并打印
new_or_termination = or_termination.load_component(or_term_config)
print(new_or_termination.dump_component())

运行结果如下:

$ python demo.py

在这里插入图片描述

其整个交互的内容termination.json如下:

{"provider": "autogen_agentchat.base.OrTerminationCondition","component_type": "termination","version": 1,"component_version": 1,"description": null,"label": "OrTerminationCondition","config": {"conditions": [{"provider": "autogen_agentchat.conditions.MaxMessageTermination","component_type": "termination","version": 1,"component_version": 1,"description": "Terminate the conversation after a maximum number of messages have been exchanged.","label": "MaxMessageTermination","config": {"max_messages": 5,"include_agent_event": false}},{"provider": "autogen_agentchat.conditions.StopMessageTermination","component_type": "termination","version": 1,"component_version": 1,"description": "Terminate the conversation if a StopMessage is received.","label": "StopMessageTermination","config": {}}]}
}

Agent Example

和终止条件一样,Agent也可以进行序列化,但要注意 0.4.7 这个版本目前 不支持tool序列化

AssistantAgent 保存配置

from autogen_agentchat.agents import AssistantAgent, UserProxyAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
import os, json
from typing import Any#------------------------------------------------------#
# 将 [Serializing Components] 的保存与加载代码粘贴到此处
#------------------------------------------------------#
os.environ["OPENAI_API_KEY"] = "你的OpenAI API Key"model_client = OpenAIChatCompletionClient(model="gpt-4o",
)
agent = AssistantAgent(name="assistant",model_client=model_client,handoffs=["flights_refunder", "user"],system_message="Use tools to solve tasks.",
)
user_proxy = UserProxyAgent(name="user")user_proxy_config = user_proxy.dump_component()  # dump component
print(user_proxy_config.model_dump_json())# 保存
save_json(user_proxy_config, "./termination.json")

运行结果如下:

$ python demo.py

在这里插入图片描述

AssistantAgent 加载配置

from autogen_agentchat.agents import AssistantAgent, UserProxyAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
import os, json
from typing import Any#------------------------------------------------------#
# 将 [Serializing Components] 的保存与加载代码粘贴到此处
#------------------------------------------------------#
os.environ["OPENAI_API_KEY"] = "你的OpenAI API Key"model_client = OpenAIChatCompletionClient(model="gpt-4o",
)
agent = AssistantAgent(name="assistant",model_client=model_client,handoffs=["flights_refunder", "user"],system_message="Use tools to solve tasks.",
)
user_proxy = UserProxyAgent(name="user")# 加载
user_proxy_config = load_json("./termination.json")
up_new = user_proxy.load_component(user_proxy_config)  # load component
print(up_new.dump_component())

运行结果如下:

$ python demo.py

在这里插入图片描述

MultimodalWebSurfer

对于上一篇文章提到的 MultimodalWebSurfer Agent一样,可以用下面的方式对配置进行保存和加载:

from autogen_ext.agents.web_surfer import MultimodalWebSurfer
from autogen_ext.models.openai import OpenAIChatCompletionClient
import os
os.environ["OPENAI_API_KEY"] = "你的OpenAI API Key"#------------------------------------------------------#
# 将 [Serializing Components] 的保存与加载代码粘贴到此处
#------------------------------------------------------#model_client = OpenAIChatCompletionClient(model="gpt-4o",
)
agent = MultimodalWebSurfer(name="web_surfer",model_client=model_client,headless=False,
)# 保存配置
web_surfer_config = agent.dump_component()  
save_json(user_proxy_config, "./agents.json")# 加载配置
web_surfer_config = load_json("./agents.json")
agent.load_component(web_surfer_config)

运行结果如下:

$ python demo.py

在这里插入图片描述


Team Example

Team的操作流程基本一致:

from autogen_agentchat.agents import AssistantAgent, UserProxyAgent
from autogen_agentchat.conditions import MaxMessageTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient
import os
os.environ["OPENAI_API_KEY"] = "你的OpenAI API Key"#------------------------------------------------------#
# 将 [Serializing Components] 的保存与加载代码粘贴到此处
#------------------------------------------------------#model_client = OpenAIChatCompletionClient(model="gpt-4o",# api_key="YOUR_API_KEY",
)
agent = AssistantAgent(name="assistant",model_client=model_client,handoffs=["flights_refunder", "user"],# tools=[], # serializing tools is not yet supportedsystem_message="Use tools to solve tasks.",
)team = RoundRobinGroupChat(participants=[agent], termination_condition=MaxMessageTermination(2))# 保存配置
team_config = team.dump_component()  
save_json(team_config, "./team.json")# 加载配置
team_config = load_json("./team.json")
team.load_component(team_config)

Take a breath

恭喜你,完成了AutoGen的另一个阶段学习,相比较于入门的Tutorial部分而言Advanced部分虽然存在一些难度,但并没有很离谱,如果你在这两个阶段都亲自实践了的话一定收获很多。

接下来我将继续开一个篇章,对官网文档中的 More 小节 Examples 中的例子进行讲解,这部分内容实际难度会低于 Advanced 部分,你可以当做一次放松。

紧随其后我就要对 GitHub 仓库中的 samples 内容进行新开,这部分内容代码长度与难度均会高出不少,但仍然希望你能坚持下来。

  • Examples链接:https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/examples/index.html ;
  • GitHub仓库:https://github.com/microsoft/autogen/tree/main/python/samples;
http://www.dtcms.com/a/591238.html

相关文章:

  • 中国建设银行网站成都第七支行上海松一网站建设
  • 网站建设解决方案有哪些app图片怎么制作
  • 佛山企业网站设计网络工程师的前景
  • 无锡网站建设公司研发小程序成本
  • 深圳电商网站设计公司wordpress扩展字段
  • 我想学网站建设需要选择什么书wordpress单本小说
  • 买机箱网站怎么用qq邮箱做网站
  • 深汕特别合作区招聘黑帽seo
  • 网站优化竞争对手分析网站基础服务
  • 建站所有步骤做一个网站先做前段 还是后端
  • 【Java】Java 中 @Resource 与 @Autowired 的区别详解
  • 重庆招聘一般上什么网站金空间网站
  • 网站建设需要上传数据库吗专业的外贸网站建设公司
  • 谷歌认证合作伙伴网站建设顺德网站设计
  • 【MySQL | 基础】DDL语句以及数据类型
  • 电商网站的二级菜单怎么做广东深圳旅游必去十大景点
  • Flow Matching|什么是“预测速度场 vt=ε−x”?
  • 福田公司网站建设福田做棋牌网站建设多少钱
  • 网站开发交接协议书郑州做企业网站的
  • 佟年给韩商言做的网站郑州设计工作室
  • wordpress网站转app个人网站 可以做论坛吗
  • 网站数据库一般多大服务型网站建设
  • 做的网站第二年续费多钱软件ui设计师
  • 杭州做网站五代理注册公司怎么收费
  • 网站搜索不到公司网站用wordpress建站会不会显得水平差
  • 闽清网站建设临湘网站建设
  • 网站案例展示分类庭院景观设计
  • 学习网站免费微信营销网站
  • 棋牌网站哪里做2024营业执照年审官网入口
  • 网站开发及app开发报价网站建设层级图