We’re Leon and Jingrui, and we’re excited to share our project: PromptDoggy. It’s a prompt management tool designed to streamline collaboration between product and engineering teams when building LLM apps.
Key features:
- Prompt management dashboard for product managers: Product managers can write prompts and deploy them to different environments, such as development or production.
- APIs for engineers to fetch prompts: Engineers can retrieve prompts by name through the API.
- Copilot textarea: Inspired by GitHub Copilot, we implemented a similar experience to see if it could benefit product managers.
- Static prompts: For prompts that don’t change often, such as system prompts, you can mark them as static. This allows filtering in the API and caching during the CI process.
- Hosting prompts on S3 and accessing them through CloudFront: This setup provides faster access and enables you to host PromptDoggy on a low-cost server without worrying about concurrency issues.
- Encryption: All prompts are encrypted in the database and are client-encrypted when uploaded to S3. We believe prompts are a vital secret for any LLM app, with PMs and engineers spending countless hours tweaking and testing them. We want to ensure they are secure and inaccessible to others.
Why we built it:
We’re both product managers (I was an engineer before). We had an idea about a product manager copilot and worked on it for a while before moving on.
1. Prompt collaboration challenges: Jingrui designed the prompts, and I had to manually copy and paste them into my code before testing and deploying. This back-and-forth process was inefficient and frustrating.
2. Difficulty managing prompts: As we developed rapidly, prompts were scattered throughout the code, leading to duplication and hardcoding. This made management and debugging a nightmare. Eventually, I wrote a PromptManager class to centralize and organize prompts using a hash map.
Why I chose Ruby despite the AI trend toward Python:
Ruby and Rails make me happy. I first encountered Ruby while working as an SDE at Udacity, responsible for our payment system. Before that, I was a Golang engineer. I was fascinated by the magic of Rails and felt energized when writing apps with it. While Python might be more convenient in the short term, I believe this happiness will sustain me for much longer and help me contribute more to the community.
Inspirations:
There are some fantastic products in this field that I really respect:
- https://github.com/Agenta-AI/agenta
- https://github.com/pezzolabs/pezzo
I also want to thank CopilotKit (https://github.com/CopilotKit/CopilotKit) for teaching me the philosophy of implementing a copilot textarea. I wish I could have used the project directly, but integrating just one React component into Rails while keeping importmap and StimulusJS was quite challenging. Given the limited time, I decided to move on with StimulusJS.
This is our first time building an open-source project to share with the world, and we’re a bit nervous about it.
We’d love to hear your thoughts. If you’re facing any problems related to this field, feel free to schedule a quick call or email us.