Summary
The authors acknowledge the challenge of zero-shot tool use for LLMs given the noisy nature of LLM documentation. The authors introduce, "PLAY2PROMPT" which is a system for LLMs to explore tool-use settings in simulation enabling them to refine the tool descriptions and examples. With Play2Prompt the authors are able to demonstrate 3-6\% points improvements for open-source (LLAMA) and closed-source (GPT-3.5) LLMs on StableToolBench.
Strengths
1. The paper presents a comprehensive and complete technique to address what is often not focused upon - improving documentation for tools such that the LLM knows then to invoke them. This is fundamental to improve the LLM's ability calls tools in a zero-shot setting.
2. The technique of first sampling the tool invocation first (followed by rejection sampling), and then generating the corresponding query x and answer y, is a smart technique to introduce variance in the query distribution.
Weaknesses
1. From the definition of the tool, v = (w, y, i) which includes the question, answer, and the invocation, the authors do not include the "environment" that the tool "invocation" is part of. While I understand the benefits of isolating the tool call from the environment, I wonder if by not capturing the information at all - would the system be loosing information relevant to adjudicate if the tool call is correct or incorrect?
2. In line 213, for generating the query "x", I'm wondering if the team had an ablation for 3-shot in-context prompt based query generation would be sufficient - or in other words, what's the benefit from the seemingly compute intensive technique of self-reflection and refinement?
3. How would the system handle multi-step or multi-turn tool calls? From line 285, the authors mention "an API service represents a tool that contains multiple sub-tools, with each sub-tool corresponding to f in our definition." which I would read as ~ creating single-step tool-call proxy for multiple tool calls? Which isn't true multi-step / single-step call?
Questions
1. I'm curious on how using the definition in Section (2), would nested tool-call or a sequence of tool-call be supported? For example, if f = (u, I, g), would a nested tool call be g_1(g_o) in which case what would the description (u) be? A combination of the two calls, or a totally new call?
2. StableToolBench is a comprehensive benchmark and it is promising to see improvement performance. Does this generalize well to other zero-shot benchmarks as well, such as the Berkeley Function Calling Leaderboard?
3. Line 172: "Specifically, given a state st, an action at is generated by sampling from an optimization model M,
conditioned on the input-output information obtained from tool interactions." Why would the action "at" be determined by the optimization Model (M) and not a deterministic system?