How alexhysel/42-call-me-maybe works
Call Me Maybe converts prompt records and function schemas into constrained, schema-shaped tool-call JSON, using a local Qwen model and custom tokenizer. A companion Moulinette CLI prepares exercise inputs and correction files, then grades submitted calls against the exercise functions. The graph separates request orchestration, decoding internals, and exercise authoring/grading. Relationships in Moulinette follow the sampled CLI and source-index references; implementation details of several CLI operations were not fully excerpted.
Main entry points: src/__main__.py Generation CLI · callmemaybe.py CallMeMaybe · moulinette/__main__.py Exercise CLI · llm.py Constrained inference
Components 16
Call generation
- Generation CLI
src/__main__.py - Prompt records
data/input/function_calling_tests.json - Function schemas
data/input/functions_definition.json - CallMeMaybe
src/callmemaybe.py - Call JSON results
Decoding engine
- Qwen model wrapper
llm_sdk/__init__.py - BPE encoder
src/encoder.py - Constrained inference
src/llm.py - Tool schema model
src/function.py
Exercise authoring
- Exercise CLI
moulinette/moulinette/__main__.py - Exercise functions
moulinette/moulinette/functions_definition.py - Schema extraction
moulinette/moulinette/extract_functions_infos.py - Test and correction generation
moulinette/moulinette/generate_tests_and_corrections.py
Grading
- Submission grading
moulinette/moulinette/__main__.py - Terminal formatting
moulinette/moulinette/output_formatter.py
Other components
- Prompt requester
Connections 21
- Prompt requester → Generation CLI: submits prompts
README.md - Prompt records → Generation CLI: loads prompts
src/__main__.py - Function schemas → CallMeMaybe: loads schemas
src/callmemaybe.py - Generation CLI → Qwen model wrapper: creates model
src/__main__.py - Generation CLI → BPE encoder: builds tokenizer
src/__main__.py - Generation CLI → Constrained inference: creates inference
src/__main__.py - Generation CLI → CallMeMaybe: processes prompts
src/__main__.py - Generation CLI → Call JSON results: writes results
src/__main__.py - CallMeMaybe → BPE encoder: encodes schemas
src/callmemaybe.py - CallMeMaybe → Tool schema model: builds tools
src/callmemaybe.py - CallMeMaybe → Constrained inference: selects tokens
src/callmemaybe.py - Constrained inference → BPE encoder: uses tokenizer
src/llm.py - Constrained inference → Qwen model wrapper: requests logits
src/llm.py - Exercise CLI → Schema extraction: extracts schemas
moulinette/moulinette/__main__.py - Exercise CLI → Test and correction generation: generates exercises
moulinette/moulinette/__main__.py - Exercise CLI → Exercise functions: selects exercises
moulinette/moulinette/__main__.py - Test and correction generation → Exercise functions: uses exercise data
moulinette/moulinette/generate_tests_and_corrections.py - Schema extraction → Exercise functions: reads functions
moulinette/moulinette/extract_functions_infos.py - Exercise CLI → Submission grading: grades submissions
moulinette/moulinette/__main__.py - Submission grading → Exercise functions: calls expected functions
moulinette/moulinette/__main__.py - Submission grading → Terminal formatting: prints feedback
moulinette/moulinette/__main__.py