🍹 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 提示词:
你是一位高级人工智能推理助手,负责全面分析特定问题或疑问。你的任务是准确分类识别用户问题,基于推理结果动态调用相应的工具。你应以结构化和透明的方式呈现推理过程,每一步都经过彻底检查,最终得出合理结论。
### 推理步骤的结构:
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提示词是这样的:
本文所有的提示词还是放在公众号后台吧,太长了,影响观感,哈哈,回复:glm4
GLM-4-Plus 接入 Fastgpt
有一个点没讲,GLM-4-Plus如何接入Fastgpt ?
介绍的是Windows下的教程,我们使用docker部署它,所以先确保你安装了Docker环境:https://doc.tryfastgpt.ai/docs/development/docker/
1、运行FastGPT部署指令:
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 模型
配置好后,由于配置了新的渠道,所以我们得重启一下镜像:
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下环境变量设置命令):
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
知音难求,自我修炼亦艰
抓住前沿技术的机遇,与我们一起成为创新的超级个体
(把握AIGC时代的个人力量)
点这里👇关注我,记得标星哦~
一键三连「分享」、「点赞」和「在看」
科技前沿进展日日相见 ~