各位大佬,请问你们聊天调用工具,是使用 openai api 的 tools 参数,还是自己写提示词呢?
哪个效果好?我看到 cursor 的提示词自己描述了 functions ,好像效果也不错。
![]() | 1 wentx 69 天前 tools + prompt |
2 connecting OP @wentx openai 的 tools ,是不是只会返回一个 tools_call? 我发现理应调用 N 个的,一次次给我。这样 token 多算了很多。 |
![]() | 3 wentx 69 天前 @connecting #2 这个跟模型有关系,还有 prompt 也有一定的关系,如果你是要让他一次返回多个 tools 的话,可以在 prompt 里面描述一下你的具体需求 |
![]() | 4 razertory 69 天前 ![]() 典型的非 tool call 的实现比如 cline 的这段代码 https://github.com/cline/cline/blob/main/src/core/prompts/system.ts#L27 。 如果真需要返回多个,前提是你的多个 tool-call 没有先后依赖关系。这种情况下要么走 cline 这种方式,通过魔改 prompt 也能实现,要么把这些 tools 合并成一个方法,前提是工具提供方配合。 |
5 connecting OP @razertory 懂了,感谢,研究一下,应该会合并一下看看,写 prompt 应该要调很久 |
![]() | 6 chairuosen 69 天前 自己写提示词协议,自己解析。对接豆包 1.6 发现它不小的概率不按照 openai 的格式返回导致解不出 tools_call ,只能一个模型写一个对应的 adaptor ,豆包大概率会返回<|FunctionCallBegin|><|FunctionCallEnd|> 这个格式,可能是它训练时加进去的私有协议,只能跟它写一样的不会出错 |
![]() | 7 zuou 69 天前 可以试试 Qwen3-235B-A22B-2507 ,这个模型会“疯狂”调用工具,批量调用和多轮调用效果都挺好,应该是专门训练的 @connecting |
8 blakezhaothinks 69 天前 我们这边是 tools 定义严格的 schema ,在 prompt 中告诉模型什么场景调用什么工具。 |
![]() | 9 NizumaEiji 69 天前 tools 也就是 function call 吧 这个现在主流的 llm api 都应该是支持的吧 手写 prompt 再解析交互就有点复杂了 |
![]() | 10 mmdsun 69 天前 via iPhone 模型不支持 tools call 可以这么来。 |
![]() | 11 SSang 69 天前 先用默认的呀,哪个你觉得不满意再去调整他 |
![]() | 12 EscYezi 68 天前 via iPhone 最好两个都有,提示词里引导 llm 何时/如何调用工具,定义写在 tools 里。 |
13 Seulgi 68 天前 via iPhone 用的框架是把 tools 按 schema 组装到 prompt 里。react 那种模型。我觉得有点垃圾,因为一次 tool call ,tool 结果会再次组装到 prompt ,每次 tool call 都会把整个 prompt 重新发一次。我觉得这个好像是不是不太对,太浪费 token 了 |