Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/iamgreggarcia/codesherpa
A code interpreter and ChatGPT plugin.
https://github.com/iamgreggarcia/codesherpa
chatgpt-plugin code-interpreter fastapi gpt-4 gpt-4-0613 nextjs python
Last synced: 2 months ago
JSON representation
A code interpreter and ChatGPT plugin.
- Host: GitHub
- URL: https://github.com/iamgreggarcia/codesherpa
- Owner: iamgreggarcia
- License: mit
- Created: 2023-05-07T01:36:43.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-08-12T00:44:49.000Z (over 1 year ago)
- Last Synced: 2024-08-02T01:20:03.415Z (6 months ago)
- Topics: chatgpt-plugin, code-interpreter, fastapi, gpt-4, gpt-4-0613, nextjs, python
- Language: TypeScript
- Homepage:
- Size: 17.7 MB
- Stars: 250
- Watchers: 7
- Forks: 33
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ChatGPT-repositories - codesherpa - A code interpreter and ChatGPT plugin (Browser-extensions)
README
# codesherpa
**codesherpa** is a code interpreter **ChatGPT plugin** and a **standalone** code interpreter (_**experimental**_). Read the [Quickstart section](#quickstart) to try it out.
### You can use it as a
- code interpreter plugin with ChatGPT
- API for ChatGPT to run and execute code with file persistance and no timeout
- standalone code interpreter (_**experimental**_).
- Using OpenAI's [GPT function calling](https://platform.openai.com/docs/guides/gpt/function-calling), I've tried to recreate the experience of the ChatGPT Code Interpreter by using `functions`. For many reasons, there is a significant difference between this implementation and the ChatGPT Code Interpreter created by OpenAI. It's still very buggy and inconsistent, but I wanted to release it for those interested.Standalone code interpreter demo:
https://github.com/iamgreggarcia/codesherpa/assets/16596972/96cb0694-fec6-4046-99d6-2e141b2a853f
ChatGPT Plugin demo:
https://github.com/iamgreggarcia/codesherpa/assets/16596972/b7afb034-6b74-42a3-9496-a912bcaf0f66
See more [examples here](#examples)
## Recent Updates
- **July 13, 2023**:
- A basic standalone UI is now available. Read the [Quickstart section](#quickstart) to try it (requires an OpenAI API key). _NOTE_: expect **many** bugs and shortcomings, especially if you've been binging OpenAI's Code Interpreter since its been made generally available to Plus subscribers
- New contributions from [emsi](https://github.com/emsi) [(#18)]([Title](https://github.com/iamgreggarcia/codesherpa/pull/18)) and [PeterDaveHello](https://github.com/PeterDaveHello) [(#28)](https://github.com/iamgreggarcia/codesherpa/pull/28)! 👏
- **June 21, 2023**:
- The ChatGPT plugin service will now fetch the `openapi.json` generated be the server. Also added [request example data](https://fastapi.tiangolo.com/tutorial/schema-extra-example/) which is included in the api spec. This reduces the size of the plugin manifest `description_for_model`.
- Updated the README section on future work.Previous Updates
- **June 18, 2023**: Added `docker-compose.yml`
- **May 31, 2023**: Introduced new file upload interface via `upload.html` and corresponding server endpoint, allowing you to upload files at `localhost:3333/upload` or by telling ChatGPT you want to upload a file or have a file you want to work with: ![upload-demo](https://github.com/iamgreggarcia/codesherpa/assets/16596972/bb1bcadf-7152-44fb-becb-f571094cbf56) Refactored Python code execution using `ast` module for enhanced efficiency. Local server and manifest file updates to support these features. Minor updates to REPL execution, error handling, and code formatting.
- **May 22, 2023**: Refactored README to provide clear and concise instructions for building and running codesherpa.
- **May 20, 2023**: codesherpa now supports multiple programming languages, including Python, C++, and Rust.## Quickstart
### NEW: Standalone code interpreter (experimental)
To try the new chat interface:
```bash
# Clone the repository
git clone https://github.com/iamgreggarcia/codesherpa.git
```
Add your `OPENAI_API_KEY` to a copy of `.env.example`:
```bash
cd codesherpa/frontend
cp .env.example .env.local
```Install dependencies and startup the Next.js app:
```bash
pnpm install
pnpm dev
```
OR```bash
npm install
npm run dev
```
Download the docker image OR run the codesherpa API locally (beware!):Docker image:
```bash
# Pull the Docker image
docker pull ghcr.io/iamgreggarcia/codesherpa:latest# Run the Docker image locally
docker compose up
```Run the server locally (potentially risky!):
```bash
cd codesherpa
make dev
```Navigate to `http://localhost:3000`. Expect bugs and inconsistencies.
### Installation and Running codesherpa as a ChatGPT Plugin
### Prerequisites
Ensure the following software is installed on your system:
- Python 3.10
- Docker
- Docker Compose (optional). Download Docker Desktop or the plugin to use Docker Compose
- Pluin:
- [Linux](https://docs.docker.com/compose/install/#scenario-two-install-the-compose-plugin)
- Desktop:
- [Linux](https://docs.docker.com/desktop/install/linux-install/)
- [Mac](https://docs.docker.com/desktop/install/mac-install/)
- [Windows](https://docs.docker.com/desktop/install/windows-install/)**Option 1: Using Docker image from Github Packages**
```bash
# Pull the Docker image
docker pull ghcr.io/iamgreggarcia/codesherpa:latest# Run the Docker image locally
docker compose up
```**Option 2: Using the repository and Make commands**
```bash
# Clone the repository
git clone https://github.com/iamgreggarcia/codesherpa.git# Navigate to the repository directory
cd codesherpa# Build the Docker image using Make
make build-docker# Run the Docker image locally
make run-docker-localserver
```**Option 3: Using the repository and Docker commands**
Instead of Make commands, you can use the following Docker commands directly or use Docker Compose
```bash
# Clone the repository
git clone https://github.com/iamgreggarcia/codesherpa.git# Navigate to the repository directory
cd codesherpa# Build the Docker image
docker build -t codesherpa .# Run the Docker image locally
docker run -p 3333:3333 codesherpa python3 -c "import localserver.main; localserver.main.start()"# OR use Docker Compose
docker compose up
```Whichever option you choose, codesherpa will be accessible at [localhost:3333](http://localhost:3333).
### Connecting codesherpa to ChatGPT
1. Navigate to the ChatGPT UI, and access the plugin store.
2. Select "Develop your own plugin".
3. In the plugin URL input, enter `localhost:3333`. Your ChatGPT should now be able to use codesherpa's features.## Examples
Below are some examples. Please note that portions of these videos are edited and/or sped up for brevity.
### Ploting a vector field on a sphere creating an animated gif (short):
https://github.com/iamgreggarcia/codesherpa/assets/16596972/a42d717c-a996-4622-a5d1-139466cad233### Demo of the Demo: Recreating the ChatGPT Code Interpreter Video Demo
Most of us have seen the [ChatGPT Code Interpreter Video Demo](https://openai.com/blog/chatgpt-plugins#code-interpreter), which is the inspiration for this project. So I thought it fitting to ask similar questions as those in the OpenAI video demo.- Asking about properties of the function `1/sin(x)`:
https://github.com/iamgreggarcia/codesherpa/assets/16596972/111e7e25-a5b0-4d7e-9ffb-dee5e844cafd
- Uploading a [music.csv](https://corgis-edu.github.io/corgis/csv/music/) dataset for analysis and visualization. [View the ChatGPT conversation](https://chat.openai.com/share/ee480269-ee72-4104-a1fa-2f11e881055b)
https://github.com/iamgreggarcia/codesherpa/assets/16596972/5e9a3b6a-b004-434b-aaba-715d7d53e54d
## Future Work
- Improve the UI (maybe). The UI needs a lot of love:
- multi-conversation support
- previous message editing
- granular control over parameters
- consistent function call rendering## Contributing
I welcome contributions! If you have an idea for a feature, or want to report a bug, please open an issue, or submit a pull request.
Steps to contribute:
1. Fork this repository.
2. Create a feature branch `git checkout -b feature/YourAmazingIdea`.
3. Commit your changes `git commit -m 'Add YourAmazingIdea'`.
4. Push to the branch `git push origin feature/YourAmazingIdea`.
5. Submit a Pull Request.## Disclaimer
**codesherpa** is independently developed and not affiliated, endorsed, or sponsored by OpenAI.
## License
This project is licensed under the terms of the MIT license.