chameleon-llm
Chameleon 是一个专为大型语言模型(LLM)设计的“即插即用”组合推理框架。它旨在解决大模型在处理科学问题、数学问答及表格分析等复杂任务时,难以灵活调用外部工具或进行多步逻辑推导的痛点。传统方法往往需要针对特定任务重新训练模型,而 Chameleon 让模型能够像变色龙适应环境一样,动态感知并自主选择合适的工具(如代码解释器、搜索模块等)来协同解决问题,无需修改模型底层参数。
该项目特别适合 AI 研究人员、开发者以及需要构建复杂推理应用的技术团队使用。通过提供模块化的代码实现,它降低了将大模型与外部能力集成的门槛。其核心技术亮点在于“组合式推理”能力:系统能自动拆解复杂问题,规划推理步骤,并在执行过程中灵活切换不同工具,显著提升了 GPT-4 等模型在专业领域的准确性和鲁棒性。作为曾入选顶级 AI 论文榜单的开源项目,Chameleon 为探索大模型在实际场景中的深层应用能力提供了强有力的支持。
使用场景
某科研团队的数据分析师需要处理包含复杂科学图表和数学公式的混合文档,并从中提取数据以回答多步推理问题。
没有 chameleon-llm 时
- 工具切换繁琐:分析师需手动判断何时调用 OCR 识别图片、何时使用代码解释器计算数值,并在不同工具间反复复制粘贴结果。
- 推理链条断裂:面对“先读取图表趋势,再结合文本公式推导结论”这类复合任务,单一模型常因缺乏规划能力而遗漏关键步骤。
- 错误难以追溯:当最终答案出错时,很难定位是视觉识别偏差还是逻辑计算失误,调试过程如同黑盒摸索。
- 开发成本高昂:若要自动化此流程,工程师需编写大量硬编码规则来串联各个独立模块,维护极其困难。
使用 chameleon-llm 后
- 智能自动编排:chameleon-llm 能自主感知任务需求,动态选择并串联视觉模型、计算器或搜索工具,实现真正的“即插即用”。
- 连贯组合推理:系统自动生成完整的思维链,无缝衔接“看图获取数据”与“代入公式计算”等环节,显著提升复杂科学问题的准确率。
- 过程透明可控:每一步调用的工具及中间结果均清晰可见,分析师可快速定位并修正特定环节的逻辑偏差。
- 零代码快速部署:无需编写复杂的胶水代码,仅需配置可用工具列表,chameleon-llm 即可让大模型具备处理多模态复合任务的能力。
chameleon-llm 的核心价值在于赋予大模型自主规划与组合外部工具的能力,将碎片化的单点技能转化为解决复杂现实问题的系统化智慧。
运行环境要求
未说明
未说明

快速开始
:lizard: 变色龙:基于GPT-4的即插即用组合推理
论文“变色龙:基于大型语言模型的即插即用组合推理”(arXiv链接)的代码。
:bell: 如果您有任何问题或建议,请随时告诉我们。您可以直接通过电子邮件 lupantech@gmail.com 联系 Pan Lu,在 Twitter 上留言,或者在此仓库中提交一个问题。
[项目主页] [论文] [Twitter] [LinkedIn] [YouTube] [演示文稿]
“变色龙”的暂定标志。
💥 新闻 💥
- [2023.05.06] 我们很高兴地看到,我们的变色龙论文在 AlphaSignal 的评选中,从1,682篇人工智能论文中脱颖而出,位列 #1。
- [2023.05.05] 我们非常荣幸地宣布,Pan Lu受邀在Google Brain的推理团队进行演讲。演示文稿请点击这里:[演示文稿]
- [2023.04.24] 我们的成果被 MarkTechPost 报道。
- [2023.04.23] 我们的研究所取得的进展被 DAIR.AI 评为“本周最佳机器学习论文”之一。
- [2023.04.22] 我们很兴奋地宣布,我们的工作已被 WorldofAI 的 YouTube 频道 报道!
- [2023.04.21] 我们的工作目前是 https://trends.vercel.app 上的热门项目。[链接]
- [2023.04.20] 非常感谢 John Nay 在 Twitter 上分享了我们的工作!
- [2023.04.19] 我们的研究所发表在了 Papers with Code 上。
- [2023.04.19] 我们感谢 Aran Komatsuzaki 及时在 Twitter 上介绍了我们的工作!
- [2023.04.19] 特别感谢 @_akhaliq 迅速在 Twitter 上分享了我们的工作!
- [2023.04.19] 欢迎访问我们的项目主页:Chameleon-LLM。
- [2023.04.19] 我们的论文现已可在 https://arxiv.org/abs/2304.09842 获取。
:lizard: 关于变色龙
变色龙是一个即插即用的组合推理框架,能够将各类工具与大语言模型相结合。变色龙会合成程序来组合不同的工具,包括其他大语言模型、现成的视觉模型、网络搜索引擎、Python函数以及根据用户需求定制的规则模块。以大语言模型作为自然语言规划器的基础,变色龙能够推断出合适的工具组合顺序,并按此顺序执行,最终生成响应。

我们在两个任务上展示了变色龙的适应性和有效性:ScienceQA 和 TabMWP。值得注意的是,使用GPT-4作为基础模型时,变色龙在ScienceQA上的准确率达到86.54%,比已发表的最佳少样本模型高出11.37%;而在TabMWP上,变色龙的整体准确率达到了98.78%,相比当前最先进的模型提升了17.0%。进一步的研究表明,与其他大语言模型(如ChatGPT)相比,使用GPT-4作为规划器时,工具选择更加一致且合理,并且能够根据指令推断出潜在的约束条件。
更多详细信息,请访问我们的项目主页 here 和论文 here。
:tv: YouTube 视频
我们衷心感谢 WorldofAI 在 YouTube 上对我们的工作进行了报道和介绍!
:star: 星标历史
🐙 系统要求
- OpenAI API 密钥
- 必应搜索 API (如果您想启用必应搜索模块,但该模块是可选的)
安装所有必需的 Python 依赖项(由 pipreqs 生成):
python==3.8.10
huggingface-hub
numpy==1.23.2
openai==0.23.0
pandas==1.4.3
transformers==4.21.1
requests==2.28.1
安装所有必需的 Python 依赖项(如果您之前已经设置好这些依赖项,且版本要求不严格,则可以跳过此步骤):
pip install -r requirements.txt
⚠️ 配置 ⚠️
OpenAI API 密钥
请从 https://platform.openai.com/account/api-keys 获取您的 OpenAI API 密钥。
要使用 OpenAI API 密钥运行 变色龙,您 必须 设置好账单信息(即开通付费账户)。
您可以在 https://platform.openai.com/account/billing/overview 设置付费账户。
Bing 搜索 API 密钥(可选)
从以下网址获取您的 Bing 搜索 API 密钥:https://www.microsoft.com/en-us/bing/apis/bing-web-search-api。
Bing 搜索 API 密钥是可选的。如果未设置此密钥,将在 ScienceQA 任务上导致性能略有下降。
:hammer_and_wrench: 模块清单
Chameleon 中的不同工具
我们模块库中的不同类型工具:

工具子集
分别用于 ScienceQA 和 TabMWP 的工具。两个任务中可重用的工具以绿色突出显示:

🤖 在 ScienceQA 上运行 Chameleon
科学问题回答(ScienceQA)是一个多模态问答基准,涵盖了广泛科学主题和多样化情境。ScienceQA 数据集位于 data/scienceqa。有关更多详细信息,您可以探索该数据集,并查看 Explore 页面和 Visualize 页面。
对于当前版本,Image Captioner 和 Text Detector 的结果为现成可用,分别存储在 data/scienceqa/captions.json 和 data/scienceqa/ocrs.json 中。实时调用这两个模块的功能即将推出!
要运行 Chameleon(GPT-4):
cd run_scienceqa
python run.py \
--model chameleon \
--label chameleon_gpt4 \
--policy_engine gpt-4 \
--kr_engine gpt-4 \
--qg_engine gpt-4 \
--sg_engine gpt-4 \
--test_split test \
--test_number -1
它将生成预测结果,并将结果保存在 results/scienceqa/chameleon_gpt4_test.json、results/scienceqa/chameleon_gpt4_test_cache.jsonl 和 results/scienceqa/chameleon_gpt4_test_cache.json 中。
我们可以通过运行以下命令来获得平均准确率以及不同问题类别的准确率指标:
python evaluate.py \
--data_file ../data/scienceqa/problems.json \
--result_root ../results/scienceqa \
--result_files chameleon_chatgpt_test_cache.jsonl
要运行 Chameleon(ChatGPT):
python run.py \
--model chameleon \
--label chameleon_gpt4 \
--policy_engine gpt-3.5-turbo \
--kr_engine gpt-3.5-turbo \
--qg_engine gpt-3.5-turbo \
--sg_engine gpt-3.5-turbo \
--test_split test \
--test_number -1
我们的 Chameleon 是 CoT(思维链) 方法的一种泛化形式,其中生成的程序是由一系列 Solution Generator 和 Answer Generator 组成的。通过将 --model 设置为 cot,modules 将被设置为 ["solution_generator", "answer_generator"]。
要运行 CoT(思维链提示)GPT-4:
python run.py \
--model cot \
--label cot_gpt4 \
--sg_engine gpt-4 \
--test_split test \
--test_number -1
要运行 CoT(思维链提示)ChatGPT:
python run.py \
--model cot \
--label cot_chatgpt \
--sg_engine gpt-4 \
--test_split test \
--test_number -1
🤖 在 TabMWP 上运行 Chameleon
TabMWP 数据集包含 38,431 道表格型数学应用题。TabMWP 中的每道题目都与一个表格上下文相关联,该上下文以图像、半结构化文本和结构化表格的形式呈现。TabMWP 数据集位于 data/tabmwp。有关更多详细信息,您可以探索该数据集,并查看 Explore 页面和 Visualize 页面。
要运行 Chameleon(GPT-4):
cd run_tabmwp
python run.py \
--model chameleon \
--label chameleon_gpt4 \
--test_split test \
--policy_engine gpt-4 \
--rl_engine gpt-4 \
--cl_engine gpt-4 \
--tv_engine gpt-4 \
--kr_engine gpt-4 \
--sg_engine gpt-4 \
--pg_engine gpt-4 \
--test_number -1 \
--rl_cell_threshold 18 \
--cl_cell_threshold 18
它将生成预测结果,并将结果保存在 results/tabmwp/chameleon_gpt4_test.json、results/tabmwp/chameleon_gpt4_test_cache.jsonl 和 results/tabmwp/chameleon_gpt4_test_cache.json 中。
我们可以通过运行以下命令来获得平均准确率以及不同问题类别的准确率指标:
python evaluate.py \
--data_file ../data/tabmwp/problems_test.json \
--result_root ../results/tabmwp \
--result_files chameleon_chatgpt_test_cache.jsonl
要运行 Chameleon(ChatGPT):
python run.py \
--model chameleon \
--label chameleon_chatgpt \
--test_split test \
--policy_engine gpt-3.5-turbo \
--rl_engine gpt-3.5-turbo \
--cl_engine gpt-3.5-turbo \
--tv_engine gpt-3.5-turbo \
--kr_engine gpt-3.5-turbo \
--sg_engine gpt-3.5-turbo \
--pg_engine gpt-3.5-turbo \
--test_number -1 \
--rl_cell_threshold 18 \
--cl_cell_threshold 18
要运行 CoT(思维链提示)GPT-4:
python run.py \
--model cot \
--label cot_gpt4 \
--test_split test \
--sg_engine gpt-4 \
--test_number -1
要运行 CoT(思维链提示)ChatGPT:
python run.py \
--model cot \
--label cot_chatgpt \
--test_split test \
--sg_engine gpt-3.5-turbo \
--test_number -1
我们的 Chameleon 是 PoT(程序链) 方法的一种泛化形式,其中生成的程序是由 Program Generator、Program Executor 和 Answer Generator 组成的序列。通过将 --model 设置为 pot,modules 将被设置为 ["program_generator", "program_executor", "answer_generator"]。
要运行 PoT(程序链提示)GPT-4:
python run.py \
--model pot \
--label pot_gpt4 \
--test_split test \
--pg_engine gpt-4 \
--test_number -1
要运行 PoT(程序链提示)ChatGPT:
python run.py \
--model pot \
--label pot_chatgpt \
--test_split test \
--pg_engine gpt-3.5-turbo \
--test_number -1
😈 更多示例
ScienceQA 数据集上的更多示例

Chameleon(GPT-4)能够通过生成由各种工具组成的程序,并按顺序执行这些程序来适应不同的输入查询,从而获得正确答案。
例如,上述查询问道:“哪种动物的皮肤适合在寒冷环境中生存?”这个问题涉及与动物生存相关的科学术语。因此,规划器决定依赖 Bing 搜索 引擎来获取领域专业知识,从而受益于丰富的在线资源。
TabMWP 上的更多示例

我们的 Chameleon 对各类查询的适应性和多功能性在 TabMWP 上同样得到了体现,如上图所示的例子所示。
第一个例子涉及对税务表格的数学推理。Chameleon (1) 调用知识检索模型来回忆有助于理解此类领域特定表格的基础知识,(2) 以更易读的自然语言格式描述该表格,(3) 最后依靠程序辅助工具进行精确计算。
第二个例子中,系统生成的 Python 代码与知识检索模型提供的背景知识高度一致。
第三个例子要求系统根据输入查询,在一个大型表格上下文中定位单元格。Chameleon 调用行查找模型来帮助准确找到相关行,并通过 LLM 模型生成语言解决方案,而不是依赖基于程序的工具。
:chart_with_upwards_trend: Chameleon 到底有多好?
与经过微调的模型以及少样本提示的 GPT-4/ChatGPT 相比,Chameleon 表现出了显著的提升:

要可视化 Chameleon 的预测结果,只需运行与您具体任务相对应的 Jupyter Notebook:notebooks/results_viewer_[TASK].ipynb。这将提供一种交互式且用户友好的方式来探索模型生成的结果。或者,您也可以访问我们的 项目页面 获取更多信息和选项。
:slot_machine: Chameleon 正在学习哪些内容?
工具使用
在 ScienceQA 数据集上,由 Chameleon (ChatGPT) 和 Chameleon (GPT-4) 生成的程序中调用的工具:

在 TabMWP 数据集上,由 Chameleon (ChatGPT) 和 Chameleon (GPT-4) 生成的程序中调用的工具:

转移图
运行 notebooks/transition_[TASK]_[Model]_Engine.ipynb,即可可视化测试集上生成的程序的模块转移图。
这是 Chameleon (GPT-4) 在 ScienceQA 数据集上生成的程序中模块之间的转移情况。START 是起始符号,END 是终结符号,其余均为非终结符号。
这是 Chameleon (GPT-4) 在 TabMWPQA 数据集上生成的程序中模块之间的转移情况。START 是起始符号,END 是终结符号,其余均为非终结符号。
:smile_cat: 想开发一项新任务吗?
- 构建模块库:在
demos目录下为基于 LLM 的模型创建提示。在model.py中定义每个模块的输入、执行和输出。 - 开发 LLM 规划器:全面描述模块库,并提供几个示例,展示如何将查询映射到目标程序。
- 实现数据加载器和评估方法:在
model.py中定义数据加载器。若需修改评估方法,则更新main.py中相应部分。 - 享受过程:基础工作就绪后,就可以尽情享受并投入到手头的任务中了!
:coffee: 保持联系!
太棒了!我随时欢迎交流讨论、合作,甚至只是线上喝杯咖啡。如需联系,请访问 Pan Lu 的主页获取联系方式。
:white_check_mark: 引用
如果您发现 Chameleon 对您的研究和应用有所帮助,请使用以下 BibTeX 格式引用:
@article{lu2023chameleon,
title={Chameleon: Plug-and-Play Compositional Reasoning with Large Language Models},
author={Lu, Pan and Peng, Baolin and Cheng, Hao and Galley, Michel and Chang, Kai-Wei and Wu, Ying Nian and Zhu, Song-Chun and Gao, Jianfeng},
journal={arXiv preprint arXiv:2304.09842},
year={2023}
}
版本历史
chameleon-v1.02023/04/20常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

