llama-agentic-system

llama-agentic-system

基于Llama 3.1的多功能智能系统

llama-agentic-system是基于Llama 3.1构建的智能系统,具备任务分解、多步推理和工具使用能力。系统集成了模型推理、安全检查和代码执行环境,并通过Llama Guard进行内容过滤,为开发者提供了构建生成式AI应用的完整工具链。

llama-agentic-system大语言模型代理任务安全评估分布式系统Github开源项目

llama-agentic-system

PyPI - 下载量 Discord

该仓库允许您运行Llama 3.1作为一个能够执行"主动"任务的系统,例如:

  • 将任务分解并执行多步推理。
  • 使用工具的能力
    • 内置:模型内置了搜索或代码解释器等工具的知识
    • 零样本:模型可以通过之前未见过的、上下文中的工具定义学习调用工具

此外,我们希望将安全评估从模型层面转移到整体系统层面。这使得底层模型能够保持广泛的可操控性,并适应需要不同安全保护级别的使用场景。

其中一项安全保护由Llama Guard提供。默认情况下,Llama Guard用于输入和输出过滤。然而,系统可以配置修改这个默认设置。例如,在经常观察到对良性提示的拒绝的情况下,建议使用Llama Guard进行输出过滤,只要满足您用例的安全要求。

[!注意] API仍在不断发展,可能会发生变化。欢迎构建和实验,但请暂时不要依赖其稳定性!

开始使用Llama Stack

一个主动型应用需要几个组件:

  • 能够在底层Llama系列模型上运行推理
  • 能够使用Llama-Guard系列模型进行安全检查
  • 能够执行工具,包括代码执行环境,并使用模型的多步推理过程进行循环

Llama Stack定义并标准化了这些组件以及构建生成式AI应用所需的许多其他组件。然后,通过Llama Stack Distribution方便地将这些API的各种实现组装在一起。

要开始使用Distributions,您需要:

  1. 安装任何先决条件
  2. 设置提供核心llama CLI的工具链
  3. 下载模型
  4. 安装distribution
  5. 启动distribution服务器

启动后,您可以将主动型应用指向此服务器的URL(例如http://localhost:5000),然后开始创造奇迹。

现在让我们详细介绍这些步骤:

安装先决条件

Python包

我们建议创建一个隔离的conda Python环境。

# 创建并激活虚拟环境 ENV=agentic_env conda create -n $ENV python=3.10 cd <path-to-llama-agentic-system-repo> conda activate $ENV # 安装依赖 pip install -r requirements.txt

现在您应该能够运行llama --help

usage: llama [-h] {download,distribution,model} ... 欢迎使用LLama cli 选项: -h, --help 显示此帮助消息并退出 子命令: {download,distribution,model}

bubblewrap

代码执行环境使用bubblewrap进行隔离。您的系统可能已经安装了它;如果没有,它很可能在您操作系统的软件包仓库中。

Ollama(可选)

如果您计划使用Ollama进行推理,您需要按照这些说明安装服务器。

下载检查点

Meta下载

使用以下命令下载所需的检查点:

# 下载8B模型,可以在单个GPU上运行 llama download --source meta --model-id Meta-Llama3.1-8B-Instruct --meta-url META_URL # 您也可以获取70B模型,但这需要8个GPU llama download --source meta --model-id Meta-Llama3.1-70B-Instruct --meta-url META_URL # llama-agents默认启用安全功能。为此,您需要 # 安全模型 -- Llama-Guard和Prompt-Guard llama download --source meta --model-id Prompt-Guard-86M --meta-url META_URL llama download --source meta --model-id Llama-Guard-3-8B --meta-url META_URL

对于以上所有操作,您需要提供一个URL(META_URL),该URL可以在签署协议后从https://llama.meta.com/llama-downloads/获取。

Huggingface下载

基本上,上面的相同命令也适用,只需将--source meta替换为--source huggingface

llama download --source huggingface --model-id Meta-Llama3.1-8B-Instruct --hf-token <HF_TOKEN> llama download --source huggingface --model-id Meta-Llama3.1-70B-Instruct --hf-token <HF_TOKEN> llama download --source huggingface --model-id Llama-Guard-3-8B --ignore-patterns *original* llama download --source huggingface --model-id Prompt-Guard-86M --ignore-patterns *original*

**重要:**设置环境变量HF_TOKEN或在命令中传入--hf-token以验证您的访问权限。您可以在https://huggingface.co/settings/tokens找到您的令牌。

提示:llama download的默认设置是使用--ignore-patterns *.safetensors运行,因为我们使用original文件夹中的.pth文件。然而,对于Llama Guard和Prompt Guard,我们需要safetensors。因此,请使用--ignore-patterns original运行,以便下载safetensors并忽略.pth文件。

通过ollama下载

如果您已经在使用ollama,我们也支持ollama-local分发版,您可以继续使用ollama来管理模型下载。

ollama pull llama3.1:8b-instruct-fp16
ollama pull llama3.1:70b-instruct-fp16

[!注意] 目前仅支持上述两个模型。

安装和配置分发版

[!注意] local分发版目前仅在Linux上进行了测试。 对于其他平台(ubuntu, mac),请尝试使用ollama-local分发版并安装特定平台的ollama。

让我们先列出可用的分发版

$ llama distribution list

+---------------+---------------------------------------------+----------------------------------------------------------------------+
| 规格ID         | 提供商规格                                   | 描述                                                                 |
+---------------+---------------------------------------------+----------------------------------------------------------------------+
| local         | {                                           | 使用`llama_toolchain`自身的代码来提供所有llama堆栈API                   |
|               |   "inference": "meta-reference",            |                                                                      |
|               |   "safety": "meta-reference",               |                                                                      |
|               |   "agentic_system": "meta-reference"        |                                                                      |
|               | }                                           |                                                                      |
+---------------+---------------------------------------------+----------------------------------------------------------------------+
| remote        | {                                           | 指向远程服务以获取所有llama堆栈API                                      |
|               |   "inference": "inference-remote",          |                                                                      |
|               |   "safety": "safety-remote",                |                                                                      |
|               |   "agentic_system": "agentic_system-remote" |                                                                      |
|               | }                                           |                                                                      |
+---------------+---------------------------------------------+----------------------------------------------------------------------+
| ollama-local  | {                                           | 类似于local-source,但使用ollama来运行LLM推理                           |
|               |   "inference": "meta-ollama",               |                                                                      |
|               |   "safety": "meta-reference",               |                                                                      |
|               |   "agentic_system": "meta-reference"        |                                                                      |
|               | }                                           |                                                                      |
+---------------+---------------------------------------------+----------------------------------------------------------------------+

如上所示,每个"规格"详细说明了构成该规格的"提供商"。例如,local使用"meta-reference"提供商进行推理,而ollama-local则依赖于不同的提供商(Ollama)进行推理。

目前,我们不建议使用remote分发版,因为还没有远程提供商支持Llama堆栈API。

要安装分发版,我们运行一个简单的命令,提供2个输入:

  • 我们想要安装的分发版的规格ID(从list命令获得)
  • 这个安装在本地将被称为的名称

假设你正在使用8B-Instruct模型,所以我们将本地安装命名为local-llama-8b。以下命令将同时安装和配置分发版。作为配置的一部分,你将被要求输入一些信息(model_id, max_seq_len等)。

llama distribution install --spec local --name local-llama-8b

运行成功后,你应该会看到一些类似以下形式的输出:

$ llama distribution install --spec local --name local-llama-8b
....
....
成功安装 cfgv-3.4.0 distlib-0.3.8 identify-2.6.0 libcst-1.4.0 llama_toolchain-0.0.2 moreorless-0.4.0 nodeenv-1.9.1 pre-commit-3.8.0 stdlibs-2024.5.15 toml-0.10.2 tomlkit-0.13.0 trailrunner-1.4.0 ufmt-2.7.0 usort-1.0.8 virtualenv-20.26.3

分发版 `local-llama-8b`(规格为local)已成功安装!

你可以通过运行以下命令重新配置这个分发版:

llama distribution configure --name local-llama-8b

以下是CLI如何引导你填写配置的示例运行:

$ llama distribution configure --name local-llama-8b

配置API表面:inference
输入model的值(必填):Meta-Llama3.1-8B-Instruct
输入quantization的值(可选):
输入torch_seed的值(可选):
输入max_seq_len的值(必填):4096
输入max_batch_size的值(默认:1):1
配置API表面:safety
你想配置llama_guard_shield吗?(y/n):y
进入llama_guard_shield的子配置:
输入model的值(必填):Llama-Guard-3-8B
输入excluded_categories的值(必填):[]
输入disable_input_check的值(默认:False):
输入disable_output_check的值(默认:False):
你想配置prompt_guard_shield吗?(y/n):y
进入prompt_guard_shield的子配置:
输入model的值(必填):Prompt-Guard-86M
配置API表面:agentic_system
YAML配置已写入/home/ashwin/.llama/distributions/i0/config.yaml

如你所见,我们上面进行了基本配置,并配置了:

  • inference在模型Meta-Llama3.1-8B-Instruct上运行(从llama model list获得)
  • 使用模型Llama-Guard-3-8B的Llama Guard安全屏障
  • 使用模型Prompt-Guard-86M的Prompt Guard安全屏障

关于这些配置如何以yaml形式存储,请查看配置结束时打印的文件。

请注意,所有配置以及模型都存储在~/.llama中。

安装和配置ollama-local分发版

在一个终端中,使用以下命令启动ollama服务器:

ollama serve

[!注意] 在服务器日志中,你应该看到形如msg="llama runner started in xx seconds"的消息,表示模型已准备好进行推理。

你可以通过以下命令测试你的ollama设置:

ollama run llama3.1:8b-instruct-fp16

现在,安装llama堆栈分发版:

llama distribution install --spec local-ollama --name ollama

安装和配置local分发版

现在让我们使用命令行界面开始分发。 您需要知道用于安装/配置的分发名称。

llama distribution start --name local-llama-8b --port 5000

您应该看到分发开始并打印出它支持的API,

$ llama distribution start --name local-llama-8b --port 5000

> initializing model parallel with size 1
> initializing ddp with size 1
> initializing pipeline with size 1
Loaded in 19.28 seconds
NCCL version 2.20.5+cuda12.4
Finished model load YES READY
Serving POST /inference/batch_chat_completion
Serving POST /inference/batch_completion
Serving POST /inference/chat_completion
Serving POST /inference/completion
Serving POST /safety/run_shields
Serving POST /agentic_system/memory_bank/attach
Serving POST /agentic_system/create
Serving POST /agentic_system/session/create
Serving POST /agentic_system/turn/create
Serving POST /agentic_system/delete
Serving POST /agentic_system/session/delete
Serving POST /agentic_system/memory_bank/detach
Serving POST /agentic_system/session/get
Serving POST /agentic_system/step/get
Serving POST /agentic_system/turn/get
Listening on :::5000
INFO:     Started server process [453333]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://[::]:5000 (Press CTRL+C to quit)

[!注意] 配置文件位于~/.llama/distributions/local-llama-8b/config.yaml。您可以随意增加max_seq_len

[!重要] "local"分发推理服务器目前仅支持CUDA。它在Apple Silicon机器上无法运行。

这个服务器在本地运行Llama模型。

[!提示] 您可能需要使用--disable-ipv6标志来禁用IPv6支持

现在分发服务器已经设置好,接下来就是使用AgenticSystem API运行一个智能代理应用。

我们已经构建了示例脚本、笔记本和一个UI聊天界面(使用Mesop!)来帮助您入门。

为工具添加API密钥

如果您想使用工具,必须在仓库根目录创建一个.env文件并为工具添加API密钥。完成后,您需要重启分发服务器。

模型支持的工具以及需要API密钥的工具包括:

提示 如果您没有API密钥,仍然可以运行应用,但模型将无法访问这些工具。

启动应用并与服务器交互

通过运行以下命令启动应用(本地)并与之交互:

mesop app/main.py

这将启动一个mesop应用,您可以访问localhost:32123来使用聊天界面。

<img src="https://yellow-cdn.veclightyear.com/835a84d5/ce3794e7-5922-4b56-b207-8040f5b388a9.png" alt="聊天应用" width="600"/>

您也可以选择为自定义工具设置API密钥:

  • WolframAlpha:存储在WOLFRAM_ALPHA_API_KEY环境变量中
  • Brave Search:存储在BRAVE_SEARCH_API_KEY环境变量中

与这个主应用类似,您还可以尝试其他变体

  • PYTHONPATH=. mesop app/chat_with_custom_tools.py 展示如何集成自定义工具
  • PYTHONPATH=. mesop app/chat_moderation_with_llama_guard.py 展示如何修改应用以作为安全聊天审核员

创建智能代理系统并与分发服务器交互

注意:确保分发服务器仍在运行。

cd <path-to-llama-agentic-system> conda activate $ENV llama distribution start --name local-llama-8b --port 5000 # 如果尚未启动 PYTHONPATH=. python examples/scripts/vacation.py localhost 5000

您应该看到形如以下的标准输出:

Environment: ipython Tools: brave_search, wolfram_alpha, photogen Cutting Knowledge Date: December 2023 Today Date: 23 July 2024 User> 我正在计划去瑞士旅行,有哪三个最值得去的地方? Final Llama Guard response shield_type=<BuiltinShield.llama_guard: 'llama_guard'> is_violation=False violation_type=None violation_return_message=None Ran PromptGuardShield and got Scores: Embedded: 0.9999765157699585, Malicious: 1.1110752893728204e-05 StepType.shield_call> No Violation role='user' content='我正在计划去瑞士旅行,有哪三个最值得去的地方?' StepType.inference> 瑞士是一个美丽的国家,拥有丰富的历史、文化和自然美景。以下是三个必去的地方,可以添加到您的行程中:....

提示 您可以选择在脚本中使用--disable-safety来避免每次都运行安全防护。

如果您有任何问题,随时与我们联系。

使用VirtualEnv替代Conda

[!注意] 虽然您可以使用venv运行应用,但安装分发仍需要conda。

在Linux中

# 创建并激活虚拟环境 python3 -m venv venv source venv/bin/activate

对于Windows

# 创建并激活虚拟环境 python -m venv venv venv\Scripts\activate # 对于命令提示符 # 或 .\venv\Scripts\Activate.ps1 # 对于PowerShell # 或 source venv\Scripts\activate # 对于Git

之后的指令(包括使用 pip install -r requirements.txt 安装依赖项)保持不变。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多