AIChat (<a href="https://github.com/sigoden/aichat">https://github.com/sigoden/aichat</a>) nearly fulfills all your requirements.<p>The only difference is that you provide subcommands, while aichat requires users to create various roles.<p>t2x 'Write a ...' => aichat 'Write a ...'<p>t2x ask file.md 'What is...' => aichat -f file.md 'What is...'<p>t2x summary /path/to/file => aichat -r summary -f /path/to/file<p>t2x summary "This is a..." => aichat -r summary "This is a..."<p>t2x orc /path/to/image.png => aichat -r orc -f /path/to/image.png<p>> Note, In AIChat, `-r/--role` specifies the role to use, `-f/--file` indicates the file or URL input.