首页 > 其他分享 >简单剖析qwen-agent回答是怎么获取tool的

简单剖析qwen-agent回答是怎么获取tool的

时间:2024-07-15 17:43:07浏览次数:12  
标签:name tool agent qwen 模型 multiples

openai是一家伟大的公司(虽然是closedai),当他们提出agent的概念后,就很神奇。之前通过langchain的langgraph进行写demo,就很好奇,他是怎么基于我的话自动去识别这句话是大模型的闲聊,那句话是大模型去调用tool

1.现象

1.和大模型打招呼,大模型知道回答,这没啥稀奇

2.可是当问它某个地方的天气怎样后,它内部知道去调用工具就很神奇

2.简单分析

通过langchain的简单分析,是当交流天气时候,

大模型输出工具的名字name,以及对应的工具入参args。
然后本地的tool函数进行对应的函数调用,
然后结果再塞给大模型进行润色。

AIMessage(content=[{'id': 'toolu_01Y5EK4bw2LqsQXeaUv8iueF', 'input': {'query': 'weather in san francisco'}, 'name': 'tavily_search_results_json', 'type': 'tool_use'}], response_metadata={'id': 'msg_0132wQUcEduJ8UKVVVqwJzM4', 'model': 'claude-3-sonnet-20240229', 'stop_reason': 'tool_use', 'stop_sequence': None, 'usage': {'input_tokens': 269, 'output_tokens': 61}}, id='run-26d5e5e8-d4fd-46d2-a197-87b95b10e823-0', tool_calls=[{'name': 'tavily_search_results_json', 'args': {'query': 'weather in san francisco'}, 'id': 'toolu_01Y5EK4bw2LqsQXeaUv8iueF'}], usage_metadata={'input_tokens': 269, 'output_tokens': 61, 'total_tokens': 330}),

也就是大模型当遇到需要调用工具的时候,就输出对应的工具名称和入参。
但是问题是,这是怎么回事?

3.基于qwen-agent进行剖析

要想支持tool_call,首先是有个训练集的,输入是一些问题,输出是一个json,如这里 https://hf-mirror.com/datasets/Salesforce/xlam-function-calling-60k

{
  "query": "Find the sum of all the multiples of 3 and 5 between 1 and 1000. Also find the product of the first five prime numbers.",
  "tools": [
    {
      "name": "math_toolkit.sum_of_multiples",
      "description": "Find the sum of all multiples of specified numbers within a specified range.",
      "parameters": {
        "lower_limit": {
          "type": "int",
          "description": "The start of the range (inclusive).",
          "required": true
        },
        "upper_limit": {
          "type": "int",
          "description": "The end of the range (inclusive).",
          "required": true
        },
        "multiples": {
          "type": "list",
          "description": "The numbers to find multiples of.",
          "required": true
        }
      }
    },
    {
      "name": "math_toolkit.product_of_primes",
      "description": "Find the product of the first n prime numbers.",
      "parameters": {
        "count": {
          "type": "int",
          "description": "The number of prime numbers to multiply together.",
          "required": true
        }
      }
    }
  ],
  "answers": [
    {
      "name": "math_toolkit.sum_of_multiples",
      "arguments": {
        "lower_limit": 1,
        "upper_limit": 1000,
        "multiples": [3, 5]
      }
    },
    {
      "name": "math_toolkit.product_of_primes",
      "arguments": {
        "count": 5
      }
    }
  ]
}

所以大模型就会生成一个完整的json,那qwen-agent是怎么回事呢如下面的截图,
miniconda3/lib/python3.10/site-packages/qwen_agent/llm/function_calling.py
下面的图片意思是:qwen是需要qwen-agent在调用qwen的时候,输入一些补充的prompt

下面图片的意思是,补充的prompt是补充在system_prompt的最后面

下面图片的意思是,qwen大模型的输出会有前面的输出文字,中间的toolcall部分,和后面的一些文字,为了保险,就需要处理下,把前后的文字弄掉,只输出中间的tool call部分

4.openai-client的包

在openai-client中找了下没qwen-agent这样的prompt的处理和输出的llm的处理,这个人有2种猜测
1)这些操作被隐藏在服务端了,但是觉得概率不大
2)还是大模型训练的好,通过function call的那些数据集进行大模型的训练,使得大模型能直接输出一个完整的json,openai-client就直接进行解析就行了。

标签:name,tool,agent,qwen,模型,multiples
From: https://www.cnblogs.com/shouhuxianjian/p/18303530

相关文章

  • GPT-4从0到1搭建一个Agent简介
    GPT-4从0到1搭建一个Agent简介1.引言在人工智能领域,Agent是一种能够感知环境并采取行动以实现特定目标的系统。本文将简单介绍如何基于GPT-4搭建一个Agent。2.Agent的基本原理Agent的核心是感知-行动循环(Perception-ActionLoop),该循环可以描述如下:感知:Agent通过传感......
  • Tool-Cross-compilation-Toolchain-ARM-Linaro
    Tool-Cross-compilation-Toolchain-ARM-LinaroUbuntu上基于Arm的交叉编译工具链。引用:arm生态发展与交叉编译链选择-知乎arm-none-linux-gnueabi-gcc:是Codesourcery公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM(32位)系统中所有环节的代码,包......
  • BlobTool
    BlobTool------内容引用自Cognex帮助文档你可以使用Blob工具来检查图像中的一个区域,并定位由灰度值范围有限且形状通常不可预测的像素组成的特征。检测和分析这些特征(或称为blob)的过程称为blob分析。通过blob分析,你可以获取关于图像中特定特征的存在、数量、位置、形状......
  • Tool-Docker-Ubuntu18.04
    Tool-Docker-Ubuntu18.04在Ubuntu18.04的操作系统上安装Docker,并实现镜像导入与容器运行。DockerHomeDockerDownload由于docker官网访问异常,借用阿里云开源镜像站下载安装包。DockerCE镜像docker-ce镜像下载页安装项:containerd.io_1.5.10-1_amd64.debdocker-ce......
  • Win11系统提示找不到learning_tools.dll文件的解决办法
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个learning_tools.dll文件(挑选合适的版本文件......
  • 【小白向】在conda-forge中下载cudatoolkit和cudnn报错
    由于直接condasearch没有想要的cudatoolkit版本(当前windows对应的tensorflow-gpu只能<2.11),所以换成conda-forge进行搜索,condainstallcudatoolkit==11.2.0后报错:ERRORconda.core.link:_execute(950):Anerroroccurredwhileinstallingpackage'conda-forge::cudatoolki......
  • 转:functools.partial函数
    Pythonfunctools.partial函数详解与实战_pythonfuctiontoolpartial-CSDN博客functools.partial:Python中灵活函数部分应用的工具_functools.partial()-CSDN博客在Python编程中,functools.partial是一个极具实用价值的函数,它允许我们“冻结”函数的一些参数或关键字,从而生成一个......
  • 使用 lmdeploy 部署 Qwen/Qwen2-7B-Instruct
    使用lmdeploy部署internlm/internlm2_5-7b-chat0.引言1.lmdeploy性能2.lmdeploy支持的模型3.快速开始0.引言LMDeploy由MMDeploy和MMRazor团队联合开发,是涵盖了LLM任务的全套轻量化、部署和服务解决方案。这个强大的工具箱提供以下核心功能:高效的......
  • ToolChain工具链命令介绍
    1ToolChain官方下载地址下载地址:https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/2readelf2.1elf格式elf是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格文件的文件格式。是UNIX系统实验室(USL)作为应用程序......
  • AI Agent 的发展现状、行业结构与趋势分析
        Agent 来自一种哲学概念,是个很古老的哲学术语,从哲学意义上讲,“代理”的概念涉及实体的自主性,具有行使意志、做出选择和采取行动的能力,而不是被动地对外部刺激做出反应。后来人们将这一概念引入计算机科学领域,用 Agent 概念指代整个人工智能,认为人工智能是“基于......