项目简介
Nerve 项目概述
Nerve 是一个无需编写任何代码就能使用任何大型语言模型(LLM)创建有状态代理的工具。借助 Nerve,用户可以制定并执行分步计划,来完成用户定义的任务。Nerve 通过动态更新系统提示,不断整合先前行动中收集的新信息,从而为代理提供多次推理之间的状态性。这使得代理能够进行自动化问题解决,例如通过识别完成任务所需的具体目标,制定并修订实现目标的计划,以及回忆先前行动中获得的相关信息等。
功能特点
- 自动化问题解决:Nerve 提供了一个标准的动作库,代理可以自动利用这些动作来提升自身性能。
- 用户定义的代理:使用标准的 YAML 模板定义代理,用户可以根据需求自定义任务。
- 兼容任意 LLM:Nerve 是一个与模型无关的工具,可以灵活应用于任何模型。
与其他工具的区别
尽管 Nerve 受到了 Autogen 和 Rigging 等项目的启发,其核心目标与这些工具不同。Nerve旨在不需要用户编写代码即能操作智能代理(除非需要自定义功能),并且不需重型运行时(如 Python)而保证高效和内存安全。
使用注意
Nerve工具的性能在很大程度上取决于所使用的模型。规模较大的模型通常比小模型更能可靠地解释和生成结构化数据。如果所用模型生成的响应无效,建议使用更为强大的模型。
LLM 支持
Nerve 支持通过多个 API 访问的模型,包括 ollama、groq、OpenAI、Fireworks、Huggingface 和 NovitaAI。工具会自动检测所选模型是否原生支持功能调用,若不支持,则提供兼容层以使旧模型也能执行功能调用。
用户可以使用 -G
(或 --generator
)参数指定要使用的提供方和模型。
示例
下面是 examples/ssh_agent
示例任务的描述,任务是通过运行一系列的 Shell 命令来找出占用 RAM 内存量最多的进程。
using:
- memory
- goal
- task
- planning
- time
system_prompt: >
You are a senior developer and computer expert with years of linux experience.
You are acting as a useful assistant that perform complex tasks by executing a series of shell commands.
guidance:
- Always assume you start in a new /bin/bash shell in the user home directory.
- Prefer using full paths to files and directories.
- Use the /tmp directory for any file write operations.
- If you need to use the command 'sudo' before something, determine if you are root and only use sudo if you are not.
timeout: 120s
functions:
- name: Commands
actions:
- name: ssh
description: "To execute a bash command on the remote host via SSH:"
example_payload: whoami
timeout: 30s
tool: ssh $SSH_USER_HOST_STRING
项目的运行
运行这样的任务时,需要定义环境变量 SSH_USER_HOST_STRING
。此外,Nerve 提供了 debug 模式,可以通过增加参数将任务的内部状态保存到磁盘上,便于用户观察。这些功能使得 Nerve 成为一个既容易使用又功能强大的工具。
安装与构建
- 从 DockerHub 安装:可以在 Docker Hub 上找到 Docker 镜像。
- 从源码构建:使用 Rust 的
cargo build --release
命令进行编译。 - 使用 Docker 构建:可以通过 Docker 来构建项目。
许可证
Nerve 以 GPL 3 许可证发布,用户可以通过安装 cargo license
并运行该工具来查看项目依赖的许可证。