赞
踩
我们在文章[[LLM-Agents] 提升LLM性能利器Agents workflow我们提到Agent的四种工作流:反思、工具使用、推理和多智能体协作。在此之前,我们已经在前面文章中阐述了反思设计思想。本篇我们将深入Agent工作流第二部分:工具使用。Andrew.Ng教授在文章将工具使用定义为LLM被赋予可以请求调用的函数,用于收集信息、采取行动或操纵数据,是一种Agent工作流的主要设计模式。
Tool Use, in which an LLM is given functions it can request to call for gathering information, taking action, or manipulating data, is a key design pattern of AI agentic workflows. – Andrew.Ng
我们知道单纯的依赖LLM预训练的知识是无法解决一些诸如数学计算、代码运行、实时的天气预报等问题的,常见的做法是当用户提出问题时,触发LLM生成特定格式的字符串,以请求调用相应的工具,LLM会决定执行网络搜索以获取相关信息,或者运行代码来执行特定计算。然后,系统会处理这些字符串,调用相应的功能,并将结果返回给LLM,以供进一步处理和回答用户的问题。或许你已经在前文Reflexion框架中初步了解如何在LLM流程中使用wikipedia这样的工具,在其他聊天工具比如Copliot中也有见过使用网络搜索的案例。 著名的LLM应用开发框架Langchain中甚至内置了几十种工具供开发者使用,比如ArXiv、Bing Search、Wikipedia、Youtube、Google、PubMed、Python REPL、HuggingFace和Yahoo Finance Data等。 开发者通过提供描述函数的详细说明和函数期望的参数信息来引导LLM去解析获取相关信息,然后自动选择调用正确的函数来完成任务。在多模态大模型未出来之前,有些研究者拓展了函数调用,使其能够调用图像识别模型或者生成模型进行处理图像,使得LLM不在局限于文本处理方面的工作。接下来,我们先了解一下OpenAI提供的Function Calling接口和响应是如何进行函数调用。
python 复制代码 curl https://api.openai.com/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -d '{ "model": "gpt-4-turbo", "messages": [ { "role": "user", "content": "What'''s the weather like in Boston today?" } ], "tools": [ { "type": "function", "function": { "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA" }, "unit": { "type": "string", "enum": ["celsius", "fahrenheit"] } }, "required": ["location"] } } } ], "tool_choice": "auto" }'
json 复制代码 { "id": "chatcmpl-abc123", "object": "chat.completion", "created": 1699896916, "model": "gpt-3.5-turbo-0125", "choices": [ { "index": 0, "message": { "role": "assistant", "content": null, "tool_calls": [ { "id": "call_abc123", "type": "function", "function": { "name": "get_current_weather", "arguments": "{\n"location": "Boston, MA"\n}" } } ] }, "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { "prompt_tokens": 82, "completion_tokens": 17, "total_tokens": 99 } }
python
复制代码
from langchain_core.tools import tool
@tool
def get_current_weather(location: str, unit: str = "celsius") -> int:
"""
Get the current weather in a given location.
"""
return 24
print(get_current_weather.name)
print(get_current_weather.description)
print(get_current_weather.args)
输出
bash
复制代码
get_current_weather
get_current_weather(location: str, unit: str = 'celsius') -> int - Get the current weather in a given location.
{'location': {'title': 'Location', 'type': 'string'}, 'unit': {'title': 'Unit', 'default': 'celsius', 'type': 'string'}}
结合OpenAI的函数调用API,我们知道一个函数调用需要提供函数名,函数说明,函数的参数名称、类型和说明,这样在LLM在响应的时候,就知道是否可以在tool里匹配上当前的提问,并解析到响应的参数。Langchain中通过装饰器tool将函数的名称、说明、参数的说明等自动提取,这样在构造函数调用请求的时候,就能从函数上获取到这些信息。
假设在构建的LLM系统中,需要访问数百个工具,这数百个函数的说明必然使得LLM Prompt爆炸,甚至超越LLM提供的上下文Token数量限制。有些研究者采用启发式的方法选择最相关的子集,然后再进一步的选择具体的函数。有几篇论文论述了如何支持数百个工具调用和进行多模态函数调用。
作者研究了LLM在工具调用方面需要使用数百万个不断变化的API的集合的问题,此时不可能再像上面一样把所有的函数说明升成Prompt提供给大模型,并且许多API将具有重叠的功能,以及些微的限制和约束,这会导致LLM幻觉问题产生,比如生成不存在模型,不存在函数接口。 我用chatgpt让他基于某个框架写功能代码的时候,我经常遇到他给我提供一些不存在的函数,出现幻觉了。 作者为了评估这种数百万API工具调用的问题,构建了一个APIBench数据集,包含 HuggingFace、TorchHub 和 TensorHub 的 API,并提出了一个微调的 LLaMA 模型,该模型在 API 调用编写任务上的性能超过了 GPT-4。 Gorilla整体流程如下图所示,主要是以下4个步骤。需要使用API文档文具来微调Llama-7B模型,负责专门处理API调用。
值得注意的是,Gorilla 具有很强的适应性,可以在零样本和检索模式下运行,使其能够适应 API 文档的变化并随着时间的推移保持准确性,可以减少LLM在处理工具调用时的幻觉问题。
CoA抽象链推理是用于解决在多步推理中的工具调用问题,不仅提高准确率,而且还支持并行调用加快推理速度。提出了一种新方法,训练 LLMs 首先生成带有抽象占位符的推理链,然后调用领域工具来实现每个推理链,通过填充特定知识来具体化推理流程。CoA 方法使 LLMs 能够学习更通用的推理策略,这些策略对领域知识的变动(如数学结果)具有鲁棒性。同时,它还允许 LLMs 并行执行解码和调用外部工具,避免了因等待工具响应而造成的推理延迟。它还允许LLM并行执行解码和调用外部工具,避免了等待工具响应而引起的推理延迟。在数学推理和 Wiki QA(问答)领域,CoA 方法在分布内和分布外测试集上均一致优于先前的链式思考(CoT)和工具增强(tool-augmented)基线,平均绝对 QA 准确率提高了约 6%。使用 CoA 方法训练的 LLM 代理还显示出更高效的工具使用,平均推理速度比基线工具增强 LLMs 快约 1.4 倍。
头图为例 具体的说
这是一个比较有意思的论文,提出了一个将 ChatGPT 与视觉专家模型结合的系统,以解决复杂的视觉理解任务。通过设计文本提示(prompt design),使得语言模型能够接受、关联和处理多模态信息,如图像和视频。展示了 MM-REACT 在不同场景下处理高级视觉理解任务的有效性,如多图像推理、多跳文档理解、视频摘要和事件定位等。讨论了 MM-REACT 与通过联合微调扩展语言模型到多模态场景的替代方法的比较,并探讨了 MM-REACT 的可扩展性。 具体的说,使用LangChain 代码库实现如下流程的MM-REACT,并使用 Azure Cognitive Services APIs 中的公共视觉专家模型。
本篇从处理海量API调用、多步推理中调用以及多模态中使用3个方面详细探讨了工具调用在LLM中深入应用。
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料
包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。