【调研】通过Create.xyz的AIGC能力生产前端页面
Sep 28, 2024笔记ai通过Create.xyz的AIGC能力生产前端页面
介绍
Create是什么?
Turn your words into sites, components, and tools - built with code.
Create是一种新的人工智能创意工具,可以让任何人用自然语言进行构建。你可以用它来制作组件、网站、工具和应用程序。只要描述你想要它们的外观和工作方式,Create将用户的描述转化为实际的代码,实现所见即所得的设计理念。
效果图:
Create有哪些能力?
Create.xyz的核心能力在于其能够理解自然语言描述(prompts),并将其转化为代码,生成静态页面和简单的CRUD页面。以下是其主要特点:
- 自然语言/图片转代码:用户可以通过描述或上传图片来生成页面。
- 代码生成:将描述转化为代码,支持组件和API的生成。
- 多模态支持:支持将图片转换为代码,实现Screenshot to App的功能。
1.结合大模型能力,将描述(prompt)转化为代码
Create turns your descriptions into code, so it looks and work how you want.
E.g. “Create a Table to describe user’s info.”, “创建一个股票列表组件”
1.1 生成组件Components
Quickly make components to build powerful projects or match your brand
E.g. “A pie chart to show the distribution.”, “根据图片信息生成一个列表组件”
1.2 生成接口API
Bring your own REST API.Upload your Swagger docs and have Create build you a tool that talks to your own custom APIs.
Create的数据生成从结果来看相对简单,目测是在prompt中约束了使用fetch API以及增加了自己数据库的调用信息和表信息(text2sql方式)。另外我们也可以指定要ajax请求某个接口,但需要在描述中解释清楚接口出入参信息。
E.g.”查询用户所有数据”(需要打database标签)
1 | fetch('/api/db/tempdata', { |
1.3 (平台能力)托管代码和页面部署能力
产生可直接访问的地址,如https://www.create.xyz/app/4cafb2c9-ba16-4288-984d-9a59ea102eab
2.多模态,将图片转换为代码
Screenshot to app,Drop an image of what you want into your description to build it
Create的综合评估
stage2.5的形式(介于低代码到完全aigc之间)。
主要优势是产品形态(工作台)很完备、确实可以在这个工作台通过ai生成+修改完成简单页面的创建,主要问题是生成的组件几乎是“非受控”、“一次性”的、不太能复用(这个问题平台可以通过工程手段解决)。
输入:图片或需求prompt
输出:是代码(React组件+tailwind原子类css)、非DSL
能力实现概括:基于claude/gpt-4等模型生成UI组件/模块的代码
UI能力:支持“原子组件”、“模块”、“应用页面”的代码生成和静态组装
事件交互:仅支持简单事件的配置生成(点击跳转),前端没有状态管理能力
数据处理:默认生成的结果是静态“假”数据,需要在prompt声明调xxx接口才会改为取接口形式(结果需要修改);和大多低码平台一样开放了Database能力、可进行数据的存取(prompt2sql)
Create的实现
整体使用下来,Create的生产公式为:
1 | Page = Components + Functions + Datas(database) + *Assets |
→ Sites or Apps = Page1 + Page2…
Create核心的代码生成能力没有自训练模型,而是使用了Claude Sonnet3.5、gpt4等模型API,因此虽然具体实现是闭源黑盒的、但实现会类似于screenshot-to-code之类的通过区分生成场景、指令要求和控制上下文来把控生成效果。
实现思路:
1.自上而下拆分、渐进明细
- 自上而下进行需求拆分
- 根据需求进行prompt拆分、泛化及转换
2.推崇组件生产模式:
- 组件生产的工程方式能力更强,You can create much more powerful apps if you break your project into components.
- 推荐prompt不应该太复杂,如果复杂,拆到组件:If it gets too long or complex, you can move things into components to build up.
原子能力(Component、Function、Database)的实现
1.1 Component组件
组件的产物代码为 React + Tailwind CSS 技术栈、遵循 函数式组件 + UI受控组件的 编码模式。
- 优点:灵活,发挥空间大
- 问题:比较难受控,生产的组件是“一次性”的、不太能复用(这个问题平台可以通过工程手段解决)
E.g.
1 | function MainComponent({ stockData }) { |
对应解析后的prompt:
1 | Background color: White |
底层prompt感觉可以参考screenshot-to-code的prompt:
1 | """ |
1.2 Database数据
这部分处理相对简单,fetch API + REST api + Text2Sql 模式
代码如:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51React.useEffect(() => {
fetch('/api/db/tempdata', {
method: 'POST',
body: JSON.stringify({
query: 'SELECT * FROM `users`'
})
})
.then(response => response.json())
.then(data => {
setUsers(data.result);
});
}, []);
const addUser = (name, score) => {
fetch('/api/db/tempdata', {
method: 'POST',
body: JSON.stringify({
query: "INSERT INTO `users` (`name`, `score`) VALUES (?, ?)",
values: [name, score]
})
})
.then(() => {
setUsers([...users, { id: Date.now(), name, score }]);
});
};
const deleteUser = (userId) => {
fetch('/api/db/tempdata', {
method: 'POST',
body: JSON.stringify({
query: "DELETE FROM `users` WHERE `id` = ?",
values: [userId]
})
})
.then(() => {
setUsers(users.filter(user => user.id !== userId));
});
};
const updateUser = (userId, name, score) => {
fetch('/api/db/tempdata', {
method: 'POST',
body: JSON.stringify({
query: "UPDATE `users` SET `name` = ?, `score` = ? WHERE `id` = ?",
values: [name, score, userId]
})
})
.then(() => {
setUsers(users.map(user => user.id === userId ? { ...user, name, score } : user));
});
};
对应prompt:
操作请求:
1.3 Function逻辑处理/工具方法
自然语言说明规则,通过模型生成对应的处理函数代码
代码如:
1 |
|
对应prompt:
2.原子能力的组合——核心功能(菜单)
3.需求分析能力
分析图片/prompt意图,并将简单的需求描述转为详细的、可用于开发实现的prompt
模型:Claude、GPT4、Gemini、Groq…
Author
My name is Micheal Wayne and this is my blog.
I am a front-end software engineer.
Contact: michealwayne@163.com