Invoke and interact with them exactly the same as OpenAI models
Using official token counting/pricing method
With OOP refactor, adding new models in the future will be easy
Refactor
Made many passes to refactor all parts of the program. Main focus was on OOP principals to make codebase easier to understand, maintain and extend.
Abstract LLM parent class with OpenAI and Anthropic as subclasses
Moved many impl details into classes, making main logic cleaner
Styling
Decided that easy visual customization by the user is very important, and a main goal of this project. I noticed that most similar projects do not do this at all.
Added styling.py file to allow users to easily change the appearance of most things in the CLI. This is a precursor to proper configuration management with TOML or PKL.
Adjusted cost displays of the program to align with goals of minimal UI/UX.
Added loading spinner while waiting for first response
Misc features
updated CLI arguments, options, behavior:
specify model name with argv[1] with fuzzy string matching
unix pipe support
flags added for all options
max-tokens option. controls max length of every response
use escape codes to set window title, adapt to window resizing, disable keyboard input during output
add multiline mode
Other
updated all packages
cleanups/removal of unness. code everywhere
add credit to github project that I got inspo/implementations from
README updates to better describe goals and show distinguishing features
Anthropic Models
Added support for newest Claude models:
Refactor
Made many passes to refactor all parts of the program. Main focus was on OOP principals to make codebase easier to understand, maintain and extend.
Styling
Decided that easy visual customization by the user is very important, and a main goal of this project. I noticed that most similar projects do not do this at all.
styling.py
file to allow users to easily change the appearance of most things in the CLI. This is a precursor to proper configuration management with TOML or PKL.Misc features
argv[1]
with fuzzy string matchingOther