# dcheng093/call-me-maybe architecture

> Architecture diagram of the GitHub repository dcheng093/call-me-maybe, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dcheng093/call-me-maybe
- Repository: https://github.com/dcheng093/call-me-maybe

## Overview

Call Me Maybe turns natural-language prompts and function definitions into schema-constrained JSON function calls using local model inference. The main workflow loads inputs, simplifies schemas, generates tokens under grammar-based filtering, validates each parsed call, and writes successful results. The README documents these capabilities; the graph follows sampled source for their wiring, and leaves out uncertain implementation details.

Main entry points: [`src/__main__.py`](https://github.com/dcheng093/call-me-maybe/blob/master/src/__main__.py) (CLI orchestrator), [`llm_sdk/llm_sdk/llm_sdk/__init__.py`](https://github.com/dcheng093/call-me-maybe/blob/master/llm_sdk/llm_sdk/llm_sdk/__init__.py) (Local model SDK), [`src/tokenizer.py`](https://github.com/dcheng093/call-me-maybe/blob/master/src/tokenizer.py) (Token filter), [`src/grammar.py`](https://github.com/dcheng093/call-me-maybe/blob/master/src/grammar.py) (JSON rulebook)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inputs["Inputs and schema"]
  node_definitions["Function definitions"]
  node_prompts["Prompt dataset"]
  node_parser["Schema parser<br/>[parser.py]"]
end

subgraph group_generation["Constrained generation"]
  node_main["CLI orchestrator<br/>[__main__.py]"]
  node_grammar["JSON rulebook<br/>[grammar.py]"]
  node_tokenizer["Token filter<br/>[tokenizer.py]"]
end

subgraph group_inference["Local inference"]
  node_sdk["Local model SDK<br/>[__init__.py]"]
end

subgraph group_results["Validation and results"]
  node_validator["Result validator<br/>[validator.py]"]
  node_output["Results JSON"]
end

node_user(("CLI user"))
node_hub["Hugging Face Hub"]

node_user -->|"runs CLI"| node_main
node_main -->|"loads definitions"| node_definitions
node_main -->|"loads prompts"| node_prompts
node_main -->|"parses schemas"| node_parser
node_main -->|"loads model"| node_sdk
node_sdk -->|"downloads model files"| node_hub
node_main -->|"encodes prompt"| node_sdk
node_main -->|"requests logits"| node_sdk
node_main -->|"loads vocabulary"| node_tokenizer
node_main -->|"creates and advances"| node_grammar
node_main -->|"filters token IDs"| node_tokenizer
node_tokenizer -->|"tests token legality"| node_grammar
node_main -->|"validates parsed call"| node_validator
node_main -->|"writes results"| node_output

click node_main "https://github.com/dcheng093/call-me-maybe/blob/master/src/__main__.py"
click node_definitions "https://github.com/dcheng093/call-me-maybe/blob/master/data/input/functions_definition.json"
click node_prompts "https://github.com/dcheng093/call-me-maybe/blob/master/data/input/function_calling_tests.json"
click node_parser "https://github.com/dcheng093/call-me-maybe/blob/master/src/parser.py"
click node_grammar "https://github.com/dcheng093/call-me-maybe/blob/master/src/grammar.py"
click node_tokenizer "https://github.com/dcheng093/call-me-maybe/blob/master/src/tokenizer.py"
click node_sdk "https://github.com/dcheng093/call-me-maybe/blob/master/llm_sdk/llm_sdk/llm_sdk/__init__.py"
click node_validator "https://github.com/dcheng093/call-me-maybe/blob/master/src/validator.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_definitions,node_prompts,node_parser,node_user toneBlue
class node_main,node_grammar,node_tokenizer toneAmber
class node_sdk toneMint
class node_validator,node_output toneRose
class node_hub toneIndigo
```

## Components

### Inputs and schema

- [Function definitions](https://github.com/dcheng093/call-me-maybe/blob/master/data/input/functions_definition.json): `data/input/functions_definition.json`
- [Prompt dataset](https://github.com/dcheng093/call-me-maybe/blob/master/data/input/function_calling_tests.json): `data/input/function_calling_tests.json`
- [Schema parser](https://github.com/dcheng093/call-me-maybe/blob/master/src/parser.py): `src/parser.py`

### Constrained generation

- [CLI orchestrator](https://github.com/dcheng093/call-me-maybe/blob/master/src/__main__.py): `src/__main__.py`
- [JSON rulebook](https://github.com/dcheng093/call-me-maybe/blob/master/src/grammar.py): `src/grammar.py`
- [Token filter](https://github.com/dcheng093/call-me-maybe/blob/master/src/tokenizer.py): `src/tokenizer.py`

### Local inference

- [Local model SDK](https://github.com/dcheng093/call-me-maybe/blob/master/llm_sdk/llm_sdk/llm_sdk/__init__.py): `llm_sdk/llm_sdk/llm_sdk/__init__.py`

### Validation and results

- [Result validator](https://github.com/dcheng093/call-me-maybe/blob/master/src/validator.py): `src/validator.py`
- **Results JSON**

### Other components

- **CLI user**
- **Hugging Face Hub**

## Connections

- CLI user → CLI orchestrator: runs CLI
- CLI orchestrator → Function definitions: loads definitions
- CLI orchestrator → Prompt dataset: loads prompts
- CLI orchestrator → Schema parser: parses schemas
- CLI orchestrator → Local model SDK: loads model
- Local model SDK → Hugging Face Hub: downloads model files
- CLI orchestrator → Local model SDK: encodes prompt
- CLI orchestrator → Local model SDK: requests logits
- CLI orchestrator → Token filter: loads vocabulary
- CLI orchestrator → JSON rulebook: creates and advances
- CLI orchestrator → Token filter: filters token IDs
- Token filter → JSON rulebook: tests token legality
- CLI orchestrator → Result validator: validates parsed call
- CLI orchestrator → Results JSON: writes results
