AI prompts
base on GitHub-Powered AI for effortless development. Start as an open-source alternative to v0.dev. <p align="center">
<img width="150px" height="150px" src="./preview-ui/public/logo.png">
</p>
# Dewhale
Dewhale is a GitHub-Powered AI for effortless development.
[中文文档](./README.zh_CN.md)
> If you are looking for vx.dev, check our [rebranding discussion](https://github.com/Yuyz0112/dewhale/discussions/189).
## Quick Start
For detailed instructions on how to set up and use Dewhale, please refer to our [Guide](./docs/quick-start.md).
> With the power of our quota management feature, we allow stargazers to have 3 trials.
You can also watch this [demo video](http://www.youtube.com/watch?v=J4LAOBRcu2c).
More examples can be found in the [issue list](https://github.com/Yuyz0112/dewhale/issues?q=is%3Aissue+label%3Aui-gen%2Cvue-ui-gen).
## Features
### Lower Usage Costs
Dewhale utilizes prompt engineering techniques under the GPT-4 model to issue commands. The main cost involves the number of input and completion tokens. Our current prompt, found in [prompts/ui-gen.md](./prompts/ui-gen.md), includes instructions for [shadcn/ui](https://ui.shadcn.com/), [lucide](https://lucide.dev/), and [nivo charts](https://nivo.rocks/).
If you do not need certain components (e.g., charts), you can reduce the API cost per generation by removing instructions from the prompt.
And you can also switch to other AI models for lower usage costs.
### Easy Customization
Since Dewhale's prompt is open-sourced, you can refer to the existing prompt and replace it with other UI component libraries or coding styles as per your requirements.
You can also customize the whole workflow by yourself, e.g., a v0.dev-like Web App, and just use Dewhale's prompt as a core.
### Seamless GitHub Integration
The generated code is stored on GitHub, inherently equipped with version control, code review, and collaborative features.
Additionally, you can use a private repo to keep your code generation results visible only to collaborators.
## How It Works
To understand the underlying architecture and workings of Dewhale, please see our detailed [Architecture Overview](./docs/architecture.md).
## Join the Discussions
If you like the design philosophy of Dewhale, feel free to join our [Github Discussions](https://github.com/Yuyz0112/dewhale/discussions).
", Assign "at most 3 tags" to the expected json: {"id":"7178","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"