{"slug": "conlangcrafter-constructing-languages-with-a-multi-hop-llm-pipeline", "title": "ConlangCrafter: Constructing Languages with a Multi-Hop LLM Pipeline", "summary": "Researchers at Tel Aviv University and the University of Ljubljana introduced ConlangCrafter, a fully automated multi-hop LLM pipeline that constructs artificial languages with coherent phonology, grammar, lexicon, and translation capabilities. The system, detailed in a paper on arXiv, generates diverse conlangs using large language models and includes a dataset of 64 generated languages. The project is open-source under an MIT license.", "body_md": "**Project Page:** [conlangcrafter.github.io](http://conlangcrafter.github.io)\n\n**Paper:** [arxiv.org/abs/2508.06094](https://arxiv.org/abs/2508.06094)\n\n**Dataset:** [huggingface.co/datasets/malper/ConlangCrafter](https://huggingface.co/datasets/malper/ConlangCrafter) — 64 generated languages\n\nWe introduce a fully automated system for constructing languages (conlangs) using large language models. Our multi-stage pipeline creates coherent, diverse artificial languages with their own phonology, grammar, lexicon, and translation capabilities.\n\n-\n**Install dependencies:**\n\n```\npip install -r requirements.txt\n# or: uv sync if using uv\n```\n\n-\n**Set up API keys**— copy`.env.example`\n\nto`.env`\n\nand add keys for whichever APIs you will use:**Google Gemini**:`GOOGLE_API_KEY`\n\n—[Google AI Studio](https://aistudio.google.com/app/apikey)**OpenAI**:`OPENAI_API_KEY`\n\n—[OpenAI API Keys](https://platform.openai.com/api-keys)**DeepSeek (via Together)**:`TOGETHER_API_KEY`\n\n—[Together AI](https://api.together.xyz/settings/api-keys)\n\n-\n**Generate a language sketch**(default model:`gemini-2.5-pro`\n\n):\n\n```\npython src/run_pipeline.py\n# or: uv run src/run_pipeline.py\n```\n\nRun `python src/run_pipeline.py --help`\n\nto see all options. Key flags:\n\n```\npython src/run_pipeline.py \\\n    --model gemini-2.5-pro \\\n    --custom-constraints \"The language has only 3 vowels\" \\\n    --temperature 0.8 \\\n    --qa-disabled        # QA self-refinement loops are on by default; use this to turn it off\n```\n\nTo resume a previous run (e.g. starting from grammar after phonology completed):\n\n```\npython src/run_pipeline.py --language-id <id> --steps grammar,lexicon\n```\n\nSupported models are:\n\n- Google Gemini (e.g.,\n`gemini-2.5-pro`\n\n,`gemini-1.5-flash`\n\n) - OpenAI models (e.g.,\n`o4-mini`\n\n,`gpt-4o`\n\n,`gpt-5`\n\n) - DeepSeek via Together AI (e.g.,\n`deepseek-ai/DeepSeek-R1`\n\n)\n\nYou can load pregenerated language sketches from [our dataset](https://huggingface.co/datasets/malper/ConlangCrafter) in this pipeline's format with this script:\n\n```\npython src/load_hf_languages.py\n```\n\nTranslation is not run by default. To translate into a generated language, run the translation step separately. By default it translates the 10 sentences in `configs/sentences_default.txt`\n\n:\n\n```\npython src/run_pipeline.py --language-id <id> --steps translation\n```\n\nTo translate a single custom sentence instead:\n\n```\npython src/run_pipeline.py --language-id <id> --steps translation --translation-sentence \"Hello, world!\"\n```\n\nPass `--translation-sketch-update`\n\nto feed new vocabulary and grammar rules introduced during translation back into the sketch for each subsequent sentence, expanding the language as translation proceeds (constructive translation).\n\nThis implementation includes minor improvements to the system used for results from our paper:\n\n**QA loop**: Degenerate outputs (e.g. JSON instead of text) are detected and skipped inline, rather than post-hoc rejection sampling.**QA amend prompt**: Prompt wording is slightly adjusted for consistency with our system.\n\n```\n@article{conlangcrafter2025,\n    title={ConlangCrafter: Constructing Languages with a Multi-Hop LLM Pipeline},\n    author={Morris Alper and Moran Yanuka and Raja Giryes and Ga{\\v{s}}per Begu{\\v{s}}},\n    year={2025},\n    eprint={2508.06094},\n    archivePrefix={arXiv},\n    primaryClass={cs.CL},\n    url={https://arxiv.org/abs/2508.06094}\n}\n```\n\nThis project is licensed under the MIT License — see the [LICENSE](/morrisalp/ConlangCrafter/blob/main/LICENSE) file for details.", "url": "https://wpnews.pro/news/conlangcrafter-constructing-languages-with-a-multi-hop-llm-pipeline", "canonical_source": "https://github.com/morrisalp/ConlangCrafter", "published_at": "2026-07-15 09:45:23+00:00", "updated_at": "2026-07-15 10:18:39.249672+00:00", "lang": "en", "topics": ["large-language-models", "artificial-intelligence", "natural-language-processing"], "entities": ["Tel Aviv University", "University of Ljubljana", "Morris Alper", "Moran Yanuka", "Raja Giryes", "Gašper Beguš", "ConlangCrafter", "arXiv"], "alternates": {"html": "https://wpnews.pro/news/conlangcrafter-constructing-languages-with-a-multi-hop-llm-pipeline", "markdown": "https://wpnews.pro/news/conlangcrafter-constructing-languages-with-a-multi-hop-llm-pipeline.md", "text": "https://wpnews.pro/news/conlangcrafter-constructing-languages-with-a-multi-hop-llm-pipeline.txt", "jsonld": "https://wpnews.pro/news/conlangcrafter-constructing-languages-with-a-multi-hop-llm-pipeline.jsonld"}}