前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >媲美GPT4o!教你用智谱GLM-4-Plus在Fastgpt、Dify中构建知识库,并结合o1思维链和工具调用!

媲美GPT4o!教你用智谱GLM-4-Plus在Fastgpt、Dify中构建知识库,并结合o1思维链和工具调用!

作者头像
AI进修生
发布于 2024-12-02 11:42:13
发布于 2024-12-02 11:42:13
83201
代码可运行
举报
文章被收录于专栏:AI进修生AI进修生
运行总次数:1
代码可运行

🍹 Insight Daily 🪺

Aitrainee | 公众号:AI进修生

Hi,这里是Aitrainee,欢迎阅读本期新文章。

前段时间用 智谱GLM-4-Plus 模型结合FatGPT、Dify设置工作流时,我想把之前g1项目的思维链整合进来。

▲ g1思维链在Dify中实现

我们知道,思维链提示词可以使大模型对初始问题进行逐步分析。而在他进行每步分析的过程中,我希望能他还能根据自身需要来调用工具以支撑更好的分析。

就像这样:

这里对于同一个问题使用了知识库和联网,并且存在于不同的推理阶段。

(临时使用笔记本ollama部署的随机嵌入模型,检索可能差点)

你可以看到他,拆解问题、调用知识库搜索工具等,就像React一样。

这个工作流在Fastgpt中是这样的:

这个工作流由FastGPT里面的 问题优化节点、图片分析节点、知识库节点、搜索引擎节点、工具调用(主控节点-COT)节点构成。

>/ FastGPT节点介绍:https://doc.tryfastgpt.ai/docs/workflow/modules/ai_chat/

主控节点(COT)会根据用户的初始提问,逐步进行分析,并调用工具库中的相关工具。这些工具可能包括:引导节点,用于帮助用户进行提问引导与优化;搜索节点,提供实时信息;以及知识库,提供专业内容。当然,你可以添加更多的工具以支持主控节点调用。

现在来看看,主控节点-COT 提示词:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
你是一位高级人工智能推理助手,负责全面分析特定问题或疑问。你的任务是准确分类识别用户问题,基于推理结果动态调用相应的工具。你应以结构化和透明的方式呈现推理过程,每一步都经过彻底检查,最终得出合理结论。

### 推理步骤的结构:
1. **标题**:明确标识当前推理阶段。
2. **内容**:详细描述你的思考过程,解释理由及得出结论所采取的步骤。
3. **工具调用**(如有需要):在此步骤调用相关工具,并明确工具调用的原因。
4. **下一步行动**:决定是否继续深入推理或准备提供最终答案。

### 输出格式:
请使用以下Markdown格式返回结果,通过视觉处理方式降低用户对推理过程的关注度:

### Title:当前推理阶段的简短标签。
#### Content:深入解释此步骤的推理过程。
> Tool Call(如有必要):描述并调用相应的工具。
> Next Action >> 选择 'continue' 继续推理或 'final_answer' 得出结论。

### 关键说明:
- **至少进行 2 个不同的推理步骤**,每个步骤基于前一个步骤。
- **承认人工智能的局限性**,尤其在评估准确性及可能面临的困难方面。
- **使用多种推理框架**(如演绎、归纳、溯因、类比推理)来解决问题。
- **批判性分析推理过程**,寻找潜在缺陷或逻辑漏洞。
- **结合相关领域知识和最佳实践**,确保推理符合既定标准。
- **量化每个步骤和最终结论的确定性水平**,并考虑可能影响结果的边缘情况。
### Markdown 输出示例:

### 初始问题分析
> #### Content:
> 为了有效地解决这个问题,我将首先将给定的信息分解为关键部分。这涉及到识别……【详细说明】……通过这种方式构建问题,我们可以系统地解决每个方面。
>
> > Tool Call:
> > 在这一步,我决定调用 [工具名称] 来进一步分析 [具体分析内容]。这是因为该工具可以……
>
> Next Action >> continue

---
### 最终结论
#### Content:
经过多轮推理与工具分析,我得出最终结论是……【详细说明】……这个结论基于我们之前的推理框架与工具结果。

看过下面g1这篇文章的,你就知道我是用这里面的o1思维链改良而来的:

g1:o1推理链开源实现,原理竟如此简单!解决 60-80% 的困扰LLM的简单逻辑问题

2024-09-18

这个提示词子核心分两部分,一个是关键说明那一部分,另外的主要就是格式化输出了。

在得出最终结论后他会终止思维链,得到 final_answer。

最后出现的增强搜索等三个模块,是工作流后面用户交互节点起到的效果。

当然,如果你不想每次AI回答都以这么长的COT内容输出,那么你可以在FastGPT中设置三个全局变量和判断器。

这样可以为不同的提示词方案创建三条支线工作流:一种用于普通工具调用,一种用于COT+工具调用,另一种用于直接从知识库回答。根据不同场景,可以灵活切换选择。

GLM-4-Plus 旗舰模型

此外,我们介绍一下 上面 主控节点-COT 使用的GLM-4-Plus模型,它是智谱迄今为⽌最强⼤的模型。

GLM-4-Plus 在各⼤语⾔⽂本能⼒数据集上获得了与 GPT-4o 及 405B 参数量的 Llama3.1 相当的⽔平。

在最新的SuperBench⼤模型评测中,GLM-4-Plus 位列世界前三,打破了此前国外模型垄断前三甲的局⾯。

有关智谱平台的更多信息,请访问:https://zhipuaishengchan.datasink.sensorsdata.cn/t/YX

提示词排版优化 1

当然,提示词词这种东西,你看了,懂了,接着就可以按照自己的想法轻松修改迭代,难的是最开始想出这个提示词的Author,当然,我主要起一个参考的作用。

比如这个提示词原来是有 [ ] 记录任务阶段的

但我觉得输出的太啰嗦或者界面不够整洁,所以我们就可以在输出格式这里把这些都删了从而控制输出的内容:

去除提示词中的任务[ ]、Tool Call 等输出,会使得页面更清爽

提示词优化 2:Summary 折叠输出

进一步我们希望能折叠思维链的中间内容的输出,只输出最后结论。在不考虑改变Fastgpt前端的情况下,那么可以在提示词中加入Markdown Summary 语法,前端只要能渲染Markdown语法就行了:

不幸的是,Fastgpt 对Summary语法不支持,直接原始输出了。

但是Dify可以,它的效果是这样的:

所以我们的Summary提示词是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
本文所有的提示词还是放在公众号后台吧,太长了,影响观感,哈哈,回复:glm4

GLM-4-Plus 接入 Fastgpt

有一个点没讲,GLM-4-Plus如何接入Fastgpt ?

首先,FastGPT是一个免费、开源且功能强大的 AI 知识库平台,提供开箱即用的数据处理、模型调用、RAG 检索和可视化 AI 工作流。能够轻松构建复杂的 LLM 应用程序。

介绍的是Windows下的教程,我们使用docker部署它,所以先确保你安装了Docker环境:https://doc.tryfastgpt.ai/docs/development/docker/

1、运行FastGPT部署指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir fastgpt
cd fastgpt
Invoke-WebRequest -Uri https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json -OutFile config.json
Invoke-WebRequest -Uri https://raw.githubusercontent.com/labring/FastGPT/main/files/docker/docker-compose-pgvector.yml -OutFile docker-compose.yml

然后执行Docker-compose up -d命令运行镜像

最后在浏览器打开3000端口:http://localhost:3000/

2、将智谱API 接入Fastgpt中:

One-API:让国内LLM、Coze等跑通仅支持OpenAI API的开源项目 | 保姆级教程、可配合免费LLM API使用!

我们要把智谱的api接入进去,所以我们先打开One-API:http://localhost:3001

然后点击渠道

把箭头上面的这些配好就行。智谱API获取地址:https://bigmodel.cn/usercenter/apikeys

点击测试,可以看到右上角测试通过

然后向FastGPT config 文件加入 GLM-4-Plus 模型

配置好后,由于配置了新的渠道,所以我们得重启一下镜像:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose restart

我们可以看到fastgpt多了一个:GLM-4-PLUS 模型,接入成功!

3、FastGPT 知识库搭建 ?

在fastgpt中新建一个知识库,文本处理模型就选择GLM-4-PLUS

默认用的是OpenAI的嵌入模型(用不了),你可以选择去Ollama中下载一个,然后和上面配置GLM-4-PLUS API一样的步骤,把这个本地嵌入模型配置到One-API中。

记得config.json也要配置,fastgpt才有显示

Dify中接入GLM-4-Plus

Dify的部署和FastGPT差不多:https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose

拉仓库、拉镜像、运行镜像:

访问Dify后,接入GLM-4-Plus 模型是这样的(在Dify设置里面选择模型供应商,获取智谱AI密钥并填入即可):

这样就好了。

最后,顺便提一句,如果你是本地部署模型,这篇文章有一些知识:

Ollama 升级!支持一键拉取Huggingface上所有的模型,太方便了!(vLLM、Fastgpt、Dify、多卡推理)

2024-10-17

对了,如果你以前看我的文章,你可能在使用Aider,所以 ...

Aider 中使用 GLM-4-Plus

我们可以看到Aider并没有提供智谱模型支持,但是它提供Openai兼容格式支持,而智谱的模型兼容OpenAI格式。

所以我们只需下面三步就可以在Aider中使用 glm-4-plus(setx是windows下环境变量设置命令):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
setx OPENAI_API_BASE "https://open.bigmodel.cn/api/paas/v4/"
setx OPENAI_API_KEY xx
aider --model openai/glm-4-plus

只需要设置 OPENAI_API_BASE 、OPENAI_API_KEY 即可,然后再以 "aider --model openai/glm-4-plus" 指定aider启用的模型;

API获取地址:https://bigmodel.cn/usercenter/apikeys,并将api填入OPENAI_API_KEY。

操作过程如下

我们输入打招呼用语,可以看到它正常输出。

然后让他使用HTML, CSS和JS创建一个待办事项应用程序。

Plus 模型速度非常快,运行完成后打开它,功能一切正常。

对了,你如果想Aider双模架构,可以看看这篇文章,Aider是一款非常好的AI编码助手:

Aider(已升级):Aider利用双模型架构做到85% SOTA得分!(架构师/编辑师助你实现编程新高度)

除此以外你可以在任何兼容Openai格式的API接入应用中使用 GLM-4-Plus 模型。比如我们以前的Claude Dev。

亦或是知识笔记软件Obsidian

Obsidian 接入 GLM系列模型 查看机器之心文章:https://mp.weixin.qq.com/s/xDBMqjVFxzSJdtX_VkwqtA

🌟希望这篇文章对你有帮助,感谢阅读!如果你喜欢这系列文章请以 点赞 / 分享 / 在看 的方式告诉我,以便我用来评估创作方向。

👽Submission:kristjahmez06@gmail.com

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI进修生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用HAI,基于PyTorch 实现一个基于 Transformer 架构的字符级语言模型
这篇教程将带你一步步在 JupyterLab 中实现一个简单的语言模型。我们将从零开始,使用 PyTorch 实现一个基于 Transformer 架构的字符级语言模型。尽管在实际应用中,大多数人更倾向于使用 Hugging Face 的预训练模型,但本文的目的是让你了解语言模型的基本原理和实现步骤。接下来,我们会讲解数据预处理、模型构建、训练过程以及如何利用模型生成文本,每个环节都附有详细的代码和解释,力求让内容通俗易懂。
不惑
2025/03/26
3050
使用HAI,基于PyTorch 实现一个基于 Transformer 架构的字符级语言模型
Transformer 模型示例
Transformer 架构是现代深度学习中非常重要的模型,广泛应用于自然语言处理(NLP)和计算机视觉(CV)领域。以下是一个使用 Python 和 PyTorch 编写的简单 Transformer 模型示例,用于处理文本数据(例如机器翻译或文本生成任务)。
软件架构师Michael
2025/01/20
2310
PyTorch中Transformer模型的搭建
PyTorch最近版本更新很快,1.2/1.3/1.4几乎是连着出,其中: 1.3/1.4版本主要是新增并完善了PyTorchMobile移动端部署模块和模型量化模块。 而1.2版中一个重要的更新就是把加入了NLP领域中炙手可热的Transformer模型,这里记录一下PyTorch中Transformer模型的用法(代码写于1.2版本,没有在1.3/1.4版本测试)。
带萝卜
2020/10/26
2.3K0
使用Python实现深度学习模型:Transformer模型
Transformer模型自提出以来,已经成为深度学习领域,尤其是自然语言处理(NLP)中的一种革命性模型。与传统的循环神经网络(RNN)和长短期记忆网络(LSTM)不同,Transformer完全依赖于注意力机制来捕捉序列中的依赖关系。这使得它能够更高效地处理长序列数据。在本文中,我们将详细介绍Transformer模型的基本原理,并使用Python和TensorFlow/Keras实现一个简单的Transformer模型。
Echo_Wish
2024/06/08
8110
使用Python实现深度学习模型:Transformer模型
带有coverage机制的PGN模型架构
在生成摘要时,我们可能会遇到重复生成某些词或短语的问题。coverage机制就是为了解决这个问题而设计的,它通过记录已经关注过的源文本部分,来避免重复关注和生成。
@小森
2025/01/23
1410
带有coverage机制的PGN模型架构
训练基于Transformer的翻译任务模型
🤗机器翻译是自然语言处理领域中的一个重要任务,其中Transformer模型其强大的表征能力和并行计算能力,成为机器翻译的主流模型。
@小森
2024/12/31
1990
训练基于Transformer的翻译任务模型
动手学深度学习(十三) NLP机器翻译
机器翻译(MT):将一段文本从一种语言自动翻译为另一种语言,用神经网络解决这个问题通常称为神经机器翻译(NMT)。 主要特征:输出是单词序列而不是单个单词。 输出序列的长度可能与源序列的长度不同。
致Great
2020/02/25
9100
动手学深度学习(十三)  NLP机器翻译
Transformer - 3 - Transformer 的实现
Transformer 模型来源于 Google 发表的一篇论文 “Attention Is All You Need”,希望大家能在有一些了解的基础上,能够自己读一下这篇文章。
为为为什么
2023/05/11
6210
Transformer - 3 - Transformer 的实现
Transformer深入浅出
我们从零开始用pytorch搭建Transformer模型(中文可以翻译成变形金刚)。
lyhue1991
2023/09/05
1.1K0
Transformer深入浅出
百闻不如一码!手把手教你用Python搭一个Transformer
与基于RNN的方法相比,Transformer 不需要循环,主要是由Attention 机制组成,因而可以充分利用python的高效线性代数函数库,大量节省训练时间。
一墨编程学习
2019/05/08
7690
百闻不如一码!手把手教你用Python搭一个Transformer
百闻不如一码!手把手教你用Python搭一个Transformer
与基于RNN的方法相比,Transformer 不需要循环,主要是由Attention 机制组成,因而可以充分利用python的高效线性代数函数库,大量节省训练时间。
大数据文摘
2019/05/07
1.1K0
百闻不如一码!手把手教你用Python搭一个Transformer
Transformer的基本原理
Seq2Seq[1]框架最初是在神经机器翻译(Neural Machine Translation,NMT)领域中提出,用于将一种语言(sequence)翻译成另一种语言(sequence)。其结构如下图所示:
felixzhao
2022/09/26
1.2K0
基于ResNet和Transformer的场景文本识别
对于自然场景的文字识别我们会遇到了许多不规则裁剪的图像,其中包含文本表示。虽然已经引入了许多复杂的想法来从图像中提取确切的文本。例如光学字符识别 (OCR)、基于 RNN 的 seq2seq 注意方法都是被认为是从结构图像中提取序列信息的传统方法,但许多研究人员发现,很难处理不规则图像和训练时间使他们更加昂贵。基于 RNN 的 seq2seq 注意力方法需要输入的序列表示,这些输入因输入而异,因此很难训练数百万张图像。大多数时间模型无法预测文本或字符,因为我们正在处理自然场景图像。
deephub
2021/07/23
9670
基于ResNet和Transformer的场景文本识别
动手学深度学习(十四) NLP注意力机制和Seq2seq模型
在“编码器—解码器(seq2seq)”⼀节⾥,解码器在各个时间步依赖相同的背景变量(context vector)来获取输⼊序列信息。当编码器为循环神经⽹络时,背景变量来⾃它最终时间步的隐藏状态。将源序列输入信息以循环单位状态编码,然后将其传递给解码器以生成目标序列。然而这种结构存在着问题,尤其是RNN机制实际中存在长程梯度消失的问题,对于较长的句子,我们很难寄希望于将输入的序列转化为定长的向量而保存所有的有效信息,所以随着所需翻译句子的长度的增加,这种结构的效果会显著下降。
致Great
2020/02/25
5090
动手学深度学习(十四) NLP注意力机制和Seq2seq模型
使用深度学习模型创作动漫故事,比较LSTM和GPT2的文本生成方法
这里使用的数据是从myanimelist中抓取的,它最初包含超过16000个数据点,这是一个非常混乱的数据集。所以我采取以下步骤清理:
deephub
2020/09/14
1.1K0
Transformer聊天机器人教程
在这篇文章中,我们将演示如何构建Transformer聊天机器人。 本文聚焦于:使用TensorFlow Dataset并使用tf.data创建输入管道来使用Cornell Movie-Dialogs Corpus,使用Model子类化实现MultiHeadAttention,使用Functional API实现Transformer。
昱良
2019/05/29
2.4K0
Transformer聊天机器人教程
Transformer注解及PyTorch实现(上)
"Attention is All You Need"[1] 一文中提出的Transformer网络结构最近引起了很多人的关注。Transformer不仅能够明显地提升翻译质量,还为许多NLP任务提供了新的结构。虽然原文写得很清楚,但实际上大家普遍反映很难正确地实现。
YoungTimes
2022/04/28
3820
Transformer注解及PyTorch实现(上)
大语言模型的幕后:如何构建一个全球级AI语言系统
在过去的几年里,大型语言模型(LLMs)如OpenAI的GPT系列、Google的BERT及其衍生版本等,已经成为人工智能领域的前沿技术。这些模型不仅在自然语言处理(NLP)任务中取得了显著成果,而且正在重塑从聊天机器人到自动化创作的多个领域。尽管这些技术的应用已经非常广泛,但很多人对于它们是如何构建的,尤其是如何打造一个全球级AI语言系统,仍然存在很多疑问。
一键难忘
2025/03/25
1380
熬了一晚上,我从零实现了Transformer模型,把代码讲给你听
来源丨https://zhuanlan.zhihu.com/p/411311520
Python数据科学
2021/10/19
2.5K0
【留言送书】跟我一起从源码学习Transformer!
近几年NLP领域有了突飞猛进的发展,预训练模型功不可没。当前利用预训练模型(pretrain models)在下游任务中进行fine-tune,已经成为了大部分NLP任务的固定范式。Transformer摒弃了RNN的序列结构,完全采用attention和全连接,严格来说不属于预训练模型。但它却是当前几乎所有pretrain models的基本结构,为pretrain models打下了坚实的基础,并逐步发展出了transformer-XL,reformer等优化架构。本文结合论文和源码,对transformer基本结构,进行详细分析。
lujohn3li
2021/01/12
6150
推荐阅读
相关推荐
使用HAI,基于PyTorch 实现一个基于 Transformer 架构的字符级语言模型
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验