|
1 | | -# DeepShell: Your Universal LLM Command-Line Interface |
| 1 | +<div align="center"> |
| 2 | + <h1>DeepShell</h1> |
| 3 | + <p><strong>Your Universal LLM Command-Line Interface</strong></p> |
| 4 | +</div> |
2 | 5 |
|
3 | 6 | [](https://www.python.org/) |
| 7 | +<!-- Add other badges as appropriate, e.g., license, build status, etc. --> |
4 | 8 |
|
5 | | -<!-- Add other badges as appropriate, e.g., license, build status --> |
| 9 | +**DeepShell** is a powerful and versatile command-line program that seamlessly blends the familiar environment of your local shell with the immense knowledge and capabilities of Large Language Models (LLMs). Imagine having direct access to the world's most advanced AI models—from local Ollama instances to cloud-based services like Google's Gemini—all unified within a single, efficient terminal interface. |
6 | 10 |
|
7 | | -**DeepShell**: Your Universal LLM Command-Line Interface |
8 | | - |
9 | | -**DeepShell** is a powerful and versatile command-line program that seamlessly blends the familiar environment of your local shell with the immense knowledge and capabilities of Large Language Models (LLMs). Imagine having direct, remote access to the world's most advanced AI models—from local Ollama instances to cloud-based services like Google's Gemini—all unified within your terminal. |
10 | | - |
11 | | -Designed for developers, researchers, and power users who demand precision, flexibility, and efficiency, DeepShell cuts through the complexity of API integrations. It offers a streamlined pathway to query both open-source and proprietary LLMs, transforming your command prompt into a conduit for deep AI intelligence. Whether you're generating code snippets, summarizing extensive documents, brainstorming complex ideas, or crafting creative text, DeepShell makes it effortless. |
12 | | - |
13 | | -Say goodbye to juggling multiple tools! With DeepShell, your command line isn't just for local commands anymore; it's your portal to a new dimension of intelligent interaction, empowering you with efficient, configurable LLM access. |
| 11 | +Designed for developers, researchers, and power users, DeepShell abstracts away the complexity of API integrations. It offers a streamlined pathway to query both open-source and proprietary LLMs, transforming your command prompt into a conduit for deep AI intelligence. |
14 | 12 |
|
15 | 13 | ## ✨ Features |
16 | 14 |
|
17 | | -* **Multi-LLM Support:** |
18 | | - * Seamlessly connect to **Ollama** servers (local or remote). |
19 | | - * Integrate with **Google Gemini API**. |
20 | | - * Easily switch between configured LLM services. |
21 | | -* **Interactive Setup & Configuration:** |
22 | | - * User-friendly setup wizard (`-s`) to guide you through initial configuration. |
23 | | - * Manages LLM service details, including server addresses (Ollama) and API keys (Gemini). |
24 | | - * Stores configuration securely in `~/.deepshell/deepshell.conf`. |
25 | | -* **Flexible Model Management:** |
26 | | - * List available models from your connected LLM service. |
27 | | - * Set and change default models per service (`-model`). |
28 | | -* **Gemini API Key Management:** |
29 | | - * Store and manage multiple Gemini API keys with user-defined nicknames. |
30 | | - * Easily switch between active Gemini API keys (`-set-key`). |
31 | | - * Display the currently active Gemini API key (`-show-key`). |
32 | | - * Quick link to check your Gemini API usage (`-gq`). |
33 | | -* **Intuitive Querying:** |
34 | | - * Send queries directly from your command line (`-q` or `--query`). |
35 | | - * Engaging progress animation while waiting for LLM responses. |
36 | | -* **User-Friendly Interface:** |
37 | | - * Clear, colored console output for enhanced readability. |
38 | | - * Well-formatted and alphabetized help messages (`-h`). |
39 | | - * View active configuration details (`-show-config`). |
40 | | - * Option to delete your configuration (`-d`). |
41 | | - |
42 | | -## 🚀 Why DeepShell? |
43 | | - |
44 | | -* **Unified Experience:** Access different LLMs without context switching. |
45 | | -* **Efficiency:** Quickly query models and manage configurations from your terminal. |
46 | | -* **Customizable:** Tailor DeepShell to your preferred models and services. |
47 | | -* **Developer-Friendly:** Built with Python, making it easy to understand and extend. |
48 | | -* **Local First, Cloud Ready:** Perfect for local development with Ollama and scalable with cloud LLMs like Gemini. |
| 15 | +* **Multi-LLM Support:** |
| 16 | + * Seamlessly connect to **Ollama** servers (local or remote). |
| 17 | + * Integrate with the **Google Gemini API**. |
| 18 | +* **Unified & Interactive Configuration:** |
| 19 | + * A central, user-friendly settings menu (`-s`) guides you through all configuration tasks. |
| 20 | + * Manages LLM service details, including server addresses (Ollama) and API keys (Gemini). |
| 21 | + * Stores configuration securely in `~/.deepshell/deepshell.conf`. |
| 22 | +* **Flexible Service & Model Management:** |
| 23 | + * Easily switch between configured LLM services (`-l`). |
| 24 | + * Quickly jump back to the previously used LLM service (`-j`). |
| 25 | + * List available models from your connected LLM service and change the default model per service (`-m`). |
| 26 | +* **Advanced Gemini API Key Management:** |
| 27 | + * Store and manage multiple Gemini API keys with user-defined nicknames. |
| 28 | + * Easily add new keys or set an active key from your stored list (`-set-key`). |
| 29 | + * Display the currently active Gemini API key's nickname and value (`-show-key`). |
| 30 | + * Quickly check your Gemini API key status and get a link to your usage dashboard (`-gq`). |
| 31 | +* **Intuitive User Experience:** |
| 32 | + * Send queries directly from your command line (`-q`). |
| 33 | + * Beautiful Markdown rendering for LLM responses in the terminal, powered by `rich`. |
| 34 | + * Engaging progress animation while waiting for the LLM. |
| 35 | + * Clear, colored console output for enhanced readability. |
| 36 | + * Well-formatted and alphabetized help messages (`-h`). |
49 | 37 |
|
50 | 38 | ## 🛠️ Installation |
51 | 39 |
|
52 | 40 | 1. **Prerequisites:** |
53 | | - |
54 | | - * Python 3.7 or higher. |
55 | | - * `pip` (Python package installer). |
| 41 | + * Python 3.7 or higher. |
| 42 | + * `pip` (Python package installer). |
56 | 43 |
|
57 | 44 | 2. **Clone the Repository:** |
58 | | - |
59 | | - ```bash |
60 | | - git clone <your-repository-url> # Replace with your actual repo URL |
61 | | - cd deepshell |
62 | | - ``` |
63 | | - |
64 | | -3. **Install Dependencies (If running the python file):** |
65 | | - DeepShell uses the `requests` library for API communication, but all required modules will be listed in `modules.txt`. |
66 | | - |
67 | | - ```bash |
68 | | - pip install requests chardet |
69 | | - ``` |
70 | | - |
71 | | -4. **Run Python version:** |
72 | | - |
73 | | - ```bash |
74 | | - python3 main.py |
75 | | - ``` |
76 | | - |
77 | | -5. **Run Executable Binary Release :** |
78 | | - |
79 | | - ```bash |
80 | | - ./deepshell |
81 | | - ``` |
| 45 | + ```bash |
| 46 | + git clone https://github.com/ashes00/deepshell.git |
| 47 | + cd deepshell |
| 48 | + ``` |
| 49 | + |
| 50 | +3. **Install Dependencies:** |
| 51 | + The required Python modules are listed in `modules.txt`. You can install them manually or use the provided development setup script. |
| 52 | + ```bash |
| 53 | + pip install -r <(grep -vE "^\s*#|^\s*$" modules.txt) |
| 54 | + ``` |
| 55 | + |
| 56 | +4. **Run DeepShell:** |
| 57 | + * **From source:** |
| 58 | + ```bash |
| 59 | + python3 main.py [OPTIONS] |
| 60 | + ``` |
| 61 | + * **As an executable** (if you've built one): |
| 62 | + ```bash |
| 63 | + ./deepshell [OPTIONS] |
| 64 | + ``` |
82 | 65 |
|
83 | 66 | ## 🏁 Getting Started: Initial Setup |
84 | 67 |
|
85 | | -The first time you run DeepShell, or if you want to reconfigure, use the `-s` flag: |
| 68 | +The first time you run DeepShell, or anytime you want to manage settings, use the `-s` or `--setup` flag: |
86 | 69 |
|
87 | 70 | ```bash |
88 | | -./deepshell -s (or --setup) |
| 71 | +./deepshell -s |
89 | 72 | ``` |
90 | 73 |
|
91 | | -This will launch an interactive wizard that helps you: |
92 | | - |
93 | | -1. Choose an LLM service to configure (Ollama or Gemini). |
94 | | -2. **For Ollama:** Enter your Ollama server address and select a default model. |
95 | | -3. **For Gemini:** Manage your API keys (add, set active) and select a default model. |
| 74 | +This launches a comprehensive, interactive menu that allows you to: |
| 75 | +1. **Add or Reconfigure LLM Services:** |
| 76 | + * **For Ollama:** Enter your server address (e.g., `http://localhost:11434`) and select a default model from those available on your server. |
| 77 | + * **For Gemini:** Manage your API keys (add, remove, set active) and select a default model from the Gemini API. |
| 78 | +2. **Switch** the active LLM service. |
| 79 | +3. **Change** the default model for the currently active service. |
| 80 | +4. **Manage** Gemini API keys specifically. |
| 81 | +5. **View** your current configuration or **delete** it entirely. |
96 | 82 |
|
97 | 83 | Your settings will be saved to `~/.deepshell/deepshell.conf`. |
98 | 84 |
|
99 | 85 | ## 💻 Usage & Command-Line Options |
100 | 86 |
|
101 | | -Here are some common ways to use DeepShell: |
102 | | - |
103 | | -* **Querying the Active LLM:** |
104 | | - |
105 | | - ```bash |
106 | | - ./deepshell -q (or --query) "What are the benefits of using a CLI for LLM interaction?" |
107 | | - ``` |
108 | | - |
109 | | -* **Changing the Default Model for the Active Service:** |
110 | | - |
111 | | - ```bash |
112 | | - ./deepshell -model (or --model-change) |
113 | | - ``` |
114 | | - |
115 | | - (This will list available models and prompt you to choose a new default.) |
116 | | - |
117 | | -* **Switching or Configuring LLM Services:** |
118 | | - |
119 | | - ```bash |
120 | | - ./deepshell -l (or --llm) |
121 | | - ``` |
122 | | - |
123 | | - (This allows you to switch between already configured services like Ollama and Gemini, or add/reconfigure one.) |
124 | | - |
125 | | -* **Managing Gemini API Keys:** |
126 | | - |
127 | | - * Add a new key or set an existing one as active: |
128 | | - |
129 | | - ```bash |
130 | | - ./deepshell -set-key (or --set-api-key) |
131 | | - ``` |
132 | | - |
133 | | - * Show the currently active Gemini API key nickname and value: |
134 | | - |
135 | | - ```bash |
136 | | - ./deepshell -show-key (or --show-api-key) |
137 | | - ``` |
138 | | - |
139 | | - * Get information on checking your Gemini API quota: |
140 | | - |
141 | | - ```bash |
142 | | - ./deepshell -gq (or --gemini-quota) |
143 | | - ``` |
| 87 | +### Primary Usage |
144 | 88 |
|
145 | | -* **Viewing Active Configuration:** |
146 | | - |
147 | | - ```bash |
148 | | - ./deepshell -show-config (or --show-full-config) |
149 | | - ``` |
150 | | - |
151 | | -* **Getting Help:** |
152 | | - |
153 | | - ```bash |
154 | | - ./deepshell -h (or --help) |
155 | | - ``` |
156 | | - |
157 | | -* **Checking Version:** |
158 | | - |
159 | | - ```bash |
160 | | - ./deepshell -v (or --version) |
161 | | - ``` |
162 | | - |
163 | | -* **Deleting Configuration:** (Use with caution!) |
164 | | - |
165 | | - ```bash |
166 | | - ./deepshell -d (or --delete-config) |
167 | | - ``` |
| 89 | +**Query the active LLM** |
| 90 | +```bash |
| 91 | +./deepshell -q "What are the benefits of using a CLI for LLM interaction?" |
| 92 | +./deepshell --query "Write a python function to calculate a factorial" |
| 93 | +``` |
| 94 | +
|
| 95 | +### LLM & Model Management |
| 96 | +
|
| 97 | +**Enter the main settings menu** |
| 98 | +```bash |
| 99 | +./deepshell -s (or --setup) |
| 100 | +``` |
| 101 | +
|
| 102 | +**Switch active service or configure services** (shortcut to a settings sub-menu) |
| 103 | +```bash |
| 104 | +./deepshell -l (or --llm) |
| 105 | +``` |
| 106 | +
|
| 107 | +**Quickly jump to the previously used LLM service** |
| 108 | +```bash |
| 109 | +./deepshell -j (or --jump-llm) |
| 110 | +``` |
| 111 | +
|
| 112 | +**Change the default model for the active service** (shortcut) |
| 113 | +```bash |
| 114 | +./deepshell -m (or --model-change) |
| 115 | +``` |
| 116 | +
|
| 117 | +### Gemini-Specific Commands |
| 118 | +
|
| 119 | +**Interactively manage Gemini API keys** (add, remove, set active) |
| 120 | +```bash |
| 121 | +./deepshell -set-key (or --set-api-key) |
| 122 | +``` |
| 123 | +
|
| 124 | +**Show the active Gemini API key nickname and value** |
| 125 | +```bash |
| 126 | +./deepshell -show-key (or --show-api-key) |
| 127 | +``` |
| 128 | +
|
| 129 | +**Check Gemini API key status and get quota info** |
| 130 | +```bash |
| 131 | +./deepshell -gq (or --gemini-quota) |
| 132 | +``` |
| 133 | +
|
| 134 | +### Configuration & Info |
| 135 | +
|
| 136 | +**Display the currently active configuration details** |
| 137 | +```bash |
| 138 | +./deepshell -show-config (or --show-full-conf) |
| 139 | +``` |
| 140 | +
|
| 141 | +**Delete the entire configuration file** (use with caution!) |
| 142 | +```bash |
| 143 | +./deepshell -d (or --delete-config) |
| 144 | +``` |
| 145 | +
|
| 146 | +**Show the help message** |
| 147 | +```bash |
| 148 | +./deepshell -h (or --help) |
| 149 | +``` |
| 150 | +
|
| 151 | +**Show the program's version** |
| 152 | +```bash |
| 153 | +./deepshell -v (or --version) |
| 154 | +``` |
168 | 155 |
|
169 | 156 | ## ⚙️ Configuration File |
170 | 157 |
|
171 | 158 | DeepShell stores its configuration in a JSON file located at `~/.deepshell/deepshell.conf`. While you can view this file, it's recommended to manage settings through DeepShell's command-line options for safety and ease of use. |
172 | 159 |
|
173 | | -The configuration includes: |
174 | | - |
175 | | -* `active_llm_service`: The currently selected LLM service (e.g., "ollama" or "gemini"). |
176 | | -* `llm_services`: A dictionary containing specific configurations for each service: |
177 | | - * **Ollama:** `server_address` and default `model`. |
178 | | - * **Gemini:** A list of `api_keys` (each with a `nickname` and `key` value), the `active_api_key_nickname`, and the default `model`. |
| 160 | +An example configuration might look like this: |
| 161 | +```json |
| 162 | +{ |
| 163 | + "active_llm_service": "gemini", |
| 164 | + "previous_active_llm_service": "ollama", |
| 165 | + "llm_services": { |
| 166 | + "ollama": { |
| 167 | + "server_address": "http://localhost:11434", |
| 168 | + "model": "llama3:latest", |
| 169 | + "render_markdown": true |
| 170 | + }, |
| 171 | + "gemini": { |
| 172 | + "api_keys": [ |
| 173 | + { |
| 174 | + "nickname": "personal-key", |
| 175 | + "key": "BIsa8y..." |
| 176 | + } |
| 177 | + ], |
| 178 | + "active_api_key_nickname": "personal-key", |
| 179 | + "model": "models/gemini-1.5-flash", |
| 180 | + "render_markdown": true |
| 181 | + } |
| 182 | + } |
| 183 | +} |
| 184 | +``` |
179 | 185 |
|
180 | 186 | ## 🤖 Supported LLMs |
181 | 187 |
|
182 | | -* **Ollama:** Connect to any Ollama instance serving models like Llama, Mistral, etc. |
183 | | -* **Google Gemini:** Access Gemini models (e.g., `gemini-pro`) via the Google AI Studio API. |
184 | | - |
185 | | -*(Support for more LLM providers can be added in the future!)* |
| 188 | +---- |
| 189 | +* **Ollama:** Connect to any Ollama instance serving models like Llama, Mistral, etc. |
| 190 | +* **Google Gemini:** Access Gemini models (e.g., `gemini-1.5-pro`, `gemini-1.5-flash`) via the Google AI Studio API. |
186 | 191 |
|
187 | 192 | --- |
188 | 193 |
|
189 | | -We hope DeepShell enhances your productivity and makes interacting with LLMs a breeze! |
190 | | -If you have suggestions or encounter issues, please feel free to open an issue on the project repository. |
| 194 | +## ⚙️ Pro Tip |
| 195 | + |
| 196 | +1. Copy deepshell to your Environment path: |
| 197 | +```bash |
| 198 | +nano .bashrc |
| 199 | +export PATH=$PATH:/home/user/APPS-DIR |
| 200 | +``` |
| 201 | +2. Create an aliases for ds & dsq for quick keyboard actions. |
| 202 | +```bash |
| 203 | +nano .bashrc |
| 204 | +alias ds="deepshell" |
| 205 | +alias dsq="deepshell -q" |
| 206 | +``` |
| 207 | +3. Save .bashrc file. |
| 208 | +```bash |
| 209 | +Ctrl+s & Ctrl+x |
| 210 | +``` |
| 211 | +4. Update your .bashrc file to use commands |
| 212 | +```bash |
| 213 | +source .bashrc |
| 214 | +``` |
| 215 | +5. Us the alias to quickly query the LLM |
| 216 | +```bash |
| 217 | +dsq What is the best LLM? |
| 218 | +``` |
| 219 | +6. Use the alias to quickly access features |
| 220 | +```bash |
| 221 | +ds -v |
| 222 | +``` |
| 223 | + |
| 224 | +Happy Querying! |
191 | 225 |
|
192 | | -Happy Hacking! |
|
0 commit comments