매일 아침, 어제의 AI를 한 통으로 정리해 보내드립니다메일로 받아보기

METAL LAB

Looped Language Models Improve Compositional Tool Calling

arXiv:2608.181712026-08-20

생각을 여러 번 되짚는 AI가 여러 개의 도구를 순서대로 엮어 쓰는 일도 더 잘한다

AI 모델이 답을 내기 전에 같은 계산 블록을 여러 번 반복 통과시키는 루프드 언어모델(looped language model)을 API-Bank, BFCL, NESTful이라는 세 가지 도구 호출 벤치마크로 테스트했다. 같은 데이터와 학습 방식으로 맞춰 비교한 결과, 여러 API를 순서대로 조합하거나 앞선 결과를 다음 호출의 입력으로 넘기는 복합적인 작업에서 반복 계산이 뚜렷한 성능 향상을 보였다. 매번 고정된 횟수만큼 반복하는 대신 필요한 만큼만 반복을 늘리는 적응형 추론 방식이 더 적은 연산으로 비슷하거나 더 나은 성능을 냈다.

무엇을 했나

  1. Ouro-1.4B, Ouro-2.6B 같은 원래부터 루프 구조인 모델과, Llama-3.2-1B·OLMo-2-1B를 개조해 루프 구조로 만든 모델 두 종류를 실험했다
  2. 같은 학습 데이터(Hermes function-calling dataset)와 동일한 학습 설정으로 루프 모델과 일반 모델을 나란히 비교했다
  3. 단순히 하나의 API만 부르는 작업에서는 루프 모델의 이득이 작고 모델마다 달랐지만, 여러 호출을 병렬로 묶거나 앞 결과를 다음 호출에 넘기는 작업에서는 이득이 훨씬 컸다
  4. 반복 횟수(recurrent depth)를 1~8회로 바꿔가며 테스트하니 복합 작업 성능이 대체로 반복이 늘수록 좋아지다가 일정 수준에서 멈췄다
  5. 토큰마다 필요한 만큼만 반복하는 적응형 추론이 고정 반복 방식보다 더 적은 계산으로 같은 수준의 성능을 냈고, 반복을 거듭할수록 틀렸던 함수 선택이나 빠뜨린 종속 호출이 점차 올바르게 고쳐지는 모습도 확인됐다
Figure 2: BFCL semantic AST accuracy by task category as fixed recurrent depth increases. Each curve reports accuracy on Simple, Multiple, Parallel, and Parallel-Multiple tasks.
Figure 2: BFCL semantic AST accuracy by task category as fixed recurrent depth increases. Each curve reports accuracy on Simple, Multiple, Parallel, and Parallel-Multiple tasks.
Figure 3: NESTful Win Rate as fixed recurrent depth increases. Native recurrent Ouro models benefit from additional recurrent computation, whereas the retrofitted recurrent Llama baseline remains substantially weaker.
Figure 3: NESTful Win Rate as fixed recurrent depth increases. Native recurrent Ouro models benefit from additional recurrent computation, whereas the retrofitted recurrent Llama baseline remains substantially weaker.
Table 1: BFCL semantic AST correctness (%; higher is better). Overall is the aggregate score across all task categories. The lower block compares looped and non-looped variants of each backbone, fine-tuned using identical data and optimization settings; looped variants use a fixed inference depth of 8 loop iterations. Base checkpoints omitted from the lower block score near zero throughout.
ModelTrainingSimpleMultipleParallelPar.-Mult.Overall
Ouro-1.4BBase65.367.035.044.555.4
SFT91.890.067.555.579.3
Ouro-2.6BBase80.575.52.01.047.9
SFT92.388.083.076.586.4
Qwen3-1.7BBase1.50.00.00.00.6
SFT67.057.03.09.540.7
Instruct91.891.583.581.087.9
Qwen3-4BBase72.057.51.00.540.6
SFT94.387.02.55.556.7
Instruct93.092.587.588.590.9
Qwen3-8BInstruct95.596.091.589.593.6
Llama-3.2-1BInstruct18.22.54.04.59.5
Llama-3.2-3BSFT88.286.069.060.578.4
Instruct33.837.00.00.020.9
Llama-3.1-8BInstruct46.541.00.00.026.8
OLMo-2-1BSFT59.250.014.512.539.1
Looped SFT55.058.026.514.541.8
Llama-3.2-1BSFT29.828.514.05.021.4
Looped SFT43.540.531.06.032.9
(b) Retrofitted recurrent Llama model.
(b) Retrofitted recurrent Llama model.
Figure 4: Adaptive recurrent computation on BFCL and NESTful. The x-axis reports the mean recurrent depth per generated token. Adaptive stopping improves the compute-performance frontier by allocating additional recurrent iterations only when beneficial. On BFCL, adaptive stopping matches or slightly exceeds the best fixed-depth operating point while executing fewer recurrent iterations on average. On NESTful, Ouro-2.6B reaches the same Win Rate as fixed depth 4 while using fewer recurrent iterations per generated token.
Figure 4: Adaptive recurrent computation on BFCL and NESTful. The x-axis reports the mean recurrent depth per generated token. Adaptive stopping improves the compute-performance frontier by allocating additional recurrent iterations only when beneficial. On BFCL, adaptive stopping matches or slightly exceeds the best fixed-depth operating point while executing fewer recurrent iterations on average. On NESTful, Ouro-2.6B reaches the same Win Rate as fixed depth 4 while using fewer recurrent iterations per generated token.
Table 2: NESTful official evaluation (higher is better). Win Rate is the primary metric.
ModelTrainingFunction F1Parameter F1PartialFullWin Rate
Ouro-1.4BBase0.9050.5390.1490.0910.110
SFT0.8990.5660.2190.1310.191
Ouro-2.6BBase0.9200.5950.2070.1280.190
SFT0.9220.6800.2950.2040.371
Qwen3-1.7BBase0.0000.0000.0000.0000.000
SFT0.0000.0000.0000.0000.000
Instruct0.9240.5550.2020.1090.134
Qwen3-4BBase0.0000.0000.0000.0000.000
SFT0.4580.3090.1560.0010.063
Instruct0.9710.7030.2850.1960.292
Qwen3-8BInstruct0.9790.7740.3290.2460.345
Llama-3.2-3BBase0.9110.5610.2080.1550.146
SFT0.9110.4950.1750.0930.095
Instruct0.9290.4190.1600.0330.060
Llama-3.1-8BInstruct0.6570.3420.1370.0300.073
(b) Ouro-2.6B.
(b) Ouro-2.6B.
Figure 5: Iterative refinement across recurrent depths. Ouro-1.4B on a two-step NESTful composition task. Calls are shown as function(argument=value) -> answer. At depth 1 the model emits a single call to a function absent from the tool catalogue and omits the dependent call; at depth 2 it recovers the two-call structure but the first function is again absent from the catalogue and the variable reference is invalid. Depths 3 and 4 match the gold sequence, including the output-to-input reference $var1.output_0$.
Figure 5: Iterative refinement across recurrent depths. Ouro-1.4B on a two-step NESTful composition task. Calls are shown as function(argument=value) -> answer. At depth 1 the model emits a single call to a function absent from the tool catalogue and omits the dependent call; at depth 2 it recovers the two-call structure but the first function is again absent from the catalogue and the variable reference is invalid. Depths 3 and 4 match the gold sequence, including the output-to-input reference $var1.output_0$.
Table 3: API-Bank evaluation (%; higher is better). (a) Controlled comparison between looped and non-looped models trained using identical supervised fine-tuning recipes. The lower block pairs each retrofitted backbone with its non-looped counterpart; looped variants are evaluated at a fixed inference depth of 8 loop iterations. (b) Comparison against publicly released instruction-tuned checkpoints. Call Correctness measures functional API-call correctness, Exact requires an exact API-name-and-argument match, and Parse reports valid call generation.
(a) Controlled models
Base SFT Model Call Exact Parse Call Exact Parse Ouro-1.4B 73.0 67.6 95.1 75.1 70.2 97.2 Ouro-2.6B 79.2 76.9 99.2 79.9 77.1 99.7 Qwen3-1.7B 5.1 5.1 13.9 61.4 57.8 93.6 Qwen3-4B 71.2 71.2 99.2 76.6 73.8 99.7 Llama-3.2-1B 1.7 1.3 10.8 16.3 14.1 55.3 Llama-3.2-3B 0.3 0.3 0.3 68.5 64.5 99.7 OLMo-2-1B 1.9 0.5 35.7 37.1 33.2 99.5 OLMo-2-1B (Loop) 0.1 0.0 1.5 34.0 30.3 90.7 Llama-3.2-1B 1.7 1.3 10.8 16.3 14.1 55.3 Llama-3.2-1B (Loop) 0.1 0.0 1.5 17.9 16.2 43.4
Figure 6: Ordering and spurious-call correction. At depth 1 the output is malformed, emitting tool specifications rather than call arguments (excerpt shown truncated). At depth 2 both gold functions appear but in reversed order, followed by a call to multiply, which is absent from the tool catalogue, and an invalid variable reference. Depths 3 and 4 match the gold sequence, differing from each other only in label naming.
Figure 6: Ordering and spurious-call correction. At depth 1 the output is malformed, emitting tool specifications rather than call arguments (excerpt shown truncated). At depth 2 both gold functions appear but in reversed order, followed by a call to multiply, which is absent from the tool catalogue, and an invalid variable reference. Depths 3 and 4 match the gold sequence, differing from each other only in label naming.
Figure 7: Argument correction. At depth 1 the model selects the correct first function but names its argument input_str, a parameter of a different tool in the same catalogue, duplicates it as input_str_2, and omits the dependent call. Depths 2 through 4 match the gold sequence and are identical to one another.
Figure 7: Argument correction. At depth 1 the model selects the correct first function but names its argument input_str, a parameter of a different tool in the same catalogue, duplicates it as input_str_2, and omits the dependent call. Depths 2 through 4 match the gold sequence and are identical to one another.
Table 4: Structural comparison of the evaluated tool-calling benchmarks under the solution representation Gx=(Cx,Ex). API-Bank emphasizes individual-call grounding, BFCL evaluates increasingly complex independent call sets, and NESTful introduces explicit output-to-input dependencies.
BenchmarkCandidate toolsCall structureDependenciesPrimary challenge
API-Bankone or moretypically |Cx|=1Ex=∅Tool and argument grounding
BFCL Simple|𝒯x|=1|Cx|=1Ex=∅Argument grounding
BFCL Multiple|𝒯x|>1|Cx|=1Ex=∅Function selection
BFCL Parallelone or more|Cx|>1Ex=∅Independent call generation
BFCL Parallel-Multiple|𝒯x|>1|Cx|>1Ex=∅Selection and call composition
NESTfulmultiple|Cx|>1typically |Ex|>0Dependency-aware execution
Figure 8: Two distinct incorrect attempts before recovery. Depths 1 and 2 each emit a single call to a function absent from the tool catalogue and omit the required dependent call. At depth 1, the model also uses an argument name belonging to a different tool in the catalogue. Depths 3 and 4 select both gold functions and correctly pass $var1.output_0$, differing only in argument-key order.
Figure 8: Two distinct incorrect attempts before recovery. Depths 1 and 2 each emit a single call to a function absent from the tool catalogue and omit the required dependent call. At depth 1, the model also uses an argument name belonging to a different tool in the catalogue. Depths 3 and 4 select both gold functions and correctly pass $var1.output_0$, differing only in argument-key order.
Figure 9: Isolated recovery of a missing dependent call. Depth 1 emits an object with no function name, returning a computed literal, so the parser yields no calls. Depth 2 emits a first call that matches the gold sequence exactly but stops there. Depths 3 and 4 leave that first call unchanged and add the dependent call with the reference $var1.output_0$, isolating the recovery of the dependency from any change in function selection.
Figure 9: Isolated recovery of a missing dependent call. Depth 1 emits an object with no function name, returning a computed literal, so the parser yields no calls. Depth 2 emits a first call that matches the gold sequence exactly but stops there. Depths 3 and 4 leave that first call unchanged and add the dependent call with the reference $var1.output_0$, isolating the recovery of the dependency from any change in function selection.

왜 중요한가

여러 API를 조합해 작업을 수행하는 AI 에이전트를 만들 때, 모델 크기를 키우지 않고도 필요한 순간에만 계산을 더 투입해 정확도를 높일 수 있다는 실마리를 준다. 특히 이전 호출 결과를 다음 호출에 넘기는 복잡한 워크플로우를 다루는 실무 시스템 설계에 참고할 만하다.

이 논문의 용어

  • 루프드 언어모델(Looped Language Model) · 동일한 신경망 블록을 답을 내기 전에 여러 번 반복 적용해 계산량을 늘리는 모델 구조
  • 반복 깊이(recurrent depth) · 추론 시 같은 블록을 몇 번 통과시키는지를 나타내는 값
  • 적응형 추론(adaptive inference) · 토큰마다 필요한 만큼만 반복 횟수를 조절해 계산량과 성능의 균형을 맞추는 방식
  • 리트로핏(retrofitted) 모델 · 기존에 학습된 일반 모델 일부 층을 반복 구조로 개조한 모델
  • AST 정확도(semantic AST accuracy) · 생성된 함수 호출을 표준화한 구조로 바꿔 정답과 의미적으로 같은지 비교하는 채점 방식

논문 원문 초록 (영문)

Looped language models have shown promising results on reasoning benchmarks, yet their potential for agentic tool use remains largely unexplored. We study this question in compositional tool-calling settings, where models must coordinate multiple API calls, maintain intermediate state, and preserve dependencies across tool interactions. We evaluate native and retrofitted looped language models on API-Bank, BFCL, and NESTful, comparing looped and no

저자 · Andrei Cristian Popescu, Haitz S\'aez de Oc\'ariz Borde, Pietro Li\`o

arXiv에서 원문 보기

최신 논문

논문 전체 보기 →

METAL LAB 최신 기사

그림 출처: Andrei Cristian Popescu et al., arXiv:2608.18171, CC BY 4.0