CoolFace
Datasetpublic

hungbenjamin402/IF-multi-constraints-upto5-SFT-LFM2.5

IF_multi_constraints_upto5_SFT → LFM2.5 chat format A derivative of UniLu/IF_multi_constraints_upto5_SFT (odc-by) normalized for fine-tuning Liquid AI LFM2 / LFM2.5 models, whose native tool-call format is Pythonic: <|im_start|>assistant <|tool_call_start|>[get_weather(location='Paris, France', unit='celsius')]<|tool_call_end|><|im_end|> SFT-ready precise-instruction-following pairs: the allenai IF-RLVR prompts answered by Gemma-4-31B-it and filtered with the official IFBench… See the full description on the dataset page: https://huggingface.co/datasets/hungbenjamin402/IF-multi-constraints-upto5-SFT-LFM2.5.

sourceHugging Faceodc-byupdated 1mo agoView on Hugging Face
0likes18downloads
Dataset Card

IFmulticonstraintsupto5SFT → LFM2.5 chat format

A derivative of UniLu/IF_multi_constraints_upto5_SFT (odc-by) normalized for fine-tuning Liquid AI LFM2 / LFM2.5 models, whose native tool-call format is Pythonic:

<|im_start|>assistant
<|tool_call_start|>[get_weather(location='Paris, France', unit='celsius')]<|tool_call_end|><|im_end|>

SFT-ready precise-instruction-following pairs: the allenai IF-RLVR prompts answered by Gemma-4-31B-it and filtered with the official IFBench verifier (loose 1.0 / strict ≥ 0.8, ≤ 1024 tokens). extra keeps strict_score, loose_score, response_length_words.

Every row was rendered through the official LiquidAI/LFM2.5-VL-3B chat template (identical to the LFM2.5 text models' template for text-only input) and round-trip verified: each rendered Pythonic call was parsed back and compared to the source call's name and arguments; rows that did not round-trip exactly were dropped.

What changed vs. the source

TransformWhy
{prompt, response} → user/assistant messagesChat format.
Tool names sanitized to Python identifiers (web-search → web_search), consistently in tools and calls; originals kept in renamed_toolsPythonic call syntax requires identifiers.
Exact-duplicate tool entries deduplicatedTemplate hygiene.
Dropped: calls to undeclared tools, unparseable arguments, argument names that are not identifiers or are Python keywords (from, class), rows over 8192 tokens, rows with no assistant tokensTraining hygiene.

Nothing was rephrased, re-generated, or re-labelled.

Columns

ColumnTypeDescription
id, source, split, licensestrprovenance
messagesstr (JSON)canonical OpenAI-style messages; tool_calls arguments are dicts. Feed this + `tools` to `apply_chat_template` to re-render with any LFM template version.
toolsstr (JSON)OpenAI-style tool schemas
textstrfully rendered LFM2.5 conversation, BOS included
prompt_onlybooltrue when the row is a prompt ending in the generation prompt (no assistant tokens)
n_turns, n_tool_calls, n_tools, n_tokens, n_assistant_tokensintsizes (LFM2.5 tokenizer)
renamed_toolsstr (JSON){original: sanitized} when any tool was renamed, else ""
extrastr (JSON)source-specific fields: key, strict_score, loose_score, response_length_words

Stats

SplitReadKeptRows with renamed toolsDropped (reason=count)
train42,16142,1610

Training notes

  • —Use assistant-only loss: apply_chat_template(messages, tools=tools, tokenize=True, return_assistant_tokens_mask=True).
  • —Prefer re-rendering from messages/tools over training on text if your template differs.
  • —Serving-side parsers must accept JSON literals (true, null, nested {}/[]) inside Pythonic calls.

Citation

Please cite the upstream dataset: https://huggingface.co/datasets/UniLu/IFmulticonstraintsupto5SFT