1.4 KiB
1.4 KiB
Chatty
CLI chat client for OpenAI models with conversation persistence.
Quick reference
# One-shot message (non-interactive, best for scripting / agent use)
python main.py "Your message here"
# One-shot with a named conversation (creates or resumes)
python main.py -n my-thread "Follow-up question"
# One-shot with a specific model
python main.py -m gpt-4o "Hello"
# Interactive mode
python main.py
python main.py -n my-thread
# Resume by conversation ID
python main.py --resume 3
# List saved conversations
python main.py --list
# Custom system prompt
python main.py -s "You are a pirate." "Ahoy?"
Architecture
Single-file app: main.py. SQLite database conversations.db stores all conversations and messages.
Key functions:
send_message()- one-shot: send a message, get a response, no UIchat_loop()- interactive REPL with streaming outputget_or_create_conversation()- upserts by nameload_messages()/save_message()- DB read/write
Environment
Requires OPENAI_API_KEY in environment or .env file. Dependencies: openai, python-dotenv.
Conventions
- Default model:
gpt-4.1(set viaDEFAULT_MODEL) - Messages are saved to DB only after a successful API response
- System prompt is stored as the first message in a conversation
- Named conversations are resumed automatically; unnamed ones always create new entries