introdutório
Nos últimos anos, os modelos de linguagem grande (LLMs) fizeram um progresso impressionante no campo da inteligência artificial, e seus poderosos recursos de compreensão e geração de linguagem levaram a uma ampla gama de aplicações em vários domínios. No entanto, os LLMs ainda enfrentam muitos desafios ao lidar com tarefas complexas que exigem a invocação de ferramentas externas. Por exemplo, quando um usuário pergunta "Qual é o clima no meu destino amanhã?" Os LLMs precisam ser capazes de chamar a API de clima para obter informações precisas.
Para resolver esse problema, os pesquisadores propuseram uma variedade de métodos de aprendizagem de ferramentas com o objetivo de permitir que os LLMs utilizem ferramentas externas de forma mais eficaz. No entanto, os métodos existentes geralmente apresentam as seguintes limitações:
- Abordagem baseada em ajuste finoO modelo precisa ser ajustado de modo que só possa usar ferramentas que tenham sido vistas nos dados de treinamento. Essa abordagem, embora melhore a precisão das chamadas de ferramentas, pode limitar a capacidade do modelo de generalizar para ferramentas não vistas.
- Abordagem de aprendizagem baseada em contexto (ICL)Não há necessidade de ajustar o modelo e as ferramentas podem ser invocadas adicionando uma demonstração da ferramenta ao prompt. Entretanto, a eficiência do raciocínio dessa abordagem diminui significativamente quando confrontada com um grande número de ferramentas.
CoTools: uma estrutura mais eficiente para o aprendizado de ferramentas
Para superar esses desafios, uma equipe de pesquisadores da Universidade de Soochow desenvolveu uma nova tecnologia chamada CoTools de uma nova estrutura de aprendizado de ferramentas. O principal objetivo da estrutura é obter a invocação eficiente de um grande número de ferramentas não vistas sem sacrificar a capacidade de generalizar o modelo.
Como o CoTools funciona
A ideia central do CoTools é usar o poderoso recurso de representação semântica do modelo de linguagem congelada para determinar dinamicamente se é necessário invocar uma ferramenta durante o processo de raciocínio e selecionar a ferramenta mais adequada. Seu processo principal é o seguinte:
- avaliação de ferramentas::
- importaçãoPergunta: A pergunta do usuário e o trecho de resposta atual gerado pelo modelo.
- curso dos acontecimentosO CoTools analisa as informações semânticas do fragmento da resposta atual e determina se é necessária uma chamada para a ferramenta para complementar as informações. Por exemplo, quando um usuário pergunta sobre o clima, o modelo reconhece que é necessária uma chamada para a API do clima.
- exportaçõesResultado de uma avaliação que determina se deve ser acionada uma chamada de ferramenta.
- pesquisa de ferramentas::
- importaçãoPerguntas dos usuários e resultados dos julgamentos.
- curso dos acontecimentosSe for necessário chamar uma ferramenta, o CoTools recupera a ferramenta mais adequada do conjunto de ferramentas com base na descrição do problema. O conjunto de ferramentas pode conter um grande número de ferramentas não vistas, e o CoTools avalia sua relevância para o problema analisando as informações de descrição da ferramenta.
- exportaçõesFerramentas selecionadas.
- Chamada de ferramenta::
- importaçãoProblemas para ferramentas e usuários selecionados.
- curso dos acontecimentosCoTools: usa prompts de aprendizado contextual para gerar os parâmetros da ferramenta, executar a ferramenta e obter os resultados.
- exportaçõesResposta: Os resultados retornados pela ferramenta são adicionados à resposta.
Figura 1: Fluxograma do método CoTools.
A vantagem do CoTools
- Uso eficiente de ferramentas invisíveisO CoTools não depende de pré-treinamento de ferramentas, mas seleciona dinamicamente as ferramentas analisando suas descrições. Isso lhe dá a flexibilidade de invocar um grande número de ferramentas não vistas.
- Manutenção dos recursos originais do modeloComo o modelo de linguagem está congelado, o CoTools não afeta a capacidade de generalização e raciocínio do modelo.
- Aprimoramento da capacidade de interpretação do modeloAnálise das principais dimensões do resultado do modelo: Ao analisar as principais dimensões do resultado do modelo, o CoTools pode ajudar os pesquisadores a entender melhor o processo de seleção de ferramentas.
Resultados
Para verificar a eficácia do CoTools, a equipe de pesquisa realizou vários experimentos, incluindo:
- tarefa de raciocínio numérico: Usando os conjuntos de dados GSM8K-XL e FuncQA, o CoTools tem um bom desempenho em problemas de salto único e de vários saltos.
- tarefas de questionamentoO CoTools apresenta bom desempenho em um grande número de cenários de ferramentas e mostra boa generalização para ferramentas não vistas.
Veja a seguir os resultados do CoTools em comparação com outros métodos nos conjuntos de dados KAMEL e STQuestions:
metodologias | KAMEL SUP | KAMEL SYN | STQuestions Seen | STQuestions Unseen |
---|---|---|---|---|
FerramentaGPT LLaMA | 93.4 | 20.6 | 23.8 | 0.0 |
CoTools (nossas) LLaMA | 93.8 | 43.6 | 35.1 | 10.4 |
chegar a um veredicto
O CoTools oferece uma estrutura de aprendizado de ferramentas mais eficiente e flexível que permite a invocação eficiente de um grande número de ferramentas não vistas sem sacrificar os recursos de generalização do modelo. A abordagem abre novas possibilidades para a aplicação de grandes modelos de linguagem em cenários mais complexos do mundo real.
perspectivas futuras
Apesar dos resultados animadores do CoTools, os pesquisadores também observaram que a pesquisa atual sobre o aprendizado de ferramentas de LLM ainda está em seus estágios iniciais. No futuro, a equipe do CoTools planeja:
- Descubra como lidar com ferramentas que contêm vários valores de retorno.
- Testar o desempenho do CoTools em conjuntos de ferramentas maiores e mais complexos do mundo real.
Exemplo de prompt
A ideia central do CoTools é aproveitar a poderosa compreensão semântica do modelo de linguagem congelada para determinar dinamicamente se uma ferramenta precisa ser chamada durante o processo de raciocínio e selecionar a ferramenta mais adequada para executar a tarefa. A seguir, apresentamos detalhadamente o fluxo de trabalho do CoTools e fornecemos exemplos detalhados do Prompt para ajudar os leitores a entender melhor as entradas e saídas de cada etapa.
#### 1. 初始输入与预处理
- **输入**:
- **用户问题**:例如,“明天我目的地的天气如何?”
- **上下文信息**(如果有):例如,之前对话的上下文或用户的位置信息。
- **处理**:
- **问题解析**:将用户问题进行预处理,包括分词、去除停用词等。
- **上下文整合**:将上下文信息与用户问题整合,形成完整的输入序列。
- **输出**:
- **预处理后的输入序列**:例如,“[CLS] 明天 我 目的地 的 天气 如何? [SEP] 北京”
#### 2. 工具判断
- **输入**:
- **预处理后的输入序列**。
- **处理**:
- **语义分析**:CoTools 使用冻结语言模型生成输入序列的隐藏状态,并利用工具判断器(Tool Judge)分析这些隐藏状态,以确定是否需要调用工具。
- **工具判断器**:
- **计算公式**(简化版):
```
Score_I = 工具判断器(隐藏状态)
```
- **决策逻辑**:
- 如果 $Score_I$ 超过预设阈值(通常为 0.5),则触发工具调用。
- 否则,继续生成答案文本。
- **输出**:
- **判断结果**:
- **调用工具**:例如,“需要调用天气 API”。
- **无需调用工具**:继续生成答案。
#### 3. 工具检索
- **输入**:
- **判断结果**:例如,“需要调用天气 API”。
- **用户问题**:例如,“明天我目的地的天气如何?”
- **处理**:
- **工具池检索**:CoTools 使用工具检索器(Tool Retriever)从工具池中检索最合适的工具。
- **工具检索器**:
- **查询向量计算**:将用户问题转换为向量表示。
- **工具向量计算**:将工具池中的每个工具描述转换为向量表示。
- **相似度计算**:计算查询向量与每个工具向量的相似度得分,得分最高的工具即为最合适的工具。
- **工具池示例**:
```
1. 天气 API:提供指定地点的天气信息。
2. 地图 API:提供指定地点的地图信息。
3. 翻译工具:提供文本翻译服务。
```
- **输出**:
- **选定的工具**:例如,“天气 API”。
#### 4. 工具调用
- **输入**:
- **选定的工具**:例如,“天气 API”。
- **用户问题**:例如,“明天我目的地的天气如何?”
- **处理**:
- **参数生成**:使用上下文学习提示(ICL Prompt)生成工具调用所需的参数。
- **示例提示**:
```
[用户问题]
[当前答案片段(如果有)]
请调用以下工具并生成调用参数:
工具名称:天气 API
工具描述:提供指定地点的天气信息。
```
- **工具执行**:将生成的参数传递给工具,执行工具并获取返回结果。
- **输出**:
- **工具返回结果**:例如,“北京的天气情况:晴天,气温 25°C”。
#### 5. 答案生成
- **输入**:
- **工具返回结果**:例如,“北京的天气情况:晴天,气温 25°C”。
- **用户问题**:例如,“明天我目的地的天气如何?”
- **处理**:
- **答案整合**:将工具返回结果整合到答案中,生成最终回答。
- **输出**:
- **最终回答**:
```
明天北京的天气情况是晴天,气温 25°C。
```
### 详细的 Prompt 示例
以下是一个更详细的 Prompt 示例,展示了 CoTools 在每个流程节点的具体操作:
用户问题:明天我目的地的天气如何?
初始输入序列:
[CLS] 明天 我 目的地 的 天气 如何? [SEP] 北京
工具判断:
输入:预处理后的输入序列
处理:
语义分析:生成隐藏状态并计算 Score_I
决策:Score_I > 0.5,触发工具调用
输出:需要调用天气 API
工具检索:
输入:用户问题和判断结果
处理:
查询向量计算:生成用户问题的向量表示
工具向量计算:生成工具池中每个工具的向量表示
相似度计算:计算相似度得分
输出:选定天气 API
工具调用:
输入:选定的工具和用户问题
处理:
参数生成:
[用户问题]
[当前答案片段(如果有)]
请调用以下工具并生成调用参数:
工具名称:天气 API
工具描述:提供指定地点的天气信息。
工具执行:调用天气 API 并获取返回结果
输出:北京的天气情况:晴天,气温 25°C
答案生成:
输入:工具返回结果和用户问题
处理:整合结果生成最终回答
输出:明天北京的天气情况是晴天,气温 25°C。
### 总结
CoTools 通过精细化的流程设计和强大的语义理解能力,实现了在复杂任务中对外部工具的高效调用。该框架不仅能够处理常见工具,还能灵活应对未见过的工具,为大型语言模型在现实场景中的应用提供了新的可能性。
Com esses prompts, o CoTools pode determinar dinamicamente se uma ferramenta precisa ser chamada com base na pergunta do usuário e no snippet de resposta atual, e selecionar a ferramenta mais adequada para obter as informações necessárias.
Original: https://arxiv.org/pdf/2503.16779