FastGPT
FastGPT copied to clipboard
Tool工具调用大模型bug 调用AI模型+工具终止情况下,tool多次输入问题导致回答错乱
例行检查
- [x] 我已确认目前没有类似 issue
- [x] 我已完整查看过项目 README,以及项目文档
- [x] 我使用了自己的 key,并确认我的 key 是可正常使用的
- [x] 我理解并愿意跟进此 issue,协助测试和提供反馈
- [x] 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭
你的版本
- [ ] 公有云版本
- [x] 私有部署版本, 具体版本号: 4.7.1
问题描述, 日志截图 Tools会自行判断是否要把输入的问题进行修改输出给工具,但有的时候需要利用大模型的提示词去直接处理特定任务,输入的问题会不完整,以及回答错乱(两个AI同时输出)。相当于这种情境下我只想把tool当问题分类工具(比分类靠谱的多)。 在tools提示词里和AI模型的描述里都要求了只能调用一次工具也不行。
例如:请帮我分析A和B的差异。 tools会本别输出两个问题给大模型 A是什么?B是什么。在我不需要tools对于大模型返回结果再加工的情况下,接入tool终止工具。大模型会同时输出两个问题,导致回答错乱。 另外其他情况下问ABCD可能导致tool调用n次知识库导致token超过上限。(token统计也有问题,实际返回1000字的内容token也会报错,统计成20k)
复现步骤 工具调用工具接入AI模型。 预期结果
- 在工具调用里设置最多可以调用的工具次数上限。
- 对于接入工具终止调用的工具,让工具调用模块知道如果需要调用这个工具,只能调用一次。
- 对于工具调用AI模型的时候,允许用户强行设置模型的问题为用户输入的问题而不是tool输入的问题。
相关截图
临时搞了个解决办法: 1.设置一个插件过渡,设置2个以上问题让tool输入。 2.由插件启动AI,AI的问题从起点直接接入。 这样AI如果把问题拆成多个问题去问也是调用一次插件,然后AI接入的是原本的问题,不会导致问题被修改。
请帮我分析A和B的差异。 tools会本别输出两个问题给大模型 A是什么?B是什么。 我是模型我也会这么做
请帮我分析A和B的差异。 tools会本别输出两个问题给大模型 A是什么?B是什么。 我是模型我也会这么做
能理解是这样的逻辑没毛病,但如果我只是想用tools调用某个大模型用特定的提示词去处理这个问题,又不想等大模型完整输出一遍返回给tool在输出一遍,这个就比较奇怪了。用很多使用场景是需要单独接入不同的大模型 或者用不同的提示词去处理,而不是都让tool去组织回答。
请帮我分析A和B的差异。 tools会本别输出两个问题给大模型 A是什么?B是什么。 我是模型我也会这么做
能理解是这样的逻辑没毛病,但如果我只是想用tools调用某个大模型用特定的提示词去处理这个问题,又不想等大模型完整输出一遍返回给tool在输出一遍,这个就比较奇怪了。用很多使用场景是需要单独接入不同的大模型 或者用不同的提示词去处理,而不是都让tool去组织回答。
那应该走分类。tool 本质就是调用工具获取结果总结。
请帮我分析A和B的差异。 tools会本别输出两个问题给大模型 A是什么?B是什么。 我是模型我也会这么做
能理解是这样的逻辑没毛病,但如果我只是想用tools调用某个大模型用特定的提示词去处理这个问题,又不想等大模型完整输出一遍返回给tool在输出一遍,这个就比较奇怪了。用很多使用场景是需要单独接入不同的大模型 或者用不同的提示词去处理,而不是都让tool去组织回答。
那应该走分类。tool 本质就是调用工具获取结果总结。
分类比较智障。感觉tool去分类问题比较好用。但是我觉得tool是可以加一个设置限定最多调用几次工具的吧?
请帮我分析A和B的差异。 tools会本别输出两个问题给大模型 A是什么?B是什么。 我是模型我也会这么做
能理解是这样的逻辑没毛病,但如果我只是想用tools调用某个大模型用特定的提示词去处理这个问题,又不想等大模型完整输出一遍返回给tool在输出一遍,这个就比较奇怪了。用很多使用场景是需要单独接入不同的大模型 或者用不同的提示词去处理,而不是都让tool去组织回答。
那应该走分类。tool 本质就是调用工具获取结果总结。
分类比较智障。感觉tool去分类问题比较好用。但是我觉得tool是可以加一个设置限定最多调用几次工具的吧?
不过最多调用几次,是指调用工具次数,不包括是否回答在里面。 感觉要做不回答,除了终止模块实现方式,就单独加个开关之类的。还不如把问题分类改成一种特殊工具调用。