Results
The results are the trained questioner's, as the paper reports them: see the
adapter card's Results. This merged model reproduces the adapter's output on that card's example, as the paragraph
above says.
How to use it
The questioner reads the prompt template it was trained on, in prompts/, and replies
with one JSON action per step: {"action": "ask", "question": ...} or {"action": "stop", ...}.
Keep Qwen3's thinking off, as in training.
import re
import torch
from huggingface_hub import hf_hub_download
from transformers import AutoModelForCausalLM, AutoTokenizer
REPO = "dolev31/ProactiveInquirer-Qwen3-8B-Merged"
tok = AutoTokenizer.from_pretrained(REPO)
model = AutoModelForCausalLM.from_pretrained(REPO, dtype=torch.bfloat16, device_map="auto")
template = open(hf_hub_download(REPO, "prompts/inquirer_prompted.txt"), encoding="utf-8").read()
placebo = open(hf_hub_download(REPO, "prompts/fragment_user_channel_placebo.txt"), encoding="utf-8").read()
def next_action(**state):
fields = dict(state, user_channel=placebo.strip())
prompt = re.sub(r"\{\{(\w+)\}\}", lambda m: str(fields[m.group(1)]), template)
ids = tok.apply_chat_template(
[{"role": "user", "content": prompt}],
add_generation_prompt=True,
enable_thinking=False,
return_tensors="pt",
return_dict=True,
).to(model.device)
out = model.generate(**ids, max_new_tokens=200, do_sample=False)
return tok.decode(out[0, ids["input_ids"].shape[1] :], skip_special_tokens=True)
print(next_action(
question="Who was the spouse of the director of the film The Great Flamarion?",
instructions="Answer the question using a closed pool of 20 paragraphs. You may issue retrieval "
"queries against that pool before answering; several paragraphs are distractors, and the answer "
"usually requires composing facts from more than one of them.",
evidence="(nothing retrieved yet)", draft="(no draft yet)", history="(nothing asked yet)",
))
With vLLM, serve it and send the filled template as the user message, with thinking off:
vllm serve dolev31/ProactiveInquirer-Qwen3-8B-Merged
# request body: {"messages": [{"role": "user", "content": "<the filled template>"}],
# "chat_template_kwargs": {"enable_thinking": false}, "temperature": 0}
Limitations
- The questioner's own limitations, from the paper: it has learned what to ask more readily than when to
stop, the extra evidence it finds does not yet translate into better final answers, and its user-facing
results come from a simulated customer, not from real people.
- It is a component inside an agent, meant to be called with its prompt template. It is not a chat
assistant, and it was trained and evaluated in English.
- This is one training seed (seed 1), merged in float32 and stored in bfloat16. Its equality with the
adapter was checked on the card's example, not on a benchmark.
Citation
@article{levy2026asking,
title = {Asking for What Was Never Requested: Horizontal and Vertical Proactivity in Agents},
author = {Levy, Ido and Yehudai, Asaf and Shlomov, Segev and Adi, Asaf and Choshen, Leshem},
journal = {arXiv preprint arXiv:2609.37236},
url = {https://arxiv.org/abs/2609.37236},
year = {2026}
}
License
Apache-2.0, like the base model Qwen3-8B.