Skip to main content

默认情况下,代码执行现在在 Docker 容器中进行

· 4 min read
Olga Vrousgou

简介

AutoGen 0.2.8 通过将“代码执行在 Docker 容器中”设置为默认选项来增强操作安全性,重点是向用户提供有关其操作的信息,并赋予他们在代码执行方面做出明智决策的能力。

新版本引入了一个重大变化,即在代码执行代理中,默认情况下将 use_docker 参数设置为 True。这一变化凸显了我们在 AutoGen 中优先考虑安全性和安全性的承诺。

TL;DR

AutoGen 现在默认情况下将代码执行在 Docker 容器中,以增强操作安全性。这一变化强调了我们在 AutoGen 中优先考虑安全性和安全性的承诺。

引言

AutoGen 有代码执行代理,通常被定义为 UserProxyAgent,其中默认情况下代码执行是开启的。直到现在,除非用户明确指定,否则由其他代理生成的任何代码都将由代码执行代理在本地执行,即在 AutoGen 执行的地方。如果 AutoGen 在 Docker 容器中运行,则运行代码的风险将最小化。然而,如果 AutoGen 在 Docker 外部运行,特别是对于新用户来说,很容易忽视代码执行的风险。

现在,AutoGen 已经更改为默认情况下在 Docker 容器中执行任何代码(除非已经在 Docker 容器中进行执行)。它将启动一个 Docker 镜像(用户提供的或默认的),执行新代码,然后终止镜像,为下一个代码执行周期做准备。

我们理解并不是每个人都关心这一点,特别是第一次玩 AutoGen 的时候。我们提供了简单的方法来关闭这个要求。但我们相信,确保用户知道代码将在本地执行,并促使他们思考在本地运行代码的安全性影响是 AutoGen 的正确步骤。

示例

该示例显示了默认行为,即由助理代理生成的任何代码都将由用户代理代理执行,并尝试使用 Docker 容器来执行代码。如果 Docker 没有运行,将会抛出错误。用户可以决定激活 Docker 或选择在本地执行代码。

from autogen import AssistantAgent, UserProxyAgent, config_list_from_json
assistant = AssistantAgent("assistant", llm_config={"config_list": config_list})
user_proxy = UserProxyAgent("user_proxy", code_execution_config={"work_dir": "coding"})
user_proxy.initiate_chat(assistant, message="Plot a chart of NVDA and TESLA stock price change YTD.")

要退出此默认行为,有一些选项。

完全禁用代码执行

  • 对于每个代码执行代理,将 code_execution_config 设置为 False。例如:
user_proxy = autogen.UserProxyAgent(name="user_proxy", llm_config=llm_config, code_execution_config=False)

在本地运行代码执行

  • 对于每个代码执行代理,可以在 code_execution_config 中将 use_docker 设置为 False
  • 要一次性为所有代码执行代理设置:将环境变量 AUTOGEN_USE_DOCKER 设置为 False

例如:

user_proxy = autogen.UserProxyAgent(name="user_proxy", llm_config=llm_config,
code_execution_config={"work_dir":"coding", "use_docker":False})

相关文档

结论

AutoGen 0.2.8 现在提高了代码执行的安全性,并确保用户能够正确了解 autogen 的操作,并能够根据需要做出决策。