QwenLM / Qwen2.5

Qwen2.5 is the large language model series developed by Qwen team, Alibaba Cloud.
9.23k stars 571 forks source link

FunctionCall 能力开源实现咨询 #738

Closed wangzhe0912 closed 2 months ago

wangzhe0912 commented 4 months ago

Qwen2-72B-Instruct 开源版本有对标 DASHSCOPE 中 Qwen2-72B-Instruct 的 FunctionCall 的实现吗? 我参考 Qwen-Agent 中的 FunctionCall 适配调用 Ollama 部署的 Qwen2-72B-Instruct 模型,发现在复杂场景的 Agent 中(大约5-10轮工具调用的场景)效果和 DASHSCOPE 提供的支持 FunctionCall 的 API 差距很明显,这块有什么标准的 FunctionCall 实现方案可供参考吗?或者通过哪些平台部署开源模型可以得到与 DASHSCOPE 中 API 一致的效果吗? 我们是一个私有化场景,正式场景中需要私有化部署,不能直接调用 DASHSCOPE API。

MikeJackOne commented 4 months ago

ollama部署的是量化过的版本,你得使用未量化的版本来推理

MikeJackOne commented 4 months ago

你是啥使用场景?介绍一下

JianxinMa commented 4 months ago

Qwen2-72B-Instruct 开源版本有对标 DASHSCOPE 中 Qwen2-72B-Instruct 的 FunctionCall 的实现吗? 我参考 Qwen-Agent 中的 FunctionCall 适配调用 Ollama 部署的 Qwen2-72B-Instruct 模型,发现在复杂场景的 Agent 中(大约5-10轮工具调用的场景)效果和 DASHSCOPE 提供的支持 FunctionCall 的 API 差距很明显,这块有什么标准的 FunctionCall 实现方案可供参考吗?或者通过哪些平台部署开源模型可以得到与 DASHSCOPE 中 API 一致的效果吗? 我们是一个私有化场景,正式场景中需要私有化部署,不能直接调用 DASHSCOPE API。

dashscope的function call、qwen-agnet的function call都是我实现的,按道理不该有太大差距。

ollama的模型有量化,可能有一定损失。

另外,dahsscope针对多轮做了些trade off,需要的话我在qwen-agnet完善下也可以。。但我现在比较缺多轮的评测集来反映这方面的情况,欢迎社区提供多轮的badcases

JianxinMa commented 4 months ago

qwen-agent大约5-10轮工具调用的场景下, function call表现差,请问具体是体现在哪方面:(1)输出的function call不合法,经常出现格式错误呢;(2)还是function选择错误、参数错误;(3)还是不调用工具了;(4)或者过于高频调用工具?

wangzhe0912 commented 4 months ago

qwen-agent大约5-10轮工具调用的场景下, function call表现差,请问具体是体现在哪方面:(1)输出的function call不合法,经常出现格式错误呢;(2)还是function选择错误、参数错误;(3)还是不调用工具了;(4)或者过于高频调用工具?

几个比较典型的问题(按照必现频率排序): 1. FunctionCall JSON 格式异常,2. Function Call 时开始随机幻想,调用工具时,工具参数或者名称开始随机错误,3. 不主动调用工具,而是仅仅通过语义描述操作步骤。

wangzhe0912 commented 4 months ago

你是啥使用场景?介绍一下

我们的场景是用于业务自动化用例的生成和修复场景,例如,我们会提供一些文件(函数)的修改&查询工具、测试用例执行工具、部分Shell操作工具,当自动化用例(例如pytest)生成后执行失败等场景下,向测试工程师一样自动分析&调试&修复问题。

wangzhe0912 commented 4 months ago

另外,dahsscope针对多轮做了些trade off,需要的话我在qwen-agnet完善下也可以。。但我现在比较缺多轮的评测集来反映这方面的情况,欢迎社区提供多轮的badcases

Cool,这块我这儿可以提供一些多轮的 BadCase~看一下怎么提供比较好?

AHGGG commented 3 months ago

Qwen2-72B-Instruct 开源版本有对标 DASHSCOPE 中 Qwen2-72B-Instruct 的 FunctionCall 的实现吗? 我参考 Qwen-Agent 中的 FunctionCall 适配调用 Ollama 部署的 Qwen2-72B-Instruct 模型,发现在复杂场景的 Agent 中(大约5-10轮工具调用的场景)效果和 DASHSCOPE 提供的支持 FunctionCall 的 API 差距很明显,这块有什么标准的 FunctionCall 实现方案可供参考吗?或者通过哪些平台部署开源模型可以得到与 DASHSCOPE 中 API 一致的效果吗? 我们是一个私有化场景,正式场景中需要私有化部署,不能直接调用 DASHSCOPE API。

dashscope的function call、qwen-agnet的function call都是我实现的,按道理不该有太大差距。

ollama的模型有量化,可能有一定损失。

另外,dahsscope针对多轮做了些trade off,需要的话我在qwen-agnet完善下也可以。。但我现在比较缺多轮的评测集来反映这方面的情况,欢迎社区提供多轮的badcases

我看qwen-agent的function call能力是重写了用户的system_prompt来实现的,请问下设计的时候是有什么考虑吗?为什么不把tools传到接口的tools参数中呢?

github-actions[bot] commented 2 months ago

This issue has been automatically marked as inactive due to lack of recent activity. Should you believe it remains unresolved and warrants attention, kindly leave a comment on this thread.

hrz394943230 commented 1 month ago

您好,请问你用的是 dashscope generation.call 方法进行的工具调用吗?在官方文档里没有看到这种方式的工具参数的说明,在哪里有详细的文档吗?还是说用的 openAI 兼容的方式传入的工具?

JianxinMa commented 1 month ago

您好,请问你用的是 dashscope generation.call 方法进行的工具调用吗?在官方文档里没有看到这种方式的工具参数的说明,在哪里有详细的文档吗?还是说用的 openAI 兼容的方式传入的工具?

dashscope接口可以用openai兼容方式传入。