GitHub - morrisalp/ConlangCrafter: Constructing languages with LLMs, based on the ACL 2026 (Oral) paper: "ConlangCrafter: Constructing Languages with a Multi-Hop LLM Pipeline" · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
morrisalp
ConlangCrafter
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star<br>17
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>19 Commits<br>19 Commits
configs
configs
prompts
prompts
src
src
.env.example
.env.example
.gitignore
.gitignore
.python-version
.python-version
LICENSE
LICENSE
README.md
README.md
pyproject.toml
pyproject.toml
requirements.txt
requirements.txt
uv.lock
uv.lock
View all files
Repository files navigation
ConlangCrafter: Constructing Languages with a Multi-Hop LLM Pipeline (ACL 2026 Oral)
Project Page: conlangcrafter.github.io
Paper: arxiv.org/abs/2508.06094
Dataset: huggingface.co/datasets/malper/ConlangCrafter — 64 generated languages
We 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.
Quick Start
Install dependencies:
pip install -r requirements.txt<br># or: uv sync if using uv
Set up API keys — copy .env.example to .env and add keys for whichever APIs you will use:
Google Gemini : GOOGLE_API_KEY — Google AI Studio
OpenAI : OPENAI_API_KEY — OpenAI API Keys
DeepSeek (via Together) : TOGETHER_API_KEY — Together AI
Generate a language sketch (default model: gemini-2.5-pro):
python src/run_pipeline.py<br># or: uv run src/run_pipeline.py
Configuration
Run python src/run_pipeline.py --help to see all options. Key flags:
python src/run_pipeline.py \<br>--model gemini-2.5-pro \<br>--custom-constraints "The language has only 3 vowels" \<br>--temperature 0.8 \<br>--qa-disabled # QA self-refinement loops are on by default; use this to turn it off
To resume a previous run (e.g. starting from grammar after phonology completed):
--steps grammar,lexicon">python src/run_pipeline.py --language-id id> --steps grammar,lexicon
Supported models are:
Google Gemini (e.g., gemini-2.5-pro, gemini-1.5-flash)
OpenAI models (e.g., o4-mini, gpt-4o, gpt-5)
DeepSeek via Together AI (e.g., deepseek-ai/DeepSeek-R1)
Pregenerated language sketches
You can load pregenerated language sketches from our dataset in this pipeline's format with this script:
python src/load_hf_languages.py
Translation
Translation 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:
--steps translation">python src/run_pipeline.py --language-id id> --steps translation
To translate a single custom sentence instead:
--steps translation --translation-sentence "Hello, world!"">python src/run_pipeline.py --language-id id> --steps translation --translation-sentence "Hello, world!"
Pass --translation-sketch-update to 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).
Improvements
This implementation includes minor improvements to the system used for results from our paper:
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.
Citation
@article{conlangcrafter2025,<br>title={ConlangCrafter: Constructing Languages with a Multi-Hop LLM Pipeline},<br>author={Morris Alper and Moran Yanuka and Raja Giryes and Ga{\v{s}}per Begu{\v{s}}},<br>year={2025},<br>eprint={2508.06094},<br>archivePrefix={arXiv},<br>primaryClass={cs.CL},<br>url={https://arxiv.org/abs/2508.06094}
License
This project is licensed under the MIT License — see the LICENSE file for details.
About
Constructing languages with LLMs, based on the ACL 2026 (Oral) paper:...