Skip to content
/ ja Public

ja is a small CLI / TUI app that allows you to work with AI tools

License

Notifications You must be signed in to change notification settings

joshka/ja

Repository files navigation

ja (just ask) a small CLI app that allows you to work with AI tools

Right now it's just yet another wrapper around the openAI apis

Run interactively:

ja

demo

Command line parameters

ja (just ask) is a small CLI / TUI app that allows you to work with AI tools

Usage: ja [OPTIONS] [-- <MESSAGE>...] [COMMAND]

Commands:
  chat  default command (can be omitted)
  logs  
  help  Print this message or the help of the given subcommand(s)

Arguments:
  [MESSAGE]...
          

Options:
  -m, --model <MODEL>
          ID of the model to use

          Possible values:
          - gpt-3.5-turbo:          alias 3.5 (default - because it's fast and cheap)
          - gpt-3.5-turbo-0301
          - gpt-3.5-turbo-0613
          - gpt-3.5-turbo-1106
          - gpt-3.5-turbo-16k:      alias 3.5-16k
          - gpt-3.5-turbo-16k-0613
          - gpt-4:                  alias 4
          - gpt-4-0314
          - gpt-4-0613
          - gpt-4-1106-preview
          - gpt-4-32k:              alias 4-32k
          - gpt-4-32k-0314
          - gpt-4-32k-0613

  -t, --temperature <TEMPERATURE>
          Sampling temperature

  -p, --top-p <TOP_P>
          Probability mass percentage

  -n, --n <N>
          Number of choices to generate for each input message

  -s, --stream <STREAM>
          Stream the resultt of the API call
          
          [possible values: true, false]

      --stop <STOP>
          Up to 4 sequences where the API will stop generating further tokens

  -c, --max-tokens <MAX_TOKENS>
          The maximum number of tokens to generate in the chat completion

      --presence-penalty <PRESENCE_PENALTY>
          Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far

      --frequency-penalty <FREQUENCY_PENALTY>
          Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far

  -u, --user <USER>
          A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse

  -i, --input <INPUT>
          Input file

  -o, --output <OUTPUT>
          Output file

      --system <SYSTEM>
          System message

  -v, --verbose
          Show verbose output

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

Example usage:

Provide command line paramters directly:

$ ja -- hello
assistant: Hello! How can I assist you today?

Provide input via a pipe:

$ echo "hello" | ja
assistant: Hello! How can I assist you today?

TODO

In no specific order, some ideas:

  • Store logs in cache dir (use --verbose to see the filename)
  • Accept input from stdin
  • Prompts for input at the terminal if none is provided from command line / stdin
  • Chat mode. Not just a single conversation, but multiple (there are plenty of ChatGPT style apps already though)
  • Syntax highlight code in output
  • Add a TUI mode (using ratatui)
  • History management: Allow users to view, search, and manage their conversation history, making it easier to refer back to previous interactions.
  • Customizable output formatting: Provide options for users to customize the output format, such as plain text, JSON, or even HTML, to better suit their needs.
  • Rate limiting and usage monitoring: Add features to monitor API usage and enforce rate limits, helping users avoid unexpected costs or API restrictions.
  • Support for other OpenAI models: Expand the app to support additional OpenAI models, giving users more options for generating content.
  • Text-to-speech integration: Integrate text-to-speech functionality, allowing users to listen to the AI-generated responses instead of reading them.
  • Customize system message. Customizable AI behavior: Allow users to adjust the AI's behavior
  • Templated messages