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