```json
{
"summary

By admin, 24 July, 2025
推理
我们被要求设计一个大模型提示词对比UI。这个组件应该能够展示不同提示词(prompt)的效果对比,可能包括多个模型或不同提示词的输出结果。

设计思路:
1. 布局:采用卡片式布局,每个卡片代表一个提示词及其输出结果。
2. 每个卡片包含:
- 提示词标题(可能简短描述)
- 提示词内容(用户输入的提示词文本)
- 模型输出结果(一个或多个模型的输出)
- 可以添加一些交互,比如展开/收起长文本,复制按钮等(但题目要求是UI,所以先不考虑交互逻辑,只做静态展示)
3. 对比:多个卡片并排显示,方便横向对比。

考虑到响应式,在小屏幕上可能变成单列。

由于是“对比”,我们可以将多个卡片水平排列,并允许滚动(如果数量多的话),或者使用网格布局。

设计选项:
方案A:使用一个横向滚动的容器,里面放置多个卡片。这样在移动端可以左右滑动查看。
方案B:使用网格布局,根据屏幕宽度自动调整列数(例如,大屏幕4列,中等屏幕2列,小屏幕1列)。

由于对比通常需要同时看到多个,所以方案B更合适,因为横向滚动可能会隐藏一部分内容。

我们选择网格布局,使用grid或flex-wrap。

每个卡片的设计:
- 卡片有边框,圆角,阴影(轻微),以区分。
- 标题:加粗,较大字体
- 提示词内容:可能较长,所以需要限制行数并可以展开(但这里我们先不做交互,所以先显示固定行数,比如3行,超出显示省略号)
- 输出结果:同样可能较长,也需要处理。

但是,由于是对比,我们可能需要同时展示多个模型的输出?还是每个卡片是一个提示词,然后每个卡片内再分多个模型的输出?

题目是“大模型提示词对比”,所以有两种理解:
1. 对比不同提示词在同一个模型上的效果。
2. 对比同一个提示词在不同模型上的效果。

从字面看,应该是不同提示词的对比。但为了更通用,我们可以设计成每个卡片代表一个提示词,然后在卡片内展示该提示词在多个模型上的输出。

然而,这样卡片内部结构会复杂。另一种方式是:每个卡片代表一个模型对当前提示词的输出。那么对比就是横向看不同模型的结果。

我们这里按照每个卡片一个提示词,然后卡片内展示该提示词在多个模型上的输出结果。这样每个卡片内部又是一个小对比。

但是这样可能太复杂。我们简化一下:只展示一个提示词对应一个模型的输出(即一个卡片就是一个提示词-模型对),然后多个这样的卡片并排,这样用户可以看到多个提示词在多个模型上的输出。

然而,这样会重复提示词内容(如果同一个提示词在不同模型上,提示词内容是一样的)。所以我们需要重新组织。

更合理的结构:
整个组件分为两部分:
1. 顶部:显示多个模型的标签(如模型A,模型B,模型C)
2. 主体:每个提示词一行,在这一行中,每个模型一列,显示该提示词在该模型下的输出。

这样就是表格形式:行是提示词,列是模型,单元格是输出结果。

但题目要求是UI,不一定是表格,我们可以设计成类似表格但更美观的卡片形式。

考虑到美观和响应式,我们可以这样:
- 在桌面端:横向显示多个模型作为列,每个提示词作为一行,每个单元格是一个输出结果。
- 在移动端:由于列数多可能显示不下,我们可以将表格变成每个模型一列,然后提示词作为行,但允许横向滚动。

但是,这样可能不够直观。另一种方式是:将每个提示词做成一个独立的区块,然后在这个区块内,纵向排列各个模型的输出。这样在移动端就是每个提示词区块从上到下排列,每个区块内部是各个模型的输出从上到下排列。

这样设计:
每个提示词区块:
- 提示词标题(可选)
- 提示词内容
- 然后下面跟着多个模型的输出(每个模型输出包括:模型名称和输出内容)

这样在桌面端,我们可以将多个提示词区块水平排列(比如一行显示2-4个,取决于屏幕宽度),每个区块内部是纵向排列的模型输出。

在移动端,每个提示词区块占满宽度,垂直排列。

但是,这样不同提示词区块之间的模型输出就不好横向对比了(因为需要上下滚动对比)。

权衡之后,我们采用表格形式,但用div和grid布局模拟表格,并支持响应式。

具体设计:

整体容器:使用grid布局,列数根据模型数量动态(但我们在代码中需要固定模型数量,这里假设有3个模型,所以3列)

表头:显示模型名称,每个模型一列。

每一行:一个提示词,第一列显示提示词标题和内容,后面每一列显示对应模型的输出。

但是,在移动端,这样的表格会溢出,所以我们需要改变布局。在移动端,我们让每一行变成一列,即每个提示词占一行,然后在这一行内,模型的输出垂直排列。

然而,使用纯CSS表格布局在移动端处理多列比较困难。我们可以使用这样的技巧:在移动端,将表格重排为:
提示词1
模型1:输出内容
模型2:输出内容
模型3:输出内容
提示词2
...

这样在桌面端是表格,在移动端是列表。

但是,使用tailwind如何实现?我们可以用flex或者grid,然后通过响应式改变布局。

由于我们不知道模型数量,这里我们假设有3个模型,然后我们这样设计:

桌面端(md以上):
使用grid,设置grid-cols-4(第一列是提示词,后面三列是三个模型)
移动端:
使用flex,flex-direction: column

但是,这样结构会不同。我们可以用两组结构?但那样代码冗余。

另一种方案:在移动端,我们隐藏表头,然后每一行(一个提示词)下面再分成三行(每个模型输出一行)。这样在移动端就会变成:
提示词标题
提示词内容
模型1名称:输出1
模型2名称:输出2
模型3名称:输出3

在桌面端,则是:
提示词标题和内容放在第一列,然后输出1、输出2、输出3分别放在后面的三列。

我们使用同一个html结构,通过tailwind的响应式类来控制显示。

结构:

整体容器:div class="overflow-x-auto"
表格:table class="w-full" 然后使用grid布局模拟表格?或者直接使用table,但table在移动端需要水平滚动。

考虑到简单性和兼容性,我们使用table,并允许在移动端水平滚动。

设计:

我们使用一个带边框的表格,表头有背景色,单元格有内边距。

表格结构:

<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th>提示词</th>
<th>模型1</th>
<th>模型2</th>
<th>模型3</th>
</tr>
</thead>
<tbody>
<tr>
<td>提示词1内容...</td>
<td>模型1的输出</td>
<td>模型2的输出</td>
<td>模型3的输出</td>
</tr>
... 更多行
</tbody>
</table>
</div>

但是,这样不够美观,而且没有区分提示词标题和内容。

调整:在提示词单元格中,我们可以放置标题和内容。

但是,题目要求的是对比UI,我们也可以设计成非表格形式,而是用卡片组。

重新考虑:我们设计成每个提示词一个卡片,卡片内部上方是提示词,下方是多个模型的输出并排(在桌面端并排,移动端垂直排列)。

这样在移动端,每个模型的输出会单独占一行,而桌面端则是并排。

结构示例(一个卡片):
<div class="border rounded-lg shadow-sm p-4">
<div class="font-bold text-lg">提示词标题</div>
<div class="text-gray-600 mb-4">提示词内容...</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<div>
<div class="font-medium">模型1</div>
<div>输出内容1</div>
</div>
<div>
<div class="font-medium">模型2</div>
<div>输出内容2</div>
</div>
<div>
<div class="font-medium">模型3</div>
<div>输出内容3</div>
</div>
</div>
</div>

然后多个这样的卡片用网格布局排列:
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
... 多个卡片
</div>

这样在桌面端可以并排显示多个提示词,每个提示词内部又并排显示多个模型的输出。在移动端,每个卡片占满宽度,卡片内部模型输出垂直排列。

但是,这样就不能横向对比同一个模型在不同提示词上的输出了(因为每个卡片内部都是独立的)。不过,用户可以通过垂直方向查看同一模型在不同提示词上的输出(但需要滚动)。

权衡后,我们选择这种卡片式布局,因为它更灵活,响应式处理更简单。

因此,我们设计如下:

假设有多个提示词(比如3个),每个提示词对应多个模型(比如3个)的输出。

整体结构:
<div class="container mx-auto p-4">
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<!-- 卡片1 -->
<div class="border border-gray-200 rounded-xl shadow-sm overflow-hidden">
<div class="p-4 border-b border-gray-200">
<h3 class="text-lg font-bold text-gray-800">提示词1标题</h3>
<p class="text-gray-600 mt-2 line-clamp-3">提示词1的详细内容...</p>
</div>
<div class="p-4">
<div class="space-y-4">
<!-- 模型1输出 -->
<div>
<div class="flex items-center mb-2">
<div class="w-8 h-8 rounded-full bg-blue-100 flex items-center justify-center mr-2">
<span class="text-blue-800 font-bold">A</span>
</div>
<h4 class="font-medium text-gray-700">模型A</h4>
</div>
<div class="text-gray-600 bg-gray-50 p-3 rounded-lg">
模型A的输出内容...
</div>
</div>
<!-- 模型2输出 -->
<div>
<div class="flex items-center mb-2">
<div class="w-8 h-8 rounded-full bg-green-100 flex items-center justify-center mr-2">
<span class="text-green-800 font-bold">B</span>
</div>
<h4 class="font-medium text-gray-700">模型B</h4>
</div>
<div class="text-gray-600 bg-gray-50 p-3 rounded-lg">
模型B的输出内容...
</div>
</div>
<!-- 模型3输出 -->
<div>
<div class="flex items-center mb-2">
<div class="w-8 h-8 rounded-full bg-purple-100 flex items-center justify-center mr-2">
<span class="text-purple-800 font-bold">C</span>
</div>
<h4 class="font-medium text-gray-700">模型C</h4>
</div>
<div class="text-gray-600 bg-gray-50 p-3 rounded-lg">
模型C的输出内容...
</div>
</div>
</div>
</div>
</div>
<!-- 重复其他卡片 -->
</div>
</div>

在桌面端,一行最多显示3个卡片(即3个提示词),每个卡片内部是三个模型的输出垂直排列。
在移动端,每个卡片占满宽度。

注意:我们给每个模型加了一个圆形图标,里面用字母代表模型,这样更直观。

但是,如果提示词内容很长,我们使用line-clamp-3来限制显示3行,超出省略。

现在,我们按照这个设计生成代码。

由于我们不知道具体有多少个提示词和模型,这里我们假设3个提示词,3个模型(A、B、C)作为示例。

文案使用中文。

我们使用占位文本。

另外,由于是示例,我们只生成一个卡片的代码,然后复制成三个(实际中可能由后端动态生成)。

但是,为了代码简洁,我们只写一个卡片,然后注释说明其他卡片类似。

不过,题目要求完整,所以我们生成三个卡片,每个卡片结构相同,但内容不同。

开始写代码。

注意:我们使用container,因为不是全屏宽。

另外,由于页面背景是白色,所以我们不需要特意设置背景色。

我们给整个组件加一个标题?用户没有要求,但我们可以加一个“大模型提示词对比”的标题。

添加一个标题:
<div class="container mx-auto px-4 py-8">
<h2 class="text-2xl font-bold text-center text-gray-800 mb-8">大模型提示词对比</h2>
... 卡片网格
</div>

现在,输出完整代码。

注意:三个卡片,我们给每个卡片不同的提示词标题和内容,以及不同的输出内容(用占位文本)。

生成代码:
角色
assistant
content

```json
{
"summary": "已创建一个现代化的大模型提示词对比UI组件,采用卡片式布局展示不同提示词效果对比。包含模型信息、提示词输入框、输出结果展示区域,支持响应式设计,确保在移动设备上完美显示。",
"widget": {
"type": "custom-template",
"isAPI": false,
"fullWidth": true,
"html": "<div class=\"container mx-auto px-4 py-8\">\n <h2 class=\"text-2xl md:text-3xl font-bold text-center text-gray-800 mb-8\">大模型提示词对比</h2>\n \n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\n <!-- 提示词卡片1 -->\n <div class=\"bg-white rounded-xl shadow-md border border-gray-200 overflow-hidden transition-all duration-300 hover:shadow-lg\">\n <div class=\"p-5 border-b border-gray-100\">\n <div class=\"flex items-center mb-4\">\n <div class=\"w-10 h-10 rounded-full bg-blue-100 flex items-center justify-center mr-3\">\n <span class=\"text-blue-600 font-bold\">A</span>\n </div>\n <h3 class=\"text-lg font-semibold text-gray-800\">GPT-4</h3>\n </div>\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-gray-700 mb-1\">提示词</label>\n <div class=\"bg-gray-50 rounded-lg p-3 text-gray-600 border border-gray-200\">\n 请用简洁的语言解释量子计算的基本原理\n </div>\n </div>\n </div>\n <div class=\"p-5 bg-gray-50\">\n <label class=\"block text-sm font-medium text-gray-700 mb-1\">输出结果</label>\n <div class=\"bg-white rounded-lg p-4 text-gray-700 border border-gray-200 min-h-[120px]\">\n 量子计算利用量子比特替代传统比特,通过叠加和纠缠实现并行计算,解决传统计算机难以处理的复杂问题...\n </div>\n </div>\n </div>\n \n <!-- 提示词卡片2 -->\n <div class=\"bg-white rounded-xl shadow-md border border-gray-200 overflow-hidden transition-all duration-300 hover:shadow-lg\">\n <div class=\"p-5 border-b border-gray-100\">\n <div class=\"flex items-center mb-4\">\n <div class=\"w-10 h-10 rounded-full bg-purple-100 flex items-center justify-center mr-3\">\n <span class=\"text-purple-600 font-bold\">B</span>\n </div>\n <h3 class=\"text-lg font-semibold text-gray-800\">Claude 3</h3>\n </div>\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-gray-700 mb-1\">提示词</label>\n <div class=\"bg-gray-50 rounded-lg p-3 text-gray-600 border border-gray-200\">\n 请用简洁的语言解释量子计算的基本原理\n </div>\n </div>\n </div>\n <div class=\"p-5 bg-gray-50\">\n <label class=\"block text-sm font-medium text-gray-700 mb-1\">输出结果</label>\n <div class=\"bg-white rounded-lg p-4 text-gray-700 border border-gray-200 min-h-[120px]\">\n 量子计算的核心在于量子比特,不同于传统二进制,它能同时处于0和1的叠加态,通过量子门操作实现高效并行运算...\n </div>\n </div>\n </div>\n \n <!-- 提示词卡片3 -->\n <div class=\"bg-white rounded-xl shadow-md border border-gray-200 overflow-hidden transition-all duration-300 hover:shadow-lg\">\n <div class=\"p-5 border-b border-gray-100\">\n <div class=\"flex items-center mb-4\">\n <div class=\"w-10 h-10 rounded-full bg-green-100 flex items-center justify-center mr-3\">\n <span class=\"text-green-600 font-bold\">C</span>\n </div>\n <h3 class=\"text-lg font-semibold text-gray-800\">Gemini</h3>\n </div>\n <div class=\"mb-4\">\n <label class=\"block text-sm font-medium text-gray-700 mb-1\">提示词</label>\n <div class=\"bg-gray-50 rounded-lg p-3 text-gray-600 border border-gray-200\">\n 请用简洁的语言解释量子计算的基本原理\n </div>\n </div>\n </div>\n <div class=\"p-5 bg-gray-50\">\n <label class=\"block text-sm font-medium text-gray-700 mb-1\">输出结果</label>\n <div class=\"bg-white rounded-lg p-4 text-gray-700 border border-gray-200 min-h-[120px]\">\n 量子计算利用量子力学特性处理信息,量子比特可同时表示多种状态,通过量子纠缠实现远超经典计算机的运算能力...\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"mt-8 flex justify-center\">\n <button class=\"px-6 py-2 bg-blue-500 hover:bg-blue-600 text-white font-medium rounded-lg transition-colors duration-300 focus:outline-none focus:ring-2 focus:ring-blue-300 focus:ring-opacity-50\">\n 添加新模型对比\n </button>\n </div>\n</div>"
},
"next": ["添加展开/收起功能","增加评分功能","添加复制按钮","实现实时编辑","添加模型筛选"]
}
```

total_tokens
5821