hey, I am Jemma. I convert your thoughts to code
I take an idea in a form of:
- a few words, such as "
Bill Pay Service
", "2048
" or "Kanban Board
" - OR a text file with requirements
and I create a web based prototype 🚀
in fact I just created all three 👆 (so you can quickly see what I mean):
after the prototype is built, I take feedback and refactor it.
I also dabble in converting sketches to web app mockups:
$ jemma --prompt "Learning Portal" --sketch ~/tmp/sketch.png --build-prototype --claude
![image](https://private-user-images.githubusercontent.com/136575/326650529-e7da9bb4-71ab-4e1e-ab11-c89217b921c3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2MjU2MzksIm5iZiI6MTczOTYyNTMzOSwicGF0aCI6Ii8xMzY1NzUvMzI2NjUwNTI5LWU3ZGE5YmI0LTcxYWItNGUxZS1hYjExLWM4OTIxN2I5MjFjMy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNVQxMzE1MzlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04YjMwNDgxNWYyYzk4YWM2MDNkNjA1ZTdjYTYzN2YyOTNiMmM2NTU2YTU2Zjc5ZmYyMGM1ZWM5NTgyY2M4YjEwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.KOa3goASIAY3xFedBwKn06gPluWSa2MDVhfNRM_c1Fw)
this does require one or two hints of feedback, but I'm getting better
of course!
$ pip install jemma
add a ".env
" file from where I am going to be called from with API keys of your choice:
export ANTHROPIC_API_KEY=sk-ant-api03...
export OPENAI_API_KEY=sk-puk...
export REPLICATE_API_TOKEN=r8_ai...
ready to rock! 🤘
$ jemma --prompt "Bill Pay Service" --build-prototype --claude
I will assemble a team who will build a prototype, open a browser with it, and wait for your feedback:
Claude 🧠 claude-3-haiku-20240307 ✅
> Project Manager:
Dear Business Owner, in this meeting we'll work on creating requirements based on the 💡 idea
> Business Owner: 📚 creating detailed requirements ...🖋️
> Project Manager:
Dear Engineer, in this meeting let's put our heads together to build a prototype based on the requirements.
> Engineer: 💫 creating a prototype based on the requirements...
> Engineer: crafting css 🎨 (a.k.a. "visual beauty")
> Engineer: cooking javascript 🎮 (a.k.a. "master of interactions")
> Engineer: creating html 🕸️ (a.k.a. "the skeleton of the web")
prototype files created successfully:
- prototype/index.html
- prototype/app.js
- prototype/app.css
opened prototype in the web browser
tell me how to make it better >
I rely on my team of project managers, business owners and engineers
yes... "AI Agents"
When I get an idea a Project Manager meets with a Business Owner to take it in and create a comprehensive set of requirements
then the Project Manager meets with an Engineer to build the idea based on these new requirements.
I best work with Claude models, that is why my examples all end in "--claude
":
$ jemma --prompt "Trivia Game" --build-prototype --claude
by default though I will call Ollama (llama3 model):
$ jemma --prompt "Trivia Game" --build-prototype
Ollama 🧠 llama3:8b-instruct-fp16 ✅
here are the default models I would use:
model param | default model |
---|---|
--claude |
claude-3-haiku-20240307 |
--openai |
gpt-3.5-turbo |
--ollama |
llama3:8b-instruct-fp16 |
--replicate |
meta/meta-llama-3-70b-instruct |
--copilot |
gpt-3.5-turbo |
but you can override all of these with your (local, or not) models:
$ jemma --prompt "Trivia Game" --build-prototype --claude claude-3-opus-20240229
$ jemma --prompt "Trivia Game" --build-prototype --ollama dolphin-mistral:7b-v2.6-dpo-laser-fp16
$ jemma --prompt "Trivia Game" --build-prototype --openai gpt-4-turbo-preview
$ jemma --prompt "Trivia Game" --build-prototype --replicate meta/llama-2-70b-chat
$ jemma --prompt "Trivia Game" --build-prototype --copilot gpt-4
$ ...
but, at least for now, the best results are produced with Claude based models
I am still learning, so some prototypes that I build might result in errors
this would especially be likely with non Claude based models
but, we are all learning, and I love feedback:
tell me how to make it better > I see an error "app.js:138: uncaught TypeError: chordProgressionData.find(...) is undefined"
> Project Manager:
Dear Engineer, we have met with the user and received a valuable feedback. sudo make it better! 🛠️
> Engineer: 💫 refactoring prototype based on the feedback...
> Engineer: ♻️ crafting css 🎨 (a.k.a. "visual beauty")
> Engineer: ♻️ cooking javascript 🎮 (a.k.a. "master of interactions")
> Engineer: ♻️ creating html 🕸️ (a.k.a. "the skeleton of the web")
prototype files created successfully:
- prototype/index.html
- prototype/app.js
- prototype/app.css
opened prototype in the web browser
tell me how to make it better >
you can check for / find errors in your browser console
iff you know "how to HTML", you can help fix the code as well
it is often something simple: adding a CSS class, updating the "width", etc.
in order to run from source
clone jemma:
$ git clone [email protected]:tolitius/jemma.git
and
$ cd jemma
$ python huddle.py --prompt "Code Editor" --build-prototype --claude
Claude 🧠 claude-3-haiku-20240307 ✅
...
Copyright © 2024 tolitius
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.