Skip to main content

EigenGen is a CLI LLM frontend for code generation with support for claude, gpt4 and llama3.1:70b.

Project description

EigenGen

EigenGen is a CLI Large Language Model frontend. It is designed for working with code. EigenGen uses a two-stage process where larger LLM is used to solve the task and produce dense output, which is then given to a smaller LLM which applies the changes and produces the complete file output. Finally this is then used to produce diffs which the user can choose to apply.

Supported Models

EigenGen currently works correctly with:

  • OpenAI o1-preview, o1-mini, GPT4o (/meld by gpt-4o-mini)
  • Anthropic claude-3-5-sonnet (uses same model for /meld operation, haiku has too low output token limit)
  • llama3.2:90b via Groq (/meld by llama3.1-70b-versatile)
  • Google Gemini 1.5 pro 002 (/meld by gemini-1.5-flash-002 )
  • Mistral Large v2 (/meld uses the same)

Note: Mistral Large seems to have some trouble working with the EigenGen prompting. Similar issues happen with all Mistral models regardless of size. Perhaps they require some distinctly different approach.

Features

  • Basic prompt/answer flow with -p "Type your prompt here".
  • --chat mode allows discussing the changes and when the assistant answers with code blocks of changes, they can be applied with '/meld' command.
  • Add 'git ls-files' files to context automatically with -g, filtered by .eigengen_ignore.
  • eigengen -g --index creates an index cache in ~/.eigengen/cache for semi-automatic context detection. When using -g switch after creating the index, eigengen includes any locally modified files as determined by git plus any files listed with -f argument, and then further adds those files that reference symbols defined in this list of files.

Installation

pip install eigengen

You must export your API key using:

export ANTHROPIC_API_KEY=<your-api-key>
or
export OPENAI_API_KEY=<your-api-key>
or
export GROQ_API_KEY=<your-api-key>
or
export GOOGLE_API_KEY=<your-api-key>
or
export MISTRAL_API_KEY=<your-api-key>

Tips

  • In addition to eigengen executable, we provide egg as well. It's shorter.
  • EigenGen uses EDITOR environment variable to pick the text editor.
  • Combining the two, for Sublime Text you can: alias egg='EDITOR="subl -w" egg -m gpt4'
  • Or if you're into VSCode: alias egg='EDITOR="code -w" egg -m gpt4'.
  • Vim/Neovim/Emacs users can probably figure out their own solutions.
  • Paths above are for Linux. MacOS and Windows binaries may not be in PATH, so you need to find them first.

Development

Please install in edit mode like this:

python3 -m venv .venv
. .venv/bin/activate
pip install -e .

For testing install pytest.

Example Usage

# start a new chat pre-filling initial message from the command line
eigengen -g --chat -p "Please implement a TODO-list web app using react + javascript, thank you. Provide the full project directory structure, please. It should allow adding, editing and deleting entries."

By default eigengen uses claude-3-5-sonnet. In order to use OpenAI GPT4o model, please give --model, -m argument like this:

eigengen -m gpt4 -p "your prompt content"

Work In Progress

  • Exploring user interaction concepts

TODO:

  • Add progress indicator as the LLM calls can take a very long time

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eigengen-0.2.0.tar.gz (28.6 kB view hashes)

Uploaded Source

Built Distribution

eigengen-0.2.0-py3-none-any.whl (29.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page