QwenLM / Qwen-Agent

Agent framework and applications built upon Qwen>=2.0, featuring Function Calling, Code Interpreter, RAG, and Chrome extension.
https://pypi.org/project/qwen-agent/
Other
3.21k stars 312 forks source link

关于QWen模型是否支持一次性返回多个function_call的功能 #167

Open hjhmuser opened 4 months ago

hjhmuser commented 4 months ago

目前想将agent理念融入到LLM系统中,模型选的是QWen1.5,通过构建一个挂载了多个内部接口函数的agent与QWen进行交互,使其能够根据输入的query自适应地选择调用agent提供的functions,并给出入参详情。 但是目前我发现QWen只能一次性返回一个需要调用的函数,然而在我的使用场景中,希望QWen能够自适应的返回多个函数调用,并封装到一个数组中,所以想真心请教QWen模型目前是否有一次性返回多个函数调用的能力?

JianxinMa commented 4 months ago

在开发中了,当前开源的模型没训过这种用法,但是用合适的prompt能实现。

另外,好奇问下什么场景是必须“一次性返回多个函数的”?

hjhmuser commented 4 months ago

你好,我非常开心也非常感谢你们已经在做多函数并行调用这个方向的训练和开发了,至于为什么想要这个功能,主要是希望能够在开发工作中,借用大模型达到一键发布,一键生成的目的,从而缩短工作流程,让用户无感知的拿到最终结果,并且这种方式可以大大降低prompt的设计工作量,只需要将函数执行结果依次在内部添加到对话历史中即可 你比如一下的场景,多函数并行返回就很有用:

  1. 复杂查询和数据处理: • 用户请求涉及复杂的查询逻辑,需要调用多个函数来分步执行。例如,用户询问某个产品的详细信息以及其历史价格变化,模型需要分别调用获取产品信息和获取价格历史的函数。
  2. 多步骤计算: • 需要先进行初步计算,再进行进一步的处理和分析。例如,用户要求计算某项投资的预期回报率,模型可能需要先获取投资的基本信息,然后进行计算,再返回结果。

最后由衷期待新功能的上线,感谢你们对开源社区做出的贡献

ye7love7 commented 4 months ago

多工具调用,生成json_schema不同就行了吧,将结果写到一个json里,并指定依赖关系,可以参照langgraph等agent框架的提示词

---原始邮件--- 发件人: @.> 发送时间: 2024年5月27日(周一) 晚上11:47 收件人: @.>; 抄送: @.***>; 主题: Re: [QwenLM/Qwen-Agent] 关于QWen模型是否支持一次性返回多个function_call的功能 (Issue #167)

你好,我非常开心也非常感谢你们已经在做多函数并行调用这个方向的训练和开发了,至于为什么想要这个功能,主要是希望能够在开发工作中,借用大模型达到一键发布,一键生成的目的,从而缩短工作流程,让用户无感知的拿到最终结果,并且这种方式可以大大降低prompt的设计工作量,只需要将函数执行结果依次在内部添加到对话历史中即可 你比如一下的场景,多函数并行返回就很有用:

  1. 复杂查询和数据处理: • 用户请求涉及复杂的查询逻辑,需要调用多个函数来分步执行。例如,用户询问某个产品的详细信息以及其历史价格变化,模型需要分别调用获取产品信息和获取价格历史的函数。
  2. 多步骤计算: • 需要先进行初步计算,再进行进一步的处理和分析。例如,用户要求计算某项投资的预期回报率,模型可能需要先获取投资的基本信息,然后进行计算,再返回结果。

最后由衷期待新功能的上线,感谢你们对开源社区做出的贡献

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

JianxinMa commented 4 months ago

你好,我非常开心也非常感谢你们已经在做多函数并行调用这个方向的训练和开发了,至于为什么想要这个功能,主要是希望能够在开发工作中,借用大模型达到一键发布,一键生成的目的,从而缩短工作流程,让用户无感知的拿到最终结果,并且这种方式可以大大降低prompt的设计工作量,只需要将函数执行结果依次在内部添加到对话历史中即可 你比如一下的场景,多函数并行返回就很有用: 1. 复杂查询和数据处理: • 用户请求涉及复杂的查询逻辑,需要调用多个函数来分步执行。例如,用户询问某个产品的详细信息以及其历史价格变化,模型需要分别调用获取产品信息和获取价格历史的函数。 2. 多步骤计算: • 需要先进行初步计算,再进行进一步的处理和分析。例如,用户要求计算某项投资的预期回报率,模型可能需要先获取投资的基本信息,然后进行计算,再返回结果。

最后由衷期待新功能的上线,感谢你们对开源社区做出的贡献

例子 2 多步骤这个例子,看起来不适合“并行多工具调用”,而是“串行多工具调用”。目前串行多工具调用实际是支持的。 但例子1确实有并行会更方便些、

li-aolong commented 3 months ago

多工具调用,生成json_schema不同就行了吧,将结果写到一个json里,并指定依赖关系,可以参照langgraph等agent框架的提示词 ---原始邮件--- 发件人: @.> 发送时间: 2024年5月27日(周一) 晚上11:47 收件人: @.>; 抄送: @.>; 主题: Re: [QwenLM/Qwen-Agent] 关于QWen模型是否支持一次性返回多个function_call的功能 (Issue #167) 你好,我非常开心也非常感谢你们已经在做多函数并行调用这个方向的训练和开发了,至于为什么想要这个功能,主要是希望能够在开发工作中,借用大模型达到一键发布,一键生成的目的,从而缩短工作流程,让用户无感知的拿到最终结果,并且这种方式可以大大降低prompt的设计工作量,只需要将函数执行结果依次在内部添加到对话历史中即可 你比如一下的场景,多函数并行返回就很有用: 1. 复杂查询和数据处理: • 用户请求涉及复杂的查询逻辑,需要调用多个函数来分步执行。例如,用户询问某个产品的详细信息以及其历史价格变化,模型需要分别调用获取产品信息和获取价格历史的函数。 2. 多步骤计算: • 需要先进行初步计算,再进行进一步的处理和分析。例如,用户要求计算某项投资的预期回报率,模型可能需要先获取投资的基本信息,然后进行计算,再返回结果。 最后由衷期待新功能的上线,感谢你们对开源社区做出的贡献 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.>

@ye7love7 请问这个依赖关系是指什么呢,json key的前后生成顺序么,这个顺序可控么

JianxinMa commented 3 months ago

main分支新增实验功能:

注:qwen开源模型未针对此功能训练过,可能会存在不稳定的情况 —— 我只简单测试了qwen2-7b/72b-instruct、qwen-max在示例上的表现。后续会对效果进行进一步的优化,遇到问题可以提issues。

hjhmuser commented 3 months ago

main分支新增实验功能:

注:qwen开源模型未针对此功能训练过,可能会存在不稳定的情况 —— 我只简单测试了qwen2-7b/72b-instruct、qwen-max在示例上的表现。后续会对效果进行进一步的优化,遇到问题可以提issues。

非常感谢你们的工作!后续如果有使用问题我会再向你们反馈!

hjhmuser commented 2 months ago

main分支新增实验功能:

注:qwen开源模型未针对此功能训练过,可能会存在不稳定的情况 —— 我只简单测试了qwen2-7b/72b-instruct、qwen-max在示例上的表现。后续会对效果进行进一步的优化,遇到问题可以提issues。

目前我在qwen2 72B 模型上,尝试了多工具并行调用,效果很好!