도구 호출 병목 현상 해결: 대규모 언어 모델이 방대한 양의 도구를 효율적으로 활용할 수 있도록 지원하는 CoTools 프레임워크

AI 기술 자료4개월 전 업데이트 AI 공유 서클
1.2K 00

소개

최근 몇 년 동안 대규모 언어 모델(LLM)은 인공 지능 분야에서 인상적인 발전을 이루었으며, 강력한 언어 이해 및 생성 기능으로 인해 여러 분야에서 폭넓게 활용되고 있습니다. 그러나 LLM은 외부 도구를 호출해야 하는 복잡한 작업을 처리할 때 여전히 많은 어려움에 직면해 있습니다. 예를 들어 사용자가 "내일 목적지의 날씨가 어때요?"라고 묻는 경우를 생각해 보겠습니다. LLM은 정확한 정보를 얻기 위해 날씨 API를 호출할 수 있어야 합니다.

이러한 문제를 해결하기 위해 연구자들은 LLM이 외부 도구를 보다 효과적으로 활용할 수 있도록 다양한 도구 학습 방법을 제안해 왔습니다. 하지만 기존 방법에는 다음과 같은 한계가 있습니다:

  • 미세 조정 기반 접근 방식학습 데이터에 표시된 도구만 사용할 수 있도록 모델을 미세 조정해야 합니다. 이 접근 방식은 도구 호출의 정확성을 향상시키지만, 보이지 않는 도구에 대한 모델의 일반화 능력을 제한할 수 있습니다.
  • 컨텍스트 기반 학습(ICL) 접근 방식모델을 미세 조정할 필요가 없으며 프롬프트에 도구 데모를 추가하여 도구를 호출할 수 있습니다. 그러나 이 접근 방식의 추론 효율성은 많은 수의 도구에 직면했을 때 크게 떨어집니다.

CoTools: 도구 학습을 위한 보다 효율적인 프레임워크

이러한 문제를 극복하기 위해 수초우 대학교 연구팀은 다음과 같은 새로운 기술을 개발했습니다. CoTools 의 새로운 도구 학습 프레임워크입니다. 이 프레임워크의 주요 목표는 모델을 일반화하는 기능을 희생하지 않으면서도 보이지 않는 수많은 도구를 효율적으로 호출하는 것입니다.

CoTools 작동 방식

CoTools의 핵심 아이디어는 프로즌 언어 모델의 강력한 의미 표현 기능을 활용하여 추론 과정에서 도구를 호출할 필요가 있는지 여부를 동적으로 판단하고 가장 적합한 도구를 선택하는 것입니다. 주요 프로세스는 다음과 같습니다:

  1. 도구 판단::
    • 가져오기사용자의 질문과 모델에 의해 생성된 현재 답변 스니펫입니다.
    • 이벤트 진행 과정CoTools는 현재 답변 조각의 의미 정보를 분석하여 정보를 보완하기 위해 툴에 대한 호출이 필요한지 여부를 결정합니다. 예를 들어 사용자가 날씨에 대해 질문하면 모델은 날씨 API에 대한 호출이 필요하다는 것을 인식합니다.
    • 수출도구 호출을 트리거할지 여부를 결정하는 판단 결과입니다.
  2. 도구 검색::
    • 가져오기사용자 질문 및 판단 결과.
    • 이벤트 진행 과정도구가 호출되어야 하는 경우 CoTools는 문제 설명을 기반으로 도구 풀에서 가장 적합한 도구를 검색합니다. 도구 풀에는 보이지 않는 많은 도구가 포함될 수 있으며, CoTools는 도구의 설명 정보를 분석하여 문제와의 관련성을 평가합니다.
    • 수출선택한 도구.
  3. 도구 호출::
    • 가져오기선택한 도구 및 사용자에 대한 문제.
    • 이벤트 진행 과정CoTools는 문맥 학습 프롬프트를 사용하여 도구의 매개 변수를 생성하고 도구를 실행하여 결과를 얻습니다.
    • 수출도구에서 반환된 결과가 답변에 추가됩니다.

    突破工具调用瓶颈:CoTools 框架助力大型语言模型高效利用海量工具
    그림 1: CoTools 방법의 순서도.

CoTools의 이점

  • 보이지 않는 도구의 효율적인 사용CoTools는 도구의 사전 학습에 의존하지 않고 설명을 분석하여 도구를 동적으로 선택합니다. 따라서 보이지 않는 수많은 도구를 유연하게 호출할 수 있습니다.
  • 모델의 원래 기능 유지언어 모델이 고정되어 있기 때문에 CoTools는 모델의 일반화 및 추론 능력에 영향을 미치지 않습니다.
  • 모델 해석 가능성 향상모델 결과의 주요 차원을 분석함으로써 CoTools는 연구자가 도구 선택 과정을 더 잘 이해할 수 있도록 도와줍니다.

결과

CoTools의 효과를 검증하기 위해 연구팀은 다음과 같은 몇 가지 실험을 진행했습니다:

  • 숫자 추론 과제GSM8K-XL 및 FuncQA 데이터 세트를 사용하는 CoTools는 싱글 홉 및 멀티 홉 문제 모두에서 우수한 성능을 발휘합니다.
  • 퀴즈 작업CoTools는 KAMEL 및 SimpleToolQuestions(STQuestions) 데이터 세트를 사용하여 수많은 도구 시나리오에서 우수한 성능을 발휘하며 보이지 않는 도구에 대한 일반화도 잘 보여줍니다.

아래는 KAMEL 및 STQuestions 데이터 세트에서 다른 방법과 비교한 CoTools의 결과입니다:

방법론카멜 수프카멜 신본 ST질문보이지 않는 질문
ToolkenGPT LLaMA93.420.623.80.0
CoTools (당사) LLaMA93.843.635.110.4

평결에 도달하기

CoTools는 모델 일반화 기능의 저하 없이 보이지 않는 수많은 도구를 효율적으로 호출할 수 있는 보다 효율적이고 유연한 도구 학습 프레임워크를 제공합니다. 이 접근 방식은 보다 복잡한 실제 시나리오에서 대규모 언어 모델을 적용할 수 있는 새로운 가능성을 열어줍니다.

향후 전망

CoTools의 고무적인 결과에도 불구하고 연구진은 LLM 도구 학습에 대한 현재 연구가 아직 초기 단계에 머물러 있다고 지적했습니다. 앞으로 CoTools 팀은 더 많은 연구를 진행할 계획입니다:

  • 여러 반환값이 포함된 도구를 처리하는 방법을 알아보세요.
  • 더 크고 복잡한 실제 도구 세트에서 CoTools의 성능을 테스트해 보세요.

프롬프트 예제

CoTools의 핵심 아이디어는 프로즌 언어 모델의 강력한 의미 이해를 활용하여 추론 과정에서 도구를 호출해야 하는지 여부를 동적으로 판단하고 작업을 수행하는 데 가장 적합한 도구를 선택하는 것입니다. 다음은 CoTools의 워크플로우를 자세히 소개하고 각 단계의 입력과 출력을 더 잘 이해할 수 있도록 자세한 프롬프트 예제를 제공합니다.

#### 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 通过精细化的流程设计和强大的语义理解能力,实现了在复杂任务中对外部工具的高效调用。该框架不仅能够处理常见工具,还能灵活应对未见过的工具,为大型语言模型在现实场景中的应用提供了新的可能性。

이러한 프롬프트를 통해 CoTools는 사용자의 질문과 현재 답변 스니펫을 기반으로 도구를 호출해야 하는지 여부를 동적으로 판단하고 필요한 정보를 얻기 위해 가장 적합한 도구를 선택할 수 있습니다.

 

원본: https://arxiv.org/pdf/2503.16779

© 저작권 정책
AiPPT

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...