OpenAI API Interface
Abandoned project. It was intended to offer a simple and user-friendly interface to the OpenAI API.
Project conception
The application aimed to support the OpenAI API for text models, audio models, and image models, all through a user-friendly interface. Additionally, it would to offer features such as token management, code syntax highlighting, custom prompt bindings, chat history, text-to-speech in real-time or from an MP3 file, image generation, image cropping, and generating new content in place of cropped images.
The project was realized as a holiday challange in tkinter library in Python.
Why abandoning the project?
When I started working on this project, the playground from OpenAI was not as developed as it is now. Code returned from prompts was not highlighted and it was hard to read. Also playground was not supporting audio and image models. It was many features that I want to used, but their was not implemented. So I decide to create my own interface with additional features.
After some time, OpenAI released new versions of the playground with many features that I wanted to implement in my project. Also I realized that I was spending more time on GUI programming than on other essential features. As a result, I decided to abandon my project.
Summary of project
Although I didn't finish the project, I learned a lot about software development. Working on this project learned me how to use custom libraries and read their code thoroughly for custom modifications. The breakthrough moment was when I figured out how to solve my problem and could help someone on GitHub issues section. At that moment, I felt that I could contribute to building someone else's software, which was very motivating.Additionally, I realized that using any API is not as difficult as it might seems, and I discovered how to build a GUI using the Tkinter Python library.
On the other hand, I used some design patterns, such as the Factory pattern, but at that time, they were not very clear to me. I applied them unconsciously back then. Additionally, my code was not as clean as it should have been. Since then, I have learned a lot about clean code practices and design patterns. My code wasn't divided into modules, making it difficult to read and modify. Now, I understand that I should separate the GUI from the logic using the MVC pattern.