Usage#
This guide covers common usage patterns and examples for gptme.
To start a new chat or select an existing one, run:
gptme
This will show you a list of past chats, allowing you to select one or start a new one.
To get inspiration for your first prompt, see the Examples.
Commands#
You can use these slash-commands for various actions within the chat:
/undo
- Undo the last action/log
- Show the conversation log/tools
- Show available tools/edit
- Edit the conversation in your editor/rename
- Rename the conversation/fork
- Create a copy of the conversation/summarize
- Summarize the conversation/replay
- Re-execute codeblocks in the conversation/help
- Show help message/exit
- Exit the program
Interfaces#
Besides the CLI, gptme can be used through:
Web UI - A web-based interface
GitHub Bot - GitHub bot integration
For more detailed information about specific features, check out:
Features#
Tools
gptme comes with a variety of tools for different tasks:
Shell - Execute shell commands
Python - Run Python code
Browser - Browse and interact with web content
Vision - Process and analyze images
See the Tools page for a complete list of available tools.
Writing Files#
You can ask the assistant to create new files or modify existing ones:
User |
create a new file named life.py implementing the game of life |
Assistant |
Certainly! I'll create a new file named `life.py` implementing Conway's Game of Life. This implementation will use NumPy for efficient array operations and Matplotlib for visualization. Here's the code: |
System |
Saved to life.py |
Making Changes#
You can start chats and request changes directly from the command line. The contents of any mentioned text files will be included as context, and the assistant will generate patches to apply the requested changes:
gptme 'make improvements to life.py so that dead cells fade out over time'
User |
make improvements to life.py so that dead cells fade out over time |
Assistant |
To make alive cells green and dead cells black in the Game of Life simulation, we need to modify the colormap and how we represent the cell states. Here's the updated `life.py` script with these changes: |
System |
Patch applied |
Browser Integration#
With the Browser extras installed, the assistant can read URLs (included in the prompt or with its read_url
tool) and “see” web pages by taking screenshots and viewing them.
Multiprompt syntax#
The -
separator allows you to chain multiple prompts together, letting the assistant finish running tools for one prompt before moving on to the next:
gptme 'create a project' - 'add tests' - 'commit changes'
This is particularly useful for breaking down complex tasks into steps and creating Automation workflows.
Skip confirmation prompts#
You can skip confirmation prompts using the --no-confirm
flag. This is useful when you are confident the LLM will do what you want, so you don’t want to have to confirm actions:
gptme --no-confirm 'create a snake game using curses in snake.py, dont run it'
Non-interactive mode#
The --non-interactive
flag runs gptme in a mode that terminates after completing all prompts. This is useful for scripting and automation:
gptme --non-interactive 'create a snake game using curses in snake.py, dont run it' '-' 'make the snake green and the apple red'
Note: --non-interactive
implies --no-confirm
, so you don’t need to specify both.
Pre-commit Integration#
gptme integrates with pre-commit to catch code quality issues early. When enabled, it will automatically run pre-commit checks after file modifications, right before yielding control back to the user, to let the assistant address issues without human intervention.
Enabled automatically if a
.pre-commit-config.yaml
exists in any parent directoryCan be explicitly enabled/disabled with
GPTME_CHECK=true/false
Runs after file modifications to catch issues early
Shows output in conversation when issues are found
Distinguishes between automatically fixed issues and those requiring manual fixes
Example workflow:
User |
create a new file named main.py with a simple function |
Assistant |
Sure! I'll create a new file named `main.py` with a simple function that adds two numbers together. Here's the code: |
System |
Saved to main.py |
Assistant |
I have created the file. |
System |
Pre-commit checks failed |
Assistant |
Typechecks failed, I'll update the function to use type hints. |
System |
Patch applied |
Assistant |
Great, the typecheck should now pass. |
For further usage examples, see the Examples page.