问答社区
Agent Zero 的最佳环境是内置的 docker 容器下载映像frdel/agent-zero-exe
分类:语言模型
关键概念:
- 通用助理
- Agent Zero 并未针对特定任务进行预编程(但可以这样做)。它旨在成为通用个人助理。给它一个任务,它就会收集信息、执行命令和代码、与其他代理实例合作,并尽最大努力完成任务。
- 它具有持久存储器,可以记住以前的解决方案、代码、事实、指令等,以便将来更快、更可靠地解决任务。
- 计算机作为工具
- Agent Zero 使用操作系统作为完成任务的工具。它没有预先编程的单一用途工具。相反,它可以编写自己的代码,并使用终端根据需要创建和使用自己的工具。
- 其武器库中唯一的默认工具是在线搜索、记忆功能、通信(与用户和其他代理)以及代码/终端执行。其他一切都由代理本身创建或可由用户扩展。
- 工具使用功能从头开始开发,即使对于非常小的模型也是最兼容、最可靠的。
- 多智能体合作
- 每个代理都有一个上级代理为其下达任务和指令。然后每个代理向上级汇报。
- 对于第一个代理来说,上级是人类用户;代理看不出任何区别。
- 每个代理都可以创建下属代理来帮助分解和解决子任务。这有助于所有代理保持其上下文清晰且专注。
- 完全可定制和扩展
- 这个框架中几乎没有任何内容是硬编码的。没有任何内容是隐藏的。所有内容都可以由用户扩展或更改。
- 整个行为由prompts/agent.system.md文件中的系统提示定义。更改此提示会极大地改变框架。
- 该框架不会以任何方式引导或限制代理。不存在代理必须遵循的硬编码轨道。
- 每个提示、在通信循环中发送给代理的每个小消息模板都可以在prompts/文件夹中找到并进行更改。
- 每个默认工具都可以在python/tools/文件夹中找到,并可以更改或复制以创建新的预定义工具。
- 当然,它是开源的(除了像 Perplexity 这样的一些工具,但是将来它也将被开源替代品所取代)。
- 沟通是关键
- 给你的代理一个适当的系统提示和指示,它可以创造奇迹。
- 座席可以与上级和下级进行沟通,提出问题、给出指示和提供指导。在系统提示中指导您的座席如何进行有效沟通。
- 终端界面是实时流式和交互式的。您可以随时停止和干预。如果您发现您的代理朝错误的方向前进,只需停止并立即告知它。
- 这个框架有很大的自由度。你可以指示你的代理定期向上级汇报,请求允许继续工作。你可以指示他们在决定何时委派子任务时使用积分系统。上级可以复核下属的结果并提出异议。可能性是无穷无尽的。
-
- Agent Zero 可能很危险! 在正确指导下,Agent Zero 可以做很多事情,甚至可能对您的计算机、数据或帐户造成危险。始终在隔离环境中运行 Agent Zero(例如内置的 docker 容器),并小心谨慎地处理您的愿望。
- Agent Zero 不是预编程的;它是基于提示的。 整个框架仅包含少量代码,不会以任何方式指导代理。所有内容都位于prompts/文件夹中的系统提示中。在这里,您可以根据需要重写整个框架行为。如果您的代理无法正常通信,请使用工具、推理、使用记忆、寻找答案 - 只需更好地指导它即可。
- 如果您无法提供理想的环境,请告知您的代理。Agent Zero 旨在用于隔离的虚拟环境(出于安全考虑),其中预安装并配置了一些工具。如果您无法提供所有必要的条件或 API 密钥,只需更改系统提示并告知您的代理可以使用哪些操作系统和工具。没有什么是硬编码的;如果您不告诉您的代理有关某个工具的信息,它将不知道它,也不会尝试使用它。
不错的功能
- 输出非常干净、丰富多彩、可读且交互性强;没有任何隐藏内容。
- 您在终端中看到的相同彩色输出会在每次会话中自动保存到logs/文件夹中的 HTML 文件中。
- 代理输出是实时流式传输的,允许用户随时阅读和干预。
- 不需要编码,只需要提示和沟通技巧。
- 凭借可靠的系统提示,即使对于小型模型,该框架也是可靠的,包括精确的工具使用。
记住已知问题
- 系统提示很烂。你可以做得更好。如果你能做到,请帮帮我 😃
- 代理与 Docker 容器中的终端通过 SSH 之间的通信有时会中断并停止产生输出。有时是因为代理运行了类似“server.serve_forever()”的程序,导致终端挂起,有时可能会发生随机错误。重新启动代理和/或 Docker 容器会有所帮助。
- 代理可能会破坏其操作系统。有时代理可能会停用虚拟环境、卸载软件包、更改配置等。同样,删除 docker 容器并清理 work_dir /就足以修复此问题。
理想环境
- Docker 容器:运行 Agent Zero 的最佳环境是内置的 docker 容器。代理可以自行下载映像frdel/agent-zero-exe并启动容器,您只需要运行 docker(就像 Docker Desktop 应用程序一样)。
- Python:必须在系统上安装 Python 才能运行该框架。
- 互联网访问:代理需要互联网访问才能使用其在线知识工具并执行需要连接的命令和脚本。如果您不需要代理在线,您可以在prompts/文件夹中更改其提示并使其完全本地化。
-
设置
- 所需的 API 密钥:
- 目前,唯一推荐的 API 密钥是https://www.perplexity.ai/ API。Perplexity 是一种方便的 Web 搜索工具,尚未被开源替代品取代。如果您没有 Perplexity 的 API 密钥,请在 .env 文件中将其留空,这样就不会使用 Perplexity。
- 聊天模型和嵌入模型可以通过 Ollama 和 HuggingFace 或通过 API 在本地执行。
- 输入您的 API 密钥:
- 您可以将 API 密钥输入到.env文件中,该文件可以从example.env中复制
- 或者您可以在终端会话中导出您的 API 密钥:
export API_KEY_PERPLEXITY="your-api-key-here" export API_KEY_OPENAI="your-api-key-here"
- 使用以下终端命令安装依赖项:
pip install -r requirements.txt
- 选择您的聊天、实用程序和嵌入模型:
- 在main.py文件中,在chat()函数的开头,您可以看到如何设置聊天模型和嵌入模型。
- 您可以选择在线模型(OpenAI、Anthropic、Groq)或离线模型(Ollama、HuggingFace)。
- 运行Docker:
- 最简单的方法是安装 Docker Desktop 应用程序并运行它。其余的将由框架本身处理。
运行程序
- 只需在 Python 中运行main.py文件:
python main.py
- 或者使用编辑器右上角的调试按钮在 VS Code 中以调试模式运行它。为此,我为 VS Code 提供了配置文件。