ControlLLM
ControlLLM:通过图搜索增强大型语言模型的工具使用能力
我们提出了ControlLLM,这是一个创新框架,使大型语言模型(LLMs)能够利用多模态工具解决复杂的现实世界任务。尽管LLMs表现出色,但在工具调用方面仍然存在挑战,如用户提示模糊、工具选择和参数设置不准确以及工具调度效率低下。为克服这些挑战,我们的框架包含三个关键组件:(1) 一个$\textit{任务分解器}$,将复杂任务分解为具有明确输入输出的子任务;(2) 一个$\textit{图上思维(ToG)范式}$,在预先构建的工具图上搜索最佳解决方案路径,该图指定了不同工具之间的参数和依赖关系;(3) 一个$\textit{具有丰富工具箱的执行引擎}$,解释解决方案路径并在不同计算设备上高效运行工具。我们在涉及图像、音频和视频处理的多样化任务上评估了我们的框架,展示了其相比现有方法在准确性、效率和多功能性方面的优越性。
🤖 视频演示
https://github.com/OpenGVLab/ControlLLM/assets/13723743/cf72861e-0e7b-4c15-89ee-7fa1d838d00f
🏠 系统概览
🎁 主要特性
- 图像感知
- 图像编辑
- 图像生成
- 视频感知
- 视频编辑
- 视频生成
- 音频感知
- 音频生成
- 多解决方案
- 指向输入
- 资源类型感知
🗓️ 计划
- ✅ (🔥 新) 发布在线演示和🤗Hugging Face space。
- ✅ (🔥 新) 支持PixArt-alpha,一种最先进的文本到图像合成方法。
🛠️安装
基本要求
- Linux
- Python 3.10+
- PyTorch 2.0+
- CUDA 11.8+
克隆项目
在根目录执行以下命令:
git clone https://github.com/OpenGVLab/ControlLLM.git
cd controlllm
安装依赖
设置环境:
conda create -n cllm python=3.10
conda activate cllm
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia
安装LLaVA:
pip install git+https://github.com/haotian-liu/LLaVA.git
然后安装其他依赖:
pip install -r requirements.txt
pip install -e .
👨🏫 入门指南
步骤1:启动工具服务
请将您的个人OpenAI密钥和Weather Key放入相应的环境变量中。
😬 一键启动所有端点:
# openai密钥
export OPENAI_API_KEY="..."
# openai基础URL
export OPENAI_BASE_URL="..."
# 天气API密钥
export WEATHER_API_KEY="..."
# 资源目录
export SERVER_ROOT="./server_resources"
python -m cllm.services.launch --port 10056 --host 0.0.0.0
工具即服务
以图像生成为例,我们首先启动服务。
python -m cllm.services.image_generation.launch --port 10011 --host 0.0.0.0
然后,我们可以通过Python API调用服务:
from cllm.services.image_generation.api import *
setup(port=10011)
text2image('A horse')
步骤2:启动ToG服务
export OPENAI_BASE_URL="..."
export OPENAI_API_KEY="..."
python -m cllm.services.tog.launch --port 10052 --host 0.0.0.0
步骤3:启动Gradio演示
使用openssl
生成证书:
mkdir certificate
openssl req -x509 -newkey rsa:4096 -keyout certificate/key.pem -out certificate/cert.pem -sha256 -days 365 -nodes
最后,您可以在服务器上启动Gradio演示:
export TOG_PORT=10052
export CLLM_SERVICES_PORT=10056
export CLIENT_ROOT="./client_resources"
export GRADIO_TEMP_DIR="$HOME/.tmp"
export OPENAI_BASE_URL="..."
export OPENAI_API_KEY="..."
python -m cllm.app.gradio --controller "cllm.agents.tog.Controller" --server-port 10003 --https
或者,您可以在run.sh
中设置上述变量,并通过运行以下命令启动所有服务:
bash ./run.sh
🎫 许可证
本项目采用Apache 2.0许可证发布。
🖊️ 引用
如果您在研究中发现本项目有用,请引用我们的论文:
@article{2023controlllm,
title={ControlLLM: Augment Language Models with Tools by Searching on Graphs},
author={Liu, Zhaoyang and Lai, Zeqiang and Gao, Zhangwei and Cui, Erfei and Li, Zhiheng and Zhu, Xizhou and Lu, Lewei and Chen, Qifeng and Qiao, Yu and Dai, Jifeng and Wang, Wenhai},
journal={arXiv preprint arXiv:2305.10601},
year={2023}
}
🤝 致谢
- 感谢以下项目的开源贡献: Hugging Face LangChain SAM Stable Diffusion ControlNet InstructPix2Pix EasyOCR ImageBind PixArt-alpha LLaVA Modelscope AudioCraft Whisper Llama 2 LLaMA
如果您想加入我们的微信群,请扫描以下二维码添加我们的助手为微信好友: