ChatGLM
清华智谱开源的双语对话大模型,支持工具调用、代码解释器与OpenAI API兼容
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
清华智谱开源的双语对话大模型,支持工具调用、代码解释器与OpenAI API兼容
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2023年10月,智谱AI与清华大学KEG实验室联合发布了ChatGLM3系列,这是继ChatGLM-6B初代版本之后的第三代产品。彼时,开源大模型江湖群雄并起,Meta的LLaMA2刚刚发布,国内外开源社区对中文大模型的期待也在持续攀升。而ChatGLM3的出现,用一组数据回答了许多人的疑问:在Hugging Face平台上,ChatGLM-6B系列累计下载超过1000万次——这不只是数字,更是无数开发者、研究者和AI爱好者用真金白银的GPU时间投出的信任票。
ChatGLM3-6B是整个开源家族中参数规模最小、最易于部署的成员,但它的能力却一点不含糊。
ChatGLM系列脱胎于清华大学提出的GLM(General Language Model)架构,与GPT的自回归单向建模不同,GLM采用了独特的**自回归空白填充(Autoregressive Blank Infilling)**策略——把文本中随机长度的span挖空,让模型像做填空题一样学习预测。这种训练目标使得GLM天然擅长同时处理理解与生成任务,也让ChatGLM在中文NLP任务上展现出良好的平衡性。
智谱AI作为GLM技术的商业转化方,将这套架构不断迭代:ChatGLM初代的6B参数版本点燃了社区热情;ChatGLM2引入了RoPE位置编码和多阶段预训练;ChatGLM3则在前代基础上大刀阔斧地升级了底座模型性能、工具调用能力和代码解释器,形成了今天我们看到的完整技术体系。
ChatGLM3-6B延续了系列一贯的中英文双语对话能力,但在问答质量上有明显提升。与前代相比,它的回答更少出现"幻觉"(hallucination),逻辑连贯性更好,尤其在需要多轮推理的复杂问题上表现稳定。Demo支持调整top_p、temperature等采样参数,爱好者可以直接在Gradio或Streamlit界面中体验,无需写一行代码。
ChatGLM3最令人眼前一亮的能力是Function Calling(工具调用)。通过@register_tool装饰器,开发者可以用极少的代码为模型注册任意工具——查天气、搜新闻、调用内部API,都不在话下。模型能够理解用户意图,判断是否需要调用工具,并正确提取参数。在composite_demo中,这个能力被完整展示:用户说"帮我查一下北京的天气",模型自动调用get_weather工具,返回结果后再自然语言呈现给用户。
这是ChatGLM3区别于大多数开源对话模型的杀手锏。内置的**代码解释器(Code Interpreter)**基于Jupyter内核运行,模型不仅能生成代码,还能在真实执行环境中运行代码、捕获输出、修正错误,形成"思考—执行—反馈"的完整闭环。用户可以让它画爱心图表、做数据分析、执行符号运算——模型会自主判断需要多少步代码、什么时候算完成了任务。
图1:Code Interpreter执行代码绘制爱心(效果可参见仓库resources/heart.png)
openai_api_demo提供了与OpenAI API格式完全兼容的HTTP接口,支持传入自定义模型路径和服务端口。对于已经在使用OpenAI SDK或LangChain的项目,只需改一行base_url即可切换到ChatGLM3,大幅降低了迁移成本。
ChatGLM3-6B的部署选项非常灵活,覆盖了从爱好者尝鲜到企业生产的全场景。
| 精度 | 显存/内存需求 | 适用场景 |
|---|---|---|
| FP16(全精度) | ~13GB 显存 | 高质量推理 |
| INT4 量化 | ~6GB 显存 | 个人GPU(RTX 3060等) |
| CPU 推理 | ~32GB 内存 | 无GPU环境,速度慢 |
克隆仓库、安装依赖、启动脚本,三步完成。basic_demo目录提供了两个Web界面选项:
Streamlit版本还整合了对话/工具/代码解释器三种模式,一个界面走天下。
对于需要将ChatGLM3接入生产系统的开发者,openai_api_demo目录下的docker-compose.yml提供了完整解法。只需配置MODEL_PATH指向模型权重目录,即可一键启动带GPU支持的API服务。Docker配置了NVIDIA Container Toolkit,GPU资源会被容器直接利用,无需额外设置。
cd openai_api_demo
docker-compose up -d
Apple Silicon Mac用户可以通过PyTorch的MPS后端在GPU上运行模型。虽然速度不及NVIDIA GPU,但6B模型在16GB以上内存的MacBook Pro上可以流畅运行半精度推理(~13GB内存)。官方文档提供了详细的MPS配置步骤。
如果只有多张显存较小的GPU(如多张RTX 3090),可以通过accelerate库的load_model_on_gpus将模型切分到多卡并行推理,代码只需改一行参数。
从仓库结构来看,ChatGLM3的代码组织非常清晰:
ChatGLM/
├── basic_demo/ # Gradio/Streamlit 对话界面
├── composite_demo/ # 多模式 Web Demo(对话/工具/代码解释器)
├── openai_api_demo/ # OpenAI 兼容 API 服务
├── finetune_demo/ # LoRA 微调示例
├── langchain_demo/ # LangChain 集成
├── tensorrt_llm_demo/ # TensorRT-LLM 加速推理
├── resources/ # 静态资源(截图、动图)
└── requirements.txt # 依赖清单
核心依赖:transformers、torch、cpm_kernels、sentencepiece、accelerate、gradio、streamlit、fastapi、vllm等。其中vllm用于高性能推理加速,langchain用于构建RAG等复杂工作流。
AI Framework:模型基于PyTorch + Transformers构建,推理后端支持vLLM(高吞吐量场景)和TensorRT-LLM(极致性能场景)。
** License**:Apache-2.0,开源友好,商业可用。另有独立的MODEL_LICENSE文件约束模型权重的使用条款。
没有任何模型是完美的,ChatGLM3也有它的短板。
1. 显存门槛依然不低:即使是INT4量化,也需要约6GB显存,RTX 3060以下的老显卡用户只能选择CPU推理,速度可能只有GPU的1/10。这对预算有限的爱好者仍是一道门槛。
2. Code Interpreter的安全边界:代码在Jupyter环境中执行,理论上存在沙箱逃逸风险。项目方尚未提供细粒度的权限控制,企业部署时需要自行加固。
3. 闭源模型与开源版本的差距:ChatGLM3-6B是"弟弟",真正的能力巅峰在智谱的闭源API服务(GLM-4等)。开源版本在复杂推理、长上下文等维度与闭源版本有代际差距,用户需要合理管理预期。
4. 工具调用的稳定性:在composite_demo的实测中,模型调用工具的准确率高度依赖Prompt质量。面对模糊或多意图的用户输入,模型有时会选择直接回答而非调用工具,这需要更精细的Prompt工程来调优。
ChatGLM3的意义远超技术本身。从数据看,ChatGLM-6B系列在Hugging Face上1000万次的下载量,证明了一个事实:中国有大量开发者和研究者愿意在开源模型上构建自己的应用。这不是"蹭热度"式的短暂繁荣,而是持续数年的社区积累。
ChatGLM3的发布也加速了国产开源大模型的迭代节奏。它的工具调用、代码解释器等Agent相关能力,让开源社区看到了"让模型真正做事"的可能性,而非仅仅是"聊天玩具"。此后一系列国产开源模型跟进工具调用能力,形成了2024年开源大模型的新竞争格局。
对于AI爱好者而言,ChatGLM3提供了一个低门槛的大模型实验场——用Streamlit界面体验前沿能力、用docker-compose部署自己的API服务、用LangChain构建RAG应用,门槛已从"需要课题组"降到了"需要一张显卡"。
对于AI开发者而言,OpenAI兼容API意味着零成本迁移现有工具链;LoRA微调Demo让垂直领域定制成为可能;TensorRT-LLM加速让推理成本可控。这些组合在一起,构成了一套完整的、从实验到生产的工具链。
ChatGLM3-6B不是最强的开源大模型,但可能是上手最友好、生态最完整的选项之一。从一行pip install到生产级docker部署,从简单对话到Agent工作流,它用清晰的目录结构和丰富的Demo证明了:大模型能力不需要藏在黑箱里,它可以被看见、被修改、被部署在任何你需要的地方。
如果你对大语言模型感兴趣,ChatGLM3是一个值得花一个下午好好折腾的项目。