{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/counterfactual-token-generation-in-large","title":"Counterfactual Token Generation in Large Language Models","arxiv_id":"2409.17027","date":"2024-09-25","proceeding":null,"authors":["Ivi Chatzi","Nina Corvelo Benz","Eleni Straitouri","Stratis Tsirtsis","Manuel Gomez-Rodriguez"],"abstract":"\"Sure, I am happy to generate a story for you: Captain Lyra stood at the helm of her trusty ship, the Maelstrom's Fury, gazing out at the endless sea. [...] Lyra's eyes welled up with tears as she realized the bitter truth - she had sacrificed everything for fleeting riches, and lost the love of her crew, her family, and herself.\" Although this story, generated by a large language model, is captivating, one may wonder -- how would the story have unfolded if the model had chosen \"Captain Maeve\" as the protagonist instead? We cannot know. State-of-the-art large language models are stateless -- they maintain no internal memory or state. Given a prompt, they generate a sequence of tokens as an output using an autoregressive process. As a consequence, they cannot reason about counterfactual alternatives to tokens they have generated in the past. In this work, our goal is to enhance them with this functionality. To this end, we develop a causal model of token generation that builds upon the Gumbel-Max structural causal model. Our model allows any large language model to perform counterfactual token generation at almost no cost in comparison with vanilla token generation, it is embarrassingly simple to implement, and it does not require any fine-tuning nor prompt engineering. We implement our model on Llama 3 8B-Instruct and Ministral-8B-Instruct and conduct a qualitative and a quantitative analysis of counterfactually generated text. We conclude with a demonstrative application of counterfactual token generation for bias detection, unveiling interesting insights about the model of the world constructed by large language models.","url_abs":"https://arxiv.org/abs/2409.17027v3","url_pdf":"https://arxiv.org/pdf/2409.17027v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"counterfactual-token-generation-in-large","repo_url":"https://github.com/networks-learning/counterfactual-llms","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"bias-detection","task_name":"Bias Detection"},{"task_slug":"language-modeling","task_name":"Language Modeling"},{"task_slug":"language-modelling","task_name":"Language Modelling"},{"task_slug":"large-language-model","task_name":"Large Language Model"},{"task_slug":"prompt-engineering","task_name":"Prompt Engineering"},{"task_slug":null,"task_name":"counterfactual"}],"methods":[{"method_slug":"am","method_name":"AM"},{"method_slug":"llama","method_name":"LLaMA"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2409.17027","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2409.17027"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/networks-learning/counterfactual-llms","reach":{"status":"ok"}}],"summary":{"ran":9,"ran_fixture":1},"by_repo_kind":{"official":{"samples":10,"ran":10,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":10,"samples":[{"code_sha256_prefix":"22426d7eecb70410","entry":"apply_rotary_emb","repo":"networks-learning/counterfactual-llms","repo_kind":"official","path":"src/mistral-inference/moe_one_file_ref.py","file_url":"https://github.com/networks-learning/counterfactual-llms/blob/HEAD/src/mistral-inference/moe_one_file_ref.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"22426d7eecb70410"}},{"code_sha256_prefix":"7e3a2dbb3c9579a1","entry":"fix_income","repo":"networks-learning/counterfactual-llms","repo_kind":"official","path":"src/bias.py","file_url":"https://github.com/networks-learning/counterfactual-llms/blob/HEAD/src/bias.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7e3a2dbb3c9579a1"}},{"code_sha256_prefix":"1c1a16c4896a4f25","entry":"get_fig_dim","repo":"networks-learning/counterfactual-llms","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/networks-learning/counterfactual-llms/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1c1a16c4896a4f25"}},{"code_sha256_prefix":"7c2a58be8462ca91","entry":"get_where_to_intervene_dict","repo":"networks-learning/counterfactual-llms","repo_kind":"official","path":"src/bias.py","file_url":"https://github.com/networks-learning/counterfactual-llms/blob/HEAD/src/bias.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7c2a58be8462ca91"}},{"code_sha256_prefix":"58d741b58f7d0059","entry":"get_where_to_intervene_dict_direct","repo":"networks-learning/counterfactual-llms","repo_kind":"official","path":"src/bias.py","file_url":"https://github.com/networks-learning/counterfactual-llms/blob/HEAD/src/bias.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"58d741b58f7d0059"}},{"code_sha256_prefix":"99e0ca21ba709107","entry":"precompute_freqs_cis","repo":"networks-learning/counterfactual-llms","repo_kind":"official","path":"src/mistral-inference/moe_one_file_ref.py","file_url":"https://github.com/networks-learning/counterfactual-llms/blob/HEAD/src/mistral-inference/moe_one_file_ref.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"99e0ca21ba709107"}},{"code_sha256_prefix":"3fdd4f66367ca608","entry":"repeat_kv","repo":"networks-learning/counterfactual-llms","repo_kind":"official","path":"src/mistral-inference/moe_one_file_ref.py","file_url":"https://github.com/networks-learning/counterfactual-llms/blob/HEAD/src/mistral-inference/moe_one_file_ref.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3fdd4f66367ca608"}},{"code_sha256_prefix":"e8e39c9933cb102c","entry":"repeat_kv","repo":"networks-learning/counterfactual-llms","repo_kind":"official","path":"src/mistral-inference/one_file_ref.py","file_url":"https://github.com/networks-learning/counterfactual-llms/blob/HEAD/src/mistral-inference/one_file_ref.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e8e39c9933cb102c"}},{"code_sha256_prefix":"70bf6ebaafd266c4","entry":"reshape_for_broadcast","repo":"networks-learning/counterfactual-llms","repo_kind":"official","path":"src/llama3/llama/model.py","file_url":"https://github.com/networks-learning/counterfactual-llms/blob/HEAD/src/llama3/llama/model.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"70bf6ebaafd266c4"}},{"code_sha256_prefix":"841e0eb44df294a1","entry":"sample_top_p","repo":"networks-learning/counterfactual-llms","repo_kind":"official","path":"src/llama3/llama/generation.py","file_url":"https://github.com/networks-learning/counterfactual-llms/blob/HEAD/src/llama3/llama/generation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"841e0eb44df294a1"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}