GenSh - Generate and execute code using natural language
Project description
GenSh - Generate and Execute Shell
GenSh is a command-line tool that allows you to generate and execute code using natural language prompts. It leverages large language models to translate your queries into Python or shell code and then executes the generated code. The intenation of this tool is to assist in software and security research.
Features
[x] Generate and execute Python or shell code from natural language queries [x] Support for multiple LLM backends: OpenAI GPT, Anthropic Claude, and Ollama [x] Web search integration to improve code generation [x] Interactive shell mode [x] Command-line execution mode [x] Configurable settings via JSON configuration file [x] Verbose mode for detailed output [x] Error handling and retry logic for code generation [x] Pre-defined templates for common tasks [x] Logging of language model calls to SQLite database [x] Session-based conversation history [x] API token management using .env file
Requirements
GenSh requires the following:
- Python 3.11 or higher
- OpenAI API key (for GPT-3.5 or GPT-4 access)
- Anthropic API key (for Claude access)
- Ollama installed locally (for running local models)
- Dependencies (installed automatically):
- openai>=1.0.0
- anthropic>=0.3.0
- PyYAML>=6.0
- ollama>=0.1.0
- python-dotenv>=0.19.0
- markdown>=3.3.0
- requests>=2.25.0
- beautifulsoup4>=4.9.3
Installation
-
Clone the repository:
git clone https://github.com/yourusername/gensh.git cd gensh -
Install the package:
pip install .
Setting up API Keys
Create a .env file in the root directory of your project and add your API keys:
OPENAI_API_KEY=your_openai_api_key_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here
Usage
Interactive Mode
To start the interactive shell:
gensh
Command-Line Execution
To run a single command:
gensh -c '"find your ip address" | exec_python'
Batch Processing
To process commands from a file:
gensh -f example_batch.gensh
Output Formats
Specify the output format:
gensh --output markdown
Verbose Mode
Enable verbose output:
gensh -v
Custom Configuration
Use a custom configuration file:
gensh --config /path/to/custom_config.json
Configuration
Create a configuration file at ~/.gensh_config.json with the following structure:
{
"template_dir": "templates",
"model": "gpt-3.5-turbo",
"execution_timeout": 30,
"max_retries": 3,
"retry_delay": 1,
"db_path": "gensh_logs.db",
"output_format": "text"
}
Development
To set up a development environment:
- Clone the repository
- Install dependencies:
pip install -e ".[dev]"orpoetry install - Run tests:
pytest tests/
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Inspirations
BUGS / FEATURES / TODO
[x] Bug: Release base templates with the shell, list_templates is broken. DONE: added resources [x] Bug: History functionality doesnt work - DONE: added show_model commands [ ] Feat: Ability to inject on variables in templates, ask for template input [ ] Feat: Add test cases for functionality like generate | parse_context | exec_code [ ] Feat: Add an eval suite which is based on exercism.org code templates [ ] Feat: Add voice capability [ ] Feat: Multiple output formats: text, Markdown, and Word document (docx) [ ] Feat: Batch processing of commands from a file [ ] Feat: Refactor code [ ] Feat: Update docs [ ] Feat: Ability to edit files in the whole_format [ ] Feat: Generate sensible message for git commit changes
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gensh-0.1.7.tar.gz.
File metadata
- Download URL: gensh-0.1.7.tar.gz
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b250467a82caf3e7ee789b8363490bd1dacf3b48e39ea2292e71972c7fb3ea1c
|
|
| MD5 |
cc9d54790ddd60be61d8d718bf9d814f
|
|
| BLAKE2b-256 |
a76b5a9faf07c5fed1bf336779af2523301dc820bb28e7cba346917b9ab1cbf0
|
File details
Details for the file gensh-0.1.7-py3-none-any.whl.
File metadata
- Download URL: gensh-0.1.7-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c24aa46ccf158bdfcfbbd475284bc753d9bc6f04ef07ab34e1ed62b3de5a0e21
|
|
| MD5 |
063bdb87b892426c29a6c2ca6ef26a85
|
|
| BLAKE2b-256 |
409eb8b4650072f41accf02db1b2fcac593c42592e4ad16b36aea77136f1362c
|