Eva-4B-V2 achieves 84.9% Macro-F1 on the EvasionBench evaluation set, outperforming frontier LLMs:
Top 5 Model Performance
Rank
Model
Macro-F1
1
Eva-4B-V2
84.9%
2
Gemini 3 Flash
84.6%
3
Claude Opus 4.5
84.4%
4
GLM-4.7
82.9%
5
GPT-5.2
80.9%
Per-Class Performance
Class
Precision
Recall
F1
Direct
90.6%
75.1%
82.1%
Intermediate
73.7%
87.7%
80.1%
Fully Evasive
93.3%
91.6%
92.4%
Label Definitions
Label
Definition
direct
The core question is directly and explicitly answered
intermediate
The response provides related context but sidesteps the specific core
fully_evasive
The question is ignored, explicitly refused, or entirely off-topic
Training
Two-Stage Training Pipeline
Qwen3-4B-Instruct-2507
│
▼ Stage 1: 60K consensus data
│
Eva-4B-Consensus
│
▼ Stage 2: 24K three-judge data
│
Eva-4B-V2
Training Configuration
Parameter
Stage 1
Stage 2
Dataset
60K consensus
24K three-judge
Epochs
2
2
Learning Rate
2e-5
2e-5
Batch Size
32
32
Max Length
2500
2048
Precision
bfloat16
bfloat16
Hardware
Stage 1: 2x NVIDIA B200 (180GB SXM6)
Stage 2: 4x NVIDIA H100 (80GB SXM5)
Usage
With Transformers
python
1from transformers import AutoModelForCausalLM, AutoTokenizer
2import torch
34model_name ="FutureMa/Eva-4B-V2"5tokenizer = AutoTokenizer.from_pretrained(model_name)6model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto")78# Prompt template9prompt ="""You are a financial analyst. Your task is to Detect Evasive Answers in Financial Q&A
1011Question: What is the expected margin for Q4?
12Answer: We expect it to be 32%.
1314Response format:
15```json
16{"label": "direct|intermediate|fully_evasive"}
17```
1819Answer in ```json content, no other text"""2021messages =[{"role":"user","content": prompt}]22text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=False)23inputs = tokenizer(text, return_tensors="pt").to(model.device)2425with torch.no_grad():26 outputs = model.generate(**inputs, max_new_tokens=64, temperature=0.1, do_sample=False)2728generated = outputs[0][inputs["input_ids"].shape[1]:]29print(tokenizer.decode(generated, skip_special_tokens=True))30# Output: ```json31# {"label": "direct"}32# ```
1@misc{ma2026evasionbenchlargescalebenchmarkdetecting,
2 title={EvasionBench: A Large-Scale Benchmark for Detecting Managerial Evasion in Earnings Call Q&A},
3 author={Shijian Ma and Yan Lin and Yi Yang},
4 year={2026},
5 eprint={2601.09142},
6 archivePrefix={arXiv},
7 primaryClass={cs.LG},
8 url={https://arxiv.org/abs/2601.09142}
9}