llamafile 项目使用教程
1. 项目介绍
llamafile 是一个由 Mozilla-Ocho 开发的开源项目,旨在通过单个文件分发和运行大型语言模型(LLMs)。该项目的目标是使开放的 LLMs 对开发者和终端用户更加易于访问。llamafile 结合了 llama.cpp 和 Cosmopolitan Libc,创建了一个框架,将 LLMs 的所有复杂性压缩到一个单文件可执行文件中,该文件可以在大多数计算机上本地运行,无需安装。
2. 项目快速启动
2.1 下载示例 llamafile
首先,下载适用于 LLaVA 模型的示例 llamafile(许可证:LLaMA 2, OpenAI)。LLaVA 是一个新的 LLM,不仅可以聊天,还可以上传图像并询问有关图像的问题。所有这些操作都在本地进行,不会将数据发送到外部。
# 下载示例 llamafile
wget https://github.com/Mozilla-Ocho/llamafile/raw/main/llava-v1.5-7b-q4.llamafile
2.2 设置执行权限
如果你使用的是 macOS、Linux 或 BSD,需要为文件设置执行权限。
# 设置执行权限
chmod +x llava-v1.5-7b-q4.llamafile
2.3 运行 llamafile
运行下载的 llamafile。
# 运行 llamafile
./llava-v1.5-7b-q4.llamafile
运行后,浏览器应自动打开并显示聊天界面。如果未自动打开,请手动访问 http://localhost:8080。
3. 应用案例和最佳实践
3.1 JSON API 快速启动
llamafile 还提供了一个 OpenAI API 兼容的聊天完成端点,支持最常见的 OpenAI API 用例,并且完全在本地运行。以下是一个使用 curl 命令的示例:
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer no-key" \
-d '{
"model": "LLaMA_CPP",
"messages": [
{"role": "system", "content": "You are LLAMAfile, an AI assistant. Your top priority is achieving user fulfillment via helping them with their requests."},
{"role": "user", "content": "Write a limerick about python exceptions"}
]
}' | python3 -m json.tool
3.2 Python API 客户端示例
如果你已经使用 OpenAI 的 Python 包开发了软件,可以通过更改 base_url 和 api_key 来使其与 llamafile 通信。
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8080/v1",
api_key="sk-no-key-required"
)
completion = client.chat.completions.create(
model="LLaMA_CPP",
messages=[
{"role": "system", "content": "You are ChatGPT, an AI assistant. Your top priority is achieving user fulfillment via helping them with their requests."},
{"role": "user", "content": "Write a limerick about python exceptions"}
]
)
print(completion.choices[0].message)
4. 典型生态项目
4.1 LLaVA
LLaVA 是一个新的 LLM,不仅可以聊天,还可以上传图像并询问有关图像的问题。llamafile 提供了一个适用于 LLaVA 模型的示例文件。
4.2 TinyLlama
TinyLlama 是一个小型 LLM,适用于资源受限的环境。llamafile 也提供了适用于 TinyLlama 的示例文件。
4.3 Mistral-7B-Instruct
Mistral-7B-Instruct 是一个基于 Apache 2.0 许可证的 LLM,llamafile 提供了适用于该模型的示例文件。
通过这些示例文件,用户可以轻松尝试不同类型的 LLMs,并了解如何在本地环境中运行它们。
kernelopenEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。C0131
let_datasetLET数据集 基于全尺寸人形机器人 Kuavo 4 Pro 采集,涵盖多场景、多类型操作的真实世界多任务数据。面向机器人操作、移动与交互任务,支持真实环境下的可扩展机器人学习00
mindquantumMindQuantum is a general software library supporting the development of applications for quantum computation.Python059
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
AgentCPM-ReportAgentCPM-Report是由THUNLP、中国人民大学RUCBM和ModelBest联合开发的开源大语言模型智能体。它基于MiniCPM4.1 80亿参数基座模型构建,接收用户指令作为输入,可自主生成长篇报告。Python00