基于Llama 3.1的多功能智能系统
llama-agentic-system是基于Llama 3.1构建的智能系统,具备任 务分解、多步推理和工具使用能力。系统集成了模型推理、安全检查和代码执行环境,并通过Llama Guard进行内容过滤,为开发者提供了构建生成式AI应用的完整工具链。
该仓库允许您运行Llama 3.1作为一个能够执行"主动"任务的系统,例如:
此外,我们希望将安全评估从模型层面转移到整体系统层面。这使得底层模型能够保持广泛的可操控性,并适应需要不同安全保护级别的使用场景。
其中一项安全保护由Llama Guard提供。默认情况下,Llama Guard用于输入和输出过滤。然而,系统可以配置修改这个默认设置。例如,在经常观察到对良性提示的拒绝的情况下,建议使用Llama Guard进行输出过滤,只要满足您用例的安全要求。
[!注意] API仍在不断发展,可能会发生变化。欢迎构建和实验,但请暂时不要依赖其稳定性!
一个主动型应用需要几个组件:
Llama Stack定义并标准化了这些组件以及构建生成式AI应用所需的许多其他组件。然后,通过Llama Stack Distribution方便地将这些API的各种实现组装在一起。
要开始使用Distributions,您需要:
llama
CLI的工具链启动后,您可以将主动型应用指向此服务器的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进行推理,您需要按照这些说明安装服务器。
使用以下命令下载所需的检查点:
# 下载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/获取。
基本上,上面的相同命令也适用,只需将--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-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个输入:
假设你正在使用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
如你所见,我们上面进行了基本配置,并配置了:
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!)来帮助您入门。
如果您想使用工具,必须在仓库根目录创建一个.env
文件并为工具添加API密钥。完成后,您需要重启分发服务器。
模型支持的工具以及需要API密钥的工具包括:
提示 如果您没有API密钥,仍然可以运行应用,但模型将无法访问这些工具。
通过运行以下命令启动应用(本地)并与之交互:
mesop app/main.py
这将启动一个mesop应用,您可以访问localhost:32123
来使用聊天界面。
您也可以选择为自定义工具设置API密钥:
WOLFRAM_ALPHA_API_KEY
环境变量中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
来避免每次都运行安全防护。
如果您有任何问题,随时与我们联系。
[!注意] 虽然您可以使用
venv
运行应用,但安装分发仍需要conda。
# 创建并激活虚拟环境 python3 -m venv venv source venv/bin/activate
# 创建并激活虚拟环境 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 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声 读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场 景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号