GPT-Prompt 加工厂


一、加工厂使用方式

Profile:

  • 角色:前端开发工程师Prompt Judger
  • 版本:1.0
  • 语言:中文
  • 描述:你是一位专注于前端开发的Prompt Judger,负责评估和优化前端相关的Prompt,帮助前端工程师提升代码质量和开发效率。
  • 注意:前端工程师在编写Prompt时,可能会遇到一些挑战和困惑。你需要仔细分析他们的Prompt,找出其中的问题,并提供有效的改进建议。

背景:

  • 前端工程师基于当前的开发需求和经验,编写了针对前端开发的Prompt。然而,他们不确定Prompt的质量和效果,需要你的专业评估和指导。

约束:

  • 在评估Prompt时,确保遵循前端开发的最佳实践和规范。
  • 提供的改进建议应具体、可行,并考虑到前端工程师的实际需求和能力。

目标:

  • 对前端工程师的Prompt进行评分,评分范围从1到10分,10分为满分。
  • 提供具体的改进建议和改进原因,帮助前端工程师优化Prompt。
  • 确保Prompt的改进方向符合前端开发的专业性和实际需求。
  • 输出经过改进的完整Prompt,以供前端工程师参考和借鉴。

技能:

  • 熟悉前端开发的流程和规范,了解前端工程师的需求和挑战。
  • 具备对文本质量和语义进行评估的能力,能够准确识别Prompt中的问题。
  • 能够提供具体、有针对性的改进建议,并解释改进的原因和底层机制。

工作流程:

  • 输入:前端工程师提供原始Prompt。
  • 责任: 你会以 ChatGPT 底层的神经网络原理的角度进行思考, 根据以下评分标准对 Prompt 进行评分,你打分十分严格, 有任何不满足神经网络需求的地方都会扣分, 评分范围从 1 到 10 分,10 分为满分。
  • 分析:你根据前端开发的最佳实践和规范,对Prompt进行评分和分析。
  • 建议:你提供1个最优秀的具体改进建议,并控制在200字左右解释改进的原因和底层机制。
  • 改进:你输出经过改进的完整Prompt,改进的地方用加粗的样式显示。
  • 现在,请提供前端工程师的原始Prompt,我将开始进行评估和改进。

原始Prompt:

"Hi, 我是一名前端开发工程师,我需要编写一个 vue3的框架代码,在组件初始化时调用'service/list/data'接口,入参登录id,返回保单列表。"


二、前端 Prompt加工案例

  • 6分 prompt:Hi, 我是一名前端开发工程师,我需要编写一个 vue3的框架代码,在组件初始化时调用'service/list/data'接口,入参登录id,返回保单列表。

  • 8分 prompt:Hi, 我是一名前端开发工程师,我需要编写一个基于Vue3的框架代码。在组件初始化时,我需要使用axios库调用'service/list/data'接口,入参为登录id(该id需要从localStorage中获取)。接口返回保单列表后,我需要将其渲染到页面上,并处理可能出现的错误和加载状态。

  • 9分 prompt:Hi, 我是一名前端开发工程师,我需要编写一个基于Vue3的框架代码。在MyComponent组件的mounted生命周期钩子中,我需要使用axios库调用'service/list/data'接口。接口的入参为登录id,该id需要从localStorage中获取。接口返回保单列表后,我需要将其渲染到页面上,并使用v-if指令来控制加载状态的显示。对于可能出现的错误,我需要使用try-catch语句或axios的拦截器来处理,确保用户能够收到友好的错误提示。

    11.png

  • 生成代码对比

prompt调优.png

三、进阶结构化Prompt

任务:

  • 再对修改后的 prompt生成结构化的 prompt,最后再输出完整代码。

结果

  • 按9分的 prompt 优化后的结构化 prompt:
角色:前端开发工程师  
技术栈:Vue 3  
任务:编写基于Vue3的MyComponent组件  
  
组件功能:  
- 在MyComponent组件的mounted生命周期钩子中,使用axios库调用接口  
- 接口路径:'service/list/data'  
- 接口入参:登录id,从localStorage中获取  
- 接口返回:保单列表  
- 将保单列表渲染到页面上  
- 使用v-if指令控制加载状态的显示  
  
错误处理:  
- 使用try-catch语句或axios拦截器处理可能出现的错误  
- 显示友好的错误提示给用户
  • 补充:(可结合工程文件、知识库、资源、自定义要求等,再调整结构化 prompt)

  • 输出代码:
<template>  
  <div>  
    <div v-if="loading">加载中...</div>  
    <div v-else-if="error">发生错误:{{ error }}</div>  
    <div v-else>  
      <!-- 渲染保单列表 -->  
      <ul>  
        <li v-for="policy in policyList" :key="policy.id">{{ policy.name }}</li>  
      </ul>  
    </div>  
  </div>  
</template>  
  
<script>  
import { ref, onMounted } from 'vue';  
import axios from 'axios';  
  
export default {  
  name: 'MyComponent',  
  setup() {  
    const loading = ref(true);  
    const error = ref('');  
    const policyList = ref([]);  
  
    onMounted(async () => {  
      try {  
        // 从localStorage获取登录id  
        const loginId = localStorage.getItem('loginId');  
        if (!loginId) {  
          throw new Error('登录id未找到');  
        }  
  
        // 调用接口获取保单列表  
        const response = await axios.get('service/list/data', {  
          params: {  
            id: loginId  
          }  
        });  
  
        // 处理响应数据  
        if (response.data && response.data.success) {  
          policyList.value = response.data.policies;  
        } else {  
          throw new Error('获取保单列表失败');  
        }  
      } catch (err) {  
        // 处理错误  
        error.value = err.message;  
      } finally {  
        // 无论成功还是失败,都结束加载状态  
        loading.value = false;  
      }  
    });  
  
    return {  
      loading,  
      error,  
      policyList  
    };  
  }  
};  
</script>  
  
<style scoped>  
/* 组件样式 */  
</style>

四、Java Prompt 案例

  • 原始Prompt:
"Hi, 我是一名Java开发工程师,我需要编写一个发送邮件的功能,
要示每天晚上12点发送邮件给用户,邮件内容是今天的天气情况,并且需要使用SMTP协议发送邮件。"
  • Prompt加工结构化:
Hi, 我是一名Java开发工程师,正在编写一个发送邮件的功能。请帮我构建一个Java方法,实现以下功能:
一、功能描述
每天晚上12点(UTC时间)自动发送邮件给用户。
邮件内容包含当天的天气情况。

二、天气数据获取
天气数据应来源于OpenWeatherMap API。
请使用以下API密钥:[请在此处插入API密钥]。
调用OpenWeatherMap API获取天气数据的示例请求为:[请在此处提供示例请求]。

三、时间处理
确保时间处理的准确性,考虑时区转换和时间同步问题。
使用Java中的定时任务(如Timer或ScheduledExecutorService)来实现每天定时发送邮件。

四、SMTP配置
使用SMTP协议发送邮件。
SMTP服务器地址:[请在此处插入SMTP服务器地址]。
SMTP服务器端口:[请在此处插入SMTP服务器端口]。
SMTP认证方式:用户名和密码。
用户名:[请在此处插入用户名]。
密码:[请在此处插入密码]。

五、失败处理
实现邮件发送的失败处理机制。
在发送邮件失败时,进行重试或记录异常日志。

六、方法定义
方法名:sendDailyWeatherEmail。
该方法应包含所有必要的逻辑,以自动获取天气数据、设置邮件内容、配置SMTP并发送邮件。
方法应在每天晚上12点(UTC时间)被调用。
  • 输出代码
import javax.mail.*;  
import javax.mail.internet.*;  
import java.util.*;  
import java.util.concurrent.Executors;  
import java.util.concurrent.ScheduledExecutorService;  
import java.util.concurrent.TimeUnit;  
import org.json.JSONObject;  
import java.net.HttpURLConnection;  
import java.net.URL;  
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
  
public class EmailService {  
  
    private static final String API_KEY = "YOUR_OPENWEATHERMAP_API_KEY";  
    private static final String SMTP_HOST = "YOUR_SMTP_HOST";  
    private static final int SMTP_PORT = YOUR_SMTP_PORT;  
    private static final String SMTP_USERNAME = "YOUR_SMTP_USERNAME";  
    private static final String SMTP_PASSWORD = "YOUR_SMTP_PASSWORD";  
    private static final String FROM_EMAIL = "your-email@example.com";  
    private static final String TO_EMAIL = "recipient-email@example.com";  
  
    public static void main(String[] args) {  
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);  
        scheduler.scheduleAtFixedRate(EmailService::sendDailyWeatherEmail, 0, 24, TimeUnit.HOURS);  
    }  
  
    public static void sendDailyWeatherEmail() {  
        try {  
            // 获取天气数据  
            String weatherData = getWeatherData();  
  
            // 设置邮件内容  
            String subject = "Today's Weather Report";  
            String body = "Here's the weather for today: " + weatherData;  
  
            // 配置邮件发送  
            Properties props = new Properties();  
            props.put("mail.smtp.auth", "true");  
            props.put("mail.smtp.starttls.enable", "true");  
            props.put("mail.smtp.host", SMTP_HOST);  
            props.put("mail.smtp.port", SMTP_PORT);  
  
            Session session = Session.getInstance(props,  
                new javax.mail.Authenticator() {  
                    protected PasswordAuthentication getPasswordAuthentication() {  
                        return new PasswordAuthentication(SMTP_USERNAME, SMTP_PASSWORD);  
                    }  
                });  
  
            Message message = new MimeMessage(session);  
            message.setFrom(new InternetAddress(FROM_EMAIL));  
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(TO_EMAIL));  
            message.setSubject(subject);  
            message.setText(body);  
  
            // 发送邮件  
            Transport.send(message);  
            System.out.println("Email sent successfully.");  
  
        } catch (MessagingException e) {  
            e.printStackTrace();  
            // 在这里添加失败处理逻辑,如重试或记录异常日志  
        }  
    }  
  
    private static String getWeatherData() {  
        String weatherData = "";  
        try {  
            String apiUrl = "http://api.openweathermap.org/data/2.5/weather?q=YourCityName&appid=" + API_KEY;  
            URL url = new URL(apiUrl);  
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();  
            connection.setRequestMethod("GET");  
  
            try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {  
                String inputLine;  
                StringBuilder content = new StringBuilder();  
                while ((inputLine = in.readLine()) != null) {  
                    content.append(inputLine);  
                }  
                JSONObject json = new JSONObject(content.toString());  
                // 解析JSON获取天气数据,例如温度、湿度、风速等  
                // 这里只是简单示例,实际应根据API返回的数据结构来解析  
                weatherData = "Temperature: " + json.getJSONObject("main").getString("temp") + "°C";  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
            // 在这里添加异常处理逻辑  
        }  
        return weatherData;  
    }  
}

/***
*说明:
*sendDailyWeatherEmail 方法是核心,它负责获取天气数据、配置邮件内容,并通过SMTP服务器发送邮件。
*getWeatherData 方法使用OpenWeatherMap API获取天气数据,并返回一个简单的字符串描述。这里需要根据实际返回的JSON数据结构来解析并提取所需信息。
*定时任务使用 ScheduledExecutorService 来实现,每天定时调用 sendDailyWeatherEmail 方法。
*邮件发送使用JavaMail API,并配置SMTP服务器、端口、用户名和密码等信息。
*异常处理在 getWeatherData 和 sendDailyWeatherEmail 方法中都有体现,你需要根据实际情况进一步完善异常处理逻辑,比如添加重试机制或记录日志。
*/
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容