python + prompt + analyze
Add LLM-generated columns to a CSV with one command.
- uv (Recommended)
- At least one LiteLLM-compatible API key (OpenAI, Gemini, Anthropic, etc.)
uv is the easiest way to run the CLI.
uv tool install pplyzpplyz test.csv \
--input title,abstract \
--output "relevant:bool,summary:str" \
--model openai/gpt-4o-miniThis command sends the title and abstract columns to the LLM,
adds relevant and summary columns to test.csv,
and uses the openai/gpt-4o-mini model.
Note
The CLI prompts you for a task description before processing unless --prompt or --prompt-file is provided.
Output is written back to the input CSV file (overwrite).
Use -h or --help to list arguments.
pplyz -h| Flag | Description | Required |
|---|---|---|
INPUT (positional) |
Input CSV path. | Yes |
-i, --input |
Comma-separated input column names (e.g., title,abstract). |
Yes (unless default is set) |
-o, --output |
Output schema (e.g., score:int,notes:str). Types: bool, int, float, str. |
Yes (unless default is set) |
-p, --preview |
Process a few rows and show would-be output without writing. | No |
-m, --model |
LiteLLM model name. | No |
-f, --force |
Reprocess all rows (resume is default). | No |
--prompt |
Inline prompt text (skips interactive prompt entry). | No |
--prompt-file |
Path to a prompt text file (skips interactive prompt entry). | No |
- Create the user config once:
mkdir -p ~/.config/pplyz
$EDITOR ~/.config/pplyz/config.tomlOn Windows, use %APPDATA%\\pplyz\\config.toml.
- Add only the providers you actually use:
[env]
OPENAI_API_KEY = "sk-..."
GROQ_API_KEY = "gsk-..."
[pplyz]
default_model = "openai/gpt-4o-mini"
default_input = "title,abstract"
default_output = "relevant:bool,summary:str"pplyz loads settings in this order (earlier wins):
- Existing environment variables
pplyz.local.tomlin the project root (optional)- User config:
~/.config/pplyz/config.toml(or%APPDATA%\\pplyz\\config.tomlon Windows; ifXDG_CONFIG_HOMEis set, it uses that)
To keep configs elsewhere, set PPLYZ_CONFIG_DIR=/path/to/dir and place config.toml there.
Set these inside the [env] table of your config.toml
(or export them as environment variables):
| Provider | Keys (checked in order) |
|---|---|
| Gemini | GEMINI_API_KEY |
| OpenAI | OPENAI_API_KEY |
| Anthropic / Claude | ANTHROPIC_API_KEY |
| Groq | GROQ_API_KEY |
| Mistral | MISTRAL_API_KEY |
| Cohere | COHERE_API_KEY |
| Replicate | REPLICATE_API_KEY |
| Hugging Face | HUGGINGFACE_API_KEY |
| Together AI | TOGETHERAI_API_KEY, TOGETHER_AI_TOKEN |
| Perplexity | PERPLEXITY_API_KEY |
| DeepSeek | DEEPSEEK_API_KEY |
| xAI | XAI_API_KEY |
| Azure OpenAI | AZURE_OPENAI_API_KEY, AZURE_API_KEY |
| AWS (Bedrock/SageMaker) | AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY |
| Vertex AI | GOOGLE_APPLICATION_CREDENTIALS |
| key | description | default |
|---|---|---|
default_model |
Sets the fallback LiteLLM model when --model is omitted. |
gemini/gemini-2.5-flash-lite |
default_input |
Comma-separated columns used when -i/--input is omitted. |
unset |
default_output |
Output schema used when -o/--output is omitted. |
unset |
preview_rows |
Number of rows used when --preview is set (can also be overridden via PPLYZ_PREVIEW_ROWS). |
3 |
For the latest list of supported models, see the LiteLLM provider docs: https://docs.litellm.ai/docs/providers