ngpt 2.2.0__tar.gz → 2.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ngpt-2.2.0 → ngpt-2.3.0}/PKG-INFO +42 -1
- {ngpt-2.2.0 → ngpt-2.3.0}/README.md +41 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/configuration.md +6 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/examples/advanced.md +46 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/usage/cli_usage.md +44 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/ngpt/cli.py +30 -6
- {ngpt-2.2.0 → ngpt-2.3.0}/pyproject.toml +1 -1
- {ngpt-2.2.0 → ngpt-2.3.0}/uv.lock +1 -1
- {ngpt-2.2.0 → ngpt-2.3.0}/.github/workflows/python-publish.yml +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/.gitignore +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/.python-version +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/COMMIT_GUIDELINES.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/CONTRIBUTING.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/LICENSE +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/CONTRIBUTING.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/LICENSE.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/README.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/_config.yml +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/api/README.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/api/client.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/api/config.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/assets/css/style.scss +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/examples/README.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/examples/basic.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/examples/integrations.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/installation.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/overview.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/usage/README.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/docs/usage/library_usage.md +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/ngpt/__init__.py +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/ngpt/client.py +0 -0
- {ngpt-2.2.0 → ngpt-2.3.0}/ngpt/config.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ngpt
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.3.0
|
4
4
|
Summary: A lightweight Python CLI and library for interacting with OpenAI-compatible APIs, supporting both official and self-hosted LLM endpoints.
|
5
5
|
Project-URL: Homepage, https://github.com/nazdridoy/ngpt
|
6
6
|
Project-URL: Repository, https://github.com/nazdridoy/ngpt
|
@@ -81,8 +81,16 @@ ngpt --shell "list all files in the current directory"
|
|
81
81
|
|
82
82
|
# Use multiline editor for complex prompts
|
83
83
|
ngpt --text
|
84
|
+
|
85
|
+
# Use custom system prompt
|
86
|
+
ngpt --preprompt "You are a Linux expert" "How do I find large files?"
|
87
|
+
|
88
|
+
# Log your conversation to a file
|
89
|
+
ngpt --interactive --log conversation.log
|
84
90
|
```
|
85
91
|
|
92
|
+
For more examples and detailed usage, visit the [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html).
|
93
|
+
|
86
94
|
## Features
|
87
95
|
|
88
96
|
- ✅ **Dual Mode**: Use as a CLI tool or import as a Python library
|
@@ -95,6 +103,10 @@ ngpt --text
|
|
95
103
|
- 💻 **Shell Command Generation**: OS-aware command execution
|
96
104
|
- 🧩 **Clean Code Generation**: Output code without markdown or explanations
|
97
105
|
- 📝 **Rich Multiline Editor**: Interactive multiline text input with syntax highlighting and intuitive controls
|
106
|
+
- 🎭 **System Prompts**: Customize model behavior with custom system prompts
|
107
|
+
- 📃 **Conversation Logging**: Save your conversations to text files for later reference
|
108
|
+
|
109
|
+
See the [Feature Overview](https://nazdridoy.github.io/ngpt/overview.html) for more details.
|
98
110
|
|
99
111
|
## Documentation
|
100
112
|
|
@@ -102,6 +114,13 @@ Comprehensive documentation, including API reference, usage guides, and examples
|
|
102
114
|
|
103
115
|
**[https://nazdridoy.github.io/ngpt/](https://nazdridoy.github.io/ngpt/)**
|
104
116
|
|
117
|
+
Key documentation sections:
|
118
|
+
- [Installation Guide](https://nazdridoy.github.io/ngpt/installation.html)
|
119
|
+
- [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html)
|
120
|
+
- [Library Usage Guide](https://nazdridoy.github.io/ngpt/usage/library_usage.html)
|
121
|
+
- [Configuration Guide](https://nazdridoy.github.io/ngpt/configuration.html)
|
122
|
+
- [Examples & Tutorials](https://nazdridoy.github.io/ngpt/examples/basic.html)
|
123
|
+
|
105
124
|
## Installation
|
106
125
|
|
107
126
|
```bash
|
@@ -110,6 +129,8 @@ pip install ngpt
|
|
110
129
|
|
111
130
|
Requires Python 3.8 or newer.
|
112
131
|
|
132
|
+
For detailed installation instructions, see the [Installation Guide](https://nazdridoy.github.io/ngpt/installation.html).
|
133
|
+
|
113
134
|
## Usage
|
114
135
|
|
115
136
|
### As a CLI Tool
|
@@ -121,6 +142,12 @@ ngpt "Hello, how are you?"
|
|
121
142
|
# Interactive chat session with conversation history
|
122
143
|
ngpt -i
|
123
144
|
|
145
|
+
# Log conversation to a file
|
146
|
+
ngpt --interactive --log conversation.log
|
147
|
+
|
148
|
+
# Use custom system prompt to guide AI behavior
|
149
|
+
ngpt --preprompt "You are a Python programming tutor" "Explain decorators"
|
150
|
+
|
124
151
|
# Show version information
|
125
152
|
ngpt -v
|
126
153
|
|
@@ -157,6 +184,8 @@ ngpt -c "create a python function that calculates fibonacci numbers"
|
|
157
184
|
ngpt -t
|
158
185
|
```
|
159
186
|
|
187
|
+
For more CLI examples and detailed usage information, see the [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html).
|
188
|
+
|
160
189
|
### As a Library
|
161
190
|
|
162
191
|
```python
|
@@ -189,6 +218,8 @@ command = client.generate_shell_command("list all files")
|
|
189
218
|
code = client.generate_code("create a python function that calculates fibonacci numbers")
|
190
219
|
```
|
191
220
|
|
221
|
+
For more library examples and advanced usage, see the [Library Usage Guide](https://nazdridoy.github.io/ngpt/usage/library_usage.html).
|
222
|
+
|
192
223
|
#### Advanced Library Usage
|
193
224
|
|
194
225
|
```python
|
@@ -215,6 +246,8 @@ code = client.generate_code("function that converts Celsius to Fahrenheit")
|
|
215
246
|
print(code)
|
216
247
|
```
|
217
248
|
|
249
|
+
For advanced usage patterns and integrations, check out the [Advanced Examples](https://nazdridoy.github.io/ngpt/examples/advanced.html).
|
250
|
+
|
218
251
|
## Configuration
|
219
252
|
|
220
253
|
### Command Line Options
|
@@ -232,6 +265,8 @@ You can configure the client using the following options:
|
|
232
265
|
| `--temperature` | Set temperature (controls randomness, default: 0.7) |
|
233
266
|
| `--top_p` | Set top_p (controls diversity, default: 1.0) |
|
234
267
|
| `--max_length` | Set maximum response length in tokens |
|
268
|
+
| `--preprompt` | Set custom system prompt to control AI behavior |
|
269
|
+
| `--log` | Set filepath to log conversation to (for interactive modes) |
|
235
270
|
| `--config` | Path to a custom configuration file or, when used without a value, enters interactive configuration mode |
|
236
271
|
| `--config-index` | Index of the configuration to use (default: 0) |
|
237
272
|
| `--remove` | Remove the configuration at the specified index (requires --config and --config-index) |
|
@@ -243,6 +278,8 @@ You can configure the client using the following options:
|
|
243
278
|
| `-t, --text` | Open interactive multiline editor for complex prompts |
|
244
279
|
| `-v, --version` | Show version information |
|
245
280
|
|
281
|
+
For a complete reference of all available options, see the [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html).
|
282
|
+
|
246
283
|
### Interactive Configuration
|
247
284
|
|
248
285
|
The `--config` option without arguments enters interactive configuration mode, allowing you to add or edit configurations:
|
@@ -264,6 +301,8 @@ In interactive mode:
|
|
264
301
|
- For security, your API key is not displayed when editing configurations
|
265
302
|
- When removing a configuration, you'll be asked to confirm before deletion
|
266
303
|
|
304
|
+
For more details on configuring nGPT, see the [Configuration Guide](https://nazdridoy.github.io/ngpt/configuration.html).
|
305
|
+
|
267
306
|
### Configuration File
|
268
307
|
|
269
308
|
nGPT uses a configuration file stored in the standard user config directory for your operating system:
|
@@ -298,6 +337,8 @@ The configuration file uses a JSON list format, allowing you to store multiple c
|
|
298
337
|
]
|
299
338
|
```
|
300
339
|
|
340
|
+
For details on the configuration file format and structure, see the [Configuration Guide](https://nazdridoy.github.io/ngpt/configuration.html).
|
341
|
+
|
301
342
|
### Configuration Priority
|
302
343
|
|
303
344
|
nGPT determines configuration values in the following order (highest priority first):
|
@@ -47,8 +47,16 @@ ngpt --shell "list all files in the current directory"
|
|
47
47
|
|
48
48
|
# Use multiline editor for complex prompts
|
49
49
|
ngpt --text
|
50
|
+
|
51
|
+
# Use custom system prompt
|
52
|
+
ngpt --preprompt "You are a Linux expert" "How do I find large files?"
|
53
|
+
|
54
|
+
# Log your conversation to a file
|
55
|
+
ngpt --interactive --log conversation.log
|
50
56
|
```
|
51
57
|
|
58
|
+
For more examples and detailed usage, visit the [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html).
|
59
|
+
|
52
60
|
## Features
|
53
61
|
|
54
62
|
- ✅ **Dual Mode**: Use as a CLI tool or import as a Python library
|
@@ -61,6 +69,10 @@ ngpt --text
|
|
61
69
|
- 💻 **Shell Command Generation**: OS-aware command execution
|
62
70
|
- 🧩 **Clean Code Generation**: Output code without markdown or explanations
|
63
71
|
- 📝 **Rich Multiline Editor**: Interactive multiline text input with syntax highlighting and intuitive controls
|
72
|
+
- 🎭 **System Prompts**: Customize model behavior with custom system prompts
|
73
|
+
- 📃 **Conversation Logging**: Save your conversations to text files for later reference
|
74
|
+
|
75
|
+
See the [Feature Overview](https://nazdridoy.github.io/ngpt/overview.html) for more details.
|
64
76
|
|
65
77
|
## Documentation
|
66
78
|
|
@@ -68,6 +80,13 @@ Comprehensive documentation, including API reference, usage guides, and examples
|
|
68
80
|
|
69
81
|
**[https://nazdridoy.github.io/ngpt/](https://nazdridoy.github.io/ngpt/)**
|
70
82
|
|
83
|
+
Key documentation sections:
|
84
|
+
- [Installation Guide](https://nazdridoy.github.io/ngpt/installation.html)
|
85
|
+
- [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html)
|
86
|
+
- [Library Usage Guide](https://nazdridoy.github.io/ngpt/usage/library_usage.html)
|
87
|
+
- [Configuration Guide](https://nazdridoy.github.io/ngpt/configuration.html)
|
88
|
+
- [Examples & Tutorials](https://nazdridoy.github.io/ngpt/examples/basic.html)
|
89
|
+
|
71
90
|
## Installation
|
72
91
|
|
73
92
|
```bash
|
@@ -76,6 +95,8 @@ pip install ngpt
|
|
76
95
|
|
77
96
|
Requires Python 3.8 or newer.
|
78
97
|
|
98
|
+
For detailed installation instructions, see the [Installation Guide](https://nazdridoy.github.io/ngpt/installation.html).
|
99
|
+
|
79
100
|
## Usage
|
80
101
|
|
81
102
|
### As a CLI Tool
|
@@ -87,6 +108,12 @@ ngpt "Hello, how are you?"
|
|
87
108
|
# Interactive chat session with conversation history
|
88
109
|
ngpt -i
|
89
110
|
|
111
|
+
# Log conversation to a file
|
112
|
+
ngpt --interactive --log conversation.log
|
113
|
+
|
114
|
+
# Use custom system prompt to guide AI behavior
|
115
|
+
ngpt --preprompt "You are a Python programming tutor" "Explain decorators"
|
116
|
+
|
90
117
|
# Show version information
|
91
118
|
ngpt -v
|
92
119
|
|
@@ -123,6 +150,8 @@ ngpt -c "create a python function that calculates fibonacci numbers"
|
|
123
150
|
ngpt -t
|
124
151
|
```
|
125
152
|
|
153
|
+
For more CLI examples and detailed usage information, see the [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html).
|
154
|
+
|
126
155
|
### As a Library
|
127
156
|
|
128
157
|
```python
|
@@ -155,6 +184,8 @@ command = client.generate_shell_command("list all files")
|
|
155
184
|
code = client.generate_code("create a python function that calculates fibonacci numbers")
|
156
185
|
```
|
157
186
|
|
187
|
+
For more library examples and advanced usage, see the [Library Usage Guide](https://nazdridoy.github.io/ngpt/usage/library_usage.html).
|
188
|
+
|
158
189
|
#### Advanced Library Usage
|
159
190
|
|
160
191
|
```python
|
@@ -181,6 +212,8 @@ code = client.generate_code("function that converts Celsius to Fahrenheit")
|
|
181
212
|
print(code)
|
182
213
|
```
|
183
214
|
|
215
|
+
For advanced usage patterns and integrations, check out the [Advanced Examples](https://nazdridoy.github.io/ngpt/examples/advanced.html).
|
216
|
+
|
184
217
|
## Configuration
|
185
218
|
|
186
219
|
### Command Line Options
|
@@ -198,6 +231,8 @@ You can configure the client using the following options:
|
|
198
231
|
| `--temperature` | Set temperature (controls randomness, default: 0.7) |
|
199
232
|
| `--top_p` | Set top_p (controls diversity, default: 1.0) |
|
200
233
|
| `--max_length` | Set maximum response length in tokens |
|
234
|
+
| `--preprompt` | Set custom system prompt to control AI behavior |
|
235
|
+
| `--log` | Set filepath to log conversation to (for interactive modes) |
|
201
236
|
| `--config` | Path to a custom configuration file or, when used without a value, enters interactive configuration mode |
|
202
237
|
| `--config-index` | Index of the configuration to use (default: 0) |
|
203
238
|
| `--remove` | Remove the configuration at the specified index (requires --config and --config-index) |
|
@@ -209,6 +244,8 @@ You can configure the client using the following options:
|
|
209
244
|
| `-t, --text` | Open interactive multiline editor for complex prompts |
|
210
245
|
| `-v, --version` | Show version information |
|
211
246
|
|
247
|
+
For a complete reference of all available options, see the [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html).
|
248
|
+
|
212
249
|
### Interactive Configuration
|
213
250
|
|
214
251
|
The `--config` option without arguments enters interactive configuration mode, allowing you to add or edit configurations:
|
@@ -230,6 +267,8 @@ In interactive mode:
|
|
230
267
|
- For security, your API key is not displayed when editing configurations
|
231
268
|
- When removing a configuration, you'll be asked to confirm before deletion
|
232
269
|
|
270
|
+
For more details on configuring nGPT, see the [Configuration Guide](https://nazdridoy.github.io/ngpt/configuration.html).
|
271
|
+
|
233
272
|
### Configuration File
|
234
273
|
|
235
274
|
nGPT uses a configuration file stored in the standard user config directory for your operating system:
|
@@ -264,6 +303,8 @@ The configuration file uses a JSON list format, allowing you to store multiple c
|
|
264
303
|
]
|
265
304
|
```
|
266
305
|
|
306
|
+
For details on the configuration file format and structure, see the [Configuration Guide](https://nazdridoy.github.io/ngpt/configuration.html).
|
307
|
+
|
267
308
|
### Configuration Priority
|
268
309
|
|
269
310
|
nGPT determines configuration values in the following order (highest priority first):
|
@@ -106,6 +106,12 @@ ngpt --config-index 2 "Your prompt here"
|
|
106
106
|
|
107
107
|
# Control response generation parameters
|
108
108
|
ngpt --temperature 0.8 --top_p 0.95 --max_length 300 "Write a creative story"
|
109
|
+
|
110
|
+
# Set a custom system prompt (preprompt)
|
111
|
+
ngpt --preprompt "You are a Linux command line expert. Focus on efficient solutions." "How do I find the largest files in a directory?"
|
112
|
+
|
113
|
+
# Save conversation to a log file (for interactive modes)
|
114
|
+
ngpt --interactive --log conversation.log
|
109
115
|
```
|
110
116
|
|
111
117
|
## Environment Variables
|
@@ -61,6 +61,52 @@ response = client.chat("", messages=messages)
|
|
61
61
|
print(response)
|
62
62
|
```
|
63
63
|
|
64
|
+
Using preprompts in the CLI:
|
65
|
+
|
66
|
+
```bash
|
67
|
+
# Make the model respond as a specific expert
|
68
|
+
ngpt --preprompt "You are a Linux command line expert. Focus on efficient solutions." \
|
69
|
+
"How do I find the largest files in a directory?"
|
70
|
+
|
71
|
+
# Set content and formatting constraints
|
72
|
+
ngpt --preprompt "Your responses should be concise and include code examples." \
|
73
|
+
"How to parse JSON in JavaScript?"
|
74
|
+
|
75
|
+
# Create a specialized tutor for interactive sessions
|
76
|
+
ngpt --interactive --preprompt "You are a Python programming tutor. Explain concepts clearly and provide helpful examples."
|
77
|
+
```
|
78
|
+
|
79
|
+
### Conversation Logging
|
80
|
+
|
81
|
+
Save your conversation history to a file for reference:
|
82
|
+
|
83
|
+
```bash
|
84
|
+
# Basic interactive session with logging
|
85
|
+
ngpt --interactive --log python_tutoring.log
|
86
|
+
|
87
|
+
# Combine logging with custom system prompt
|
88
|
+
ngpt --interactive \
|
89
|
+
--preprompt "You are a data science expert helping analyze experimental results." \
|
90
|
+
--log data_analysis_session.log
|
91
|
+
|
92
|
+
# Log a focused session on a specific topic
|
93
|
+
ngpt --interactive \
|
94
|
+
--preprompt "You are helping plan the architecture for a microservices application." \
|
95
|
+
--log architecture_planning.log
|
96
|
+
```
|
97
|
+
|
98
|
+
The log file contains the complete conversation transcript, including:
|
99
|
+
- Session metadata (timestamp, command used)
|
100
|
+
- All user messages
|
101
|
+
- All AI responses
|
102
|
+
- System prompts when custom preprompts are used
|
103
|
+
|
104
|
+
This is particularly useful for:
|
105
|
+
- Documenting important planning discussions
|
106
|
+
- Saving educational sessions for later review
|
107
|
+
- Keeping records of complex problem-solving processes
|
108
|
+
- Sharing conversations with team members
|
109
|
+
|
64
110
|
## Advanced Conversation Management
|
65
111
|
|
66
112
|
### Managing Conversation History
|
@@ -42,6 +42,8 @@ Here are the most commonly used options:
|
|
42
42
|
| `-c, --code` | Generate clean code without markdown formatting |
|
43
43
|
| `-t, --text` | Open interactive multiline editor for complex prompts |
|
44
44
|
| `-v, --version` | Show version information |
|
45
|
+
| `--preprompt` | Set custom system prompt to control AI behavior |
|
46
|
+
| `--log` | Set filepath to log conversation to (for interactive modes) |
|
45
47
|
| `--web-search` | Enable web search capability (if supported by your API) |
|
46
48
|
| `--temperature` | Set temperature (controls randomness, default: 0.7) |
|
47
49
|
| `--top_p` | Set top_p (controls diversity, default: 1.0) |
|
@@ -73,6 +75,36 @@ This opens a continuous chat session where the AI remembers previous exchanges.
|
|
73
75
|
- Use arrow keys to navigate message history
|
74
76
|
- Press Ctrl+C to exit the session
|
75
77
|
|
78
|
+
You can log your conversation to a file for later reference:
|
79
|
+
|
80
|
+
```bash
|
81
|
+
ngpt -i --log conversation.log
|
82
|
+
```
|
83
|
+
|
84
|
+
This saves the entire conversation, including both user inputs and AI responses, to the specified file.
|
85
|
+
|
86
|
+
### Custom System Prompts
|
87
|
+
|
88
|
+
Use custom system prompts to guide the AI's behavior and responses:
|
89
|
+
|
90
|
+
```bash
|
91
|
+
ngpt --preprompt "You are a Linux command line expert. Focus on efficient solutions." "How do I find the largest files in a directory?"
|
92
|
+
```
|
93
|
+
|
94
|
+
This replaces the default "You are a helpful assistant" system prompt with your custom instruction.
|
95
|
+
|
96
|
+
You can also use custom prompts in interactive mode:
|
97
|
+
|
98
|
+
```bash
|
99
|
+
ngpt -i --preprompt "You are a Python programming tutor. Explain concepts clearly and provide helpful examples."
|
100
|
+
```
|
101
|
+
|
102
|
+
Custom prompts can be used to:
|
103
|
+
- Set the AI's persona or role
|
104
|
+
- Provide background information or context
|
105
|
+
- Specify output format preferences
|
106
|
+
- Set constraints or guidelines
|
107
|
+
|
76
108
|
### Generating Shell Commands
|
77
109
|
|
78
110
|
Generate and execute shell commands appropriate for your operating system:
|
@@ -192,6 +224,12 @@ ngpt -c --web-search "function to get current weather using an API"
|
|
192
224
|
|
193
225
|
# Use a specific model and no streaming
|
194
226
|
ngpt --model gpt-4o-mini -n "Explain quantum entanglement"
|
227
|
+
|
228
|
+
# Interactive session with custom prompt and logging
|
229
|
+
ngpt -i --preprompt "You are a data science tutor" --log datasci_tutoring.txt
|
230
|
+
|
231
|
+
# Constrain output format with a custom system prompt
|
232
|
+
ngpt --preprompt "Your responses should be concise and include code examples." "How to parse JSON in JavaScript?"
|
195
233
|
```
|
196
234
|
|
197
235
|
### Using a Custom Configuration File
|
@@ -268,6 +306,9 @@ ngpt "Explain quantum computing for beginners"
|
|
268
306
|
|
269
307
|
# Get current information (with web search)
|
270
308
|
ngpt --web-search "What are the latest advancements in AI?"
|
309
|
+
|
310
|
+
# Learn with a specialized tutor using custom prompt
|
311
|
+
ngpt --preprompt "You are an expert physicist explaining concepts to a beginner. Use analogies and simple language." "Explain quantum entanglement"
|
271
312
|
```
|
272
313
|
|
273
314
|
### Productivity
|
@@ -279,6 +320,9 @@ ngpt -s "find large files over 100MB and list them by size"
|
|
279
320
|
# Create a structured document
|
280
321
|
ngpt -t
|
281
322
|
# (Enter multiline text for generating a complex document)
|
323
|
+
|
324
|
+
# Log an important session for reference
|
325
|
+
ngpt -i --log project_planning.log --preprompt "You are a project management expert helping plan a software project"
|
282
326
|
```
|
283
327
|
|
284
328
|
## Troubleshooting
|
@@ -85,7 +85,7 @@ def check_config(config):
|
|
85
85
|
|
86
86
|
return True
|
87
87
|
|
88
|
-
def interactive_chat_session(client, web_search=False, no_stream=False, temperature=0.7, top_p=1.0, max_length=None, log_file=None):
|
88
|
+
def interactive_chat_session(client, web_search=False, no_stream=False, temperature=0.7, top_p=1.0, max_length=None, log_file=None, preprompt=None):
|
89
89
|
"""Run an interactive chat session with conversation history."""
|
90
90
|
# Define ANSI color codes for terminal output
|
91
91
|
COLORS = {
|
@@ -146,11 +146,16 @@ def interactive_chat_session(client, web_search=False, no_stream=False, temperat
|
|
146
146
|
print(f"\n{separator}\n")
|
147
147
|
|
148
148
|
# Initialize conversation history
|
149
|
-
system_prompt = "You are a helpful assistant."
|
149
|
+
system_prompt = preprompt if preprompt else "You are a helpful assistant."
|
150
150
|
conversation = []
|
151
151
|
system_message = {"role": "system", "content": system_prompt}
|
152
152
|
conversation.append(system_message)
|
153
153
|
|
154
|
+
# Log system prompt if logging is enabled
|
155
|
+
if log_handle and preprompt:
|
156
|
+
log_handle.write(f"System: {system_prompt}\n\n")
|
157
|
+
log_handle.flush()
|
158
|
+
|
154
159
|
# Initialize prompt_toolkit history
|
155
160
|
prompt_history = InMemoryHistory() if HAS_PROMPT_TOOLKIT else None
|
156
161
|
|
@@ -326,6 +331,8 @@ def main():
|
|
326
331
|
help='Set max response length in tokens')
|
327
332
|
global_group.add_argument('--log', metavar='FILE',
|
328
333
|
help='Set filepath to log conversation to (For interactive modes)')
|
334
|
+
global_group.add_argument('--preprompt',
|
335
|
+
help='Set preprompt')
|
329
336
|
|
330
337
|
# Mode flags (mutually exclusive)
|
331
338
|
mode_group = parser.add_argument_group('Modes (mutually exclusive)')
|
@@ -486,7 +493,7 @@ def main():
|
|
486
493
|
# Interactive chat mode
|
487
494
|
interactive_chat_session(client, web_search=args.web_search, no_stream=args.no_stream,
|
488
495
|
temperature=args.temperature, top_p=args.top_p,
|
489
|
-
max_length=args.max_length, log_file=args.log)
|
496
|
+
max_length=args.max_length, log_file=args.log, preprompt=args.preprompt)
|
490
497
|
elif args.shell:
|
491
498
|
if args.prompt is None:
|
492
499
|
try:
|
@@ -543,7 +550,6 @@ def main():
|
|
543
550
|
print(f"\nGenerated code:\n{generated_code}")
|
544
551
|
|
545
552
|
elif args.text:
|
546
|
-
# Multi-line text input mode
|
547
553
|
if args.prompt is not None:
|
548
554
|
prompt = args.prompt
|
549
555
|
else:
|
@@ -651,9 +657,18 @@ def main():
|
|
651
657
|
sys.exit(130)
|
652
658
|
|
653
659
|
print("\nSubmission successful. Waiting for response...")
|
660
|
+
|
661
|
+
# Create messages array with preprompt if available
|
662
|
+
messages = None
|
663
|
+
if args.preprompt:
|
664
|
+
messages = [
|
665
|
+
{"role": "system", "content": args.preprompt},
|
666
|
+
{"role": "user", "content": prompt}
|
667
|
+
]
|
668
|
+
|
654
669
|
response = client.chat(prompt, stream=not args.no_stream, web_search=args.web_search,
|
655
670
|
temperature=args.temperature, top_p=args.top_p,
|
656
|
-
max_tokens=args.max_length)
|
671
|
+
max_tokens=args.max_length, messages=messages)
|
657
672
|
if args.no_stream and response:
|
658
673
|
print(response)
|
659
674
|
|
@@ -668,9 +683,18 @@ def main():
|
|
668
683
|
sys.exit(130)
|
669
684
|
else:
|
670
685
|
prompt = args.prompt
|
686
|
+
|
687
|
+
# Create messages array with preprompt if available
|
688
|
+
messages = None
|
689
|
+
if args.preprompt:
|
690
|
+
messages = [
|
691
|
+
{"role": "system", "content": args.preprompt},
|
692
|
+
{"role": "user", "content": prompt}
|
693
|
+
]
|
694
|
+
|
671
695
|
response = client.chat(prompt, stream=not args.no_stream, web_search=args.web_search,
|
672
696
|
temperature=args.temperature, top_p=args.top_p,
|
673
|
-
max_tokens=args.max_length)
|
697
|
+
max_tokens=args.max_length, messages=messages)
|
674
698
|
if args.no_stream and response:
|
675
699
|
print(response)
|
676
700
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "ngpt"
|
3
|
-
version = "2.
|
3
|
+
version = "2.3.0"
|
4
4
|
description = "A lightweight Python CLI and library for interacting with OpenAI-compatible APIs, supporting both official and self-hosted LLM endpoints."
|
5
5
|
authors = [
|
6
6
|
{name = "nazDridoy", email = "nazdridoy399@gmail.com"},
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|