GraphLLM是一个创新的框架,它允许用户通过一个或多个大型语言模型(LLM)来处理数据。这个框架不仅提供了一个强大的代理,能够执行网络搜索和运行Python代码,还提供了一套工具来抓取网页数据,并将其重新格式化为对LLM更友好的格式。
GraphLLM的特点
GraphLLM提供了以下一系列特点:
- 基于图的框架:使用LLM处理数据。
- 强大的代理能力:能够执行网络搜索和运行Python代码。
- 数据抓取和格式化工具:提供工具来抓取网页并重新格式化数据。
- 示例列表:提供了一系列示例,帮助用户快速开始。
- 低层次框架:提供对原始提示和模型输出的完全控制,库的内部工作机制不隐藏在任何抽象之后。
- 图形用户界面(GUI):虽然仍在开发中,但已经提供了基本功能。
GraphLLM的GUI
GraphLLM的GUI受到了ComfyUI的启发,前端界面相似,但后端完全不同,因此项目之间的节点不兼容。这是因为开发者希望提供更高级的功能和对复杂图的支持。GraphLLM GUI的一些特点包括:
- 循环:可以在图中包含任何类型的循环,甚至可以无限运行一个图。
- 条件语句:节点的拓扑结构可以部分地根据输入值进行更改。这有助于构建状态机。
- 节点的并行执行:更多的节点可以并行执行,这对于同时进行多个LLM调用非常有用。
- 结果流式传输:可以在LLM节点产生输出时实时查看输出。可以在图运行时连接观察节点。
- 层次化图:图可以包含其他图,没有限制。
- 额外功能:图可以调用外部工具,例如网络刮刀、YouTube下载器或PDF阅读器。
示例
GraphLLM提供了一个示例图,用于生成Python代码并用它来解决问题。例如,一个代理能够回答类似于"给我总结一下Hacker News首页上最有可能与语言模型相关的文章"的问题。
限制
GraphLLM主要与llama70b和qwen 32b进行测试,使用llama.cpp服务器作为后端。该框架正在积极开发中,可能会有重大变化。
安装和运行
要快速设置GraphLLM,你需要运行以下命令来下载和启动:
bash
pip3 install selenium readabilipy html2text pdfminer.six justpy
git clone https://github.com/matteoserva/GraphLLM.git
cd GraphLLM
然后在另一个终端启动llama.cpp服务器:
bash
GGML_CUDA_ENABLE_UNIFIED_MEMORY=1 CUDA_VISIBLE_DEVICES=0,1 ./llama-server -ngl 99 -t 6 -c 32768 --host 0.0.0.0 -m Qwen2.5-32B-Instruct-Q5_K_M.gguf --override-kv tokenizer.ggml.add_bos_token=bool:false -sp -fa -ctk q8_0 -ctv q8_0
你可以在终端中运行以下命令来启动服务器:
bash
python3 server.py
然后,你可以在浏览器中打开 http://localhost:8008/ 来访问。
要直接运行一个图,你可以使用以下命令:
bash
python3 exec.py examples/graph_summarize.txt test/wikipedia_summary.txt
在examples文件夹中有更多的示例,你也可以从Web GUI中打开更多示例。
后端支持
GraphLLM支持一些推理引擎和许多模型。建议的组合是使用llama.cpp与Qwen2.5。llama.cpp服务器得到了完全支持,其他引擎具有有限的功能。GraphLLM广泛使用了高级功能,如语法、助手响应预填充和使用原始提示。一些引擎和API提供者只支持这些功能的子集。
GraphLLM是一个强大的工具,可以帮助你在大型语言模型的帮助下处理复杂的数据任务。如果你对这个项目感兴趣,可以访问其GitHub页面了解更多信息:
GraphLLM: A graph based framework to process data through a LLM or multiple LLMs.