美文网首页
GPT-Prompt 加工厂

GPT-Prompt 加工厂

作者: 一个记事本 | 来源:发表于2024-03-28 01:29 被阅读0次

    一、加工厂使用方式

    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 方法中都有体现,你需要根据实际情况进一步完善异常处理逻辑,比如添加重试机制或记录日志。
    */
    

    相关文章

      网友评论

          本文标题:GPT-Prompt 加工厂

          本文链接:https://www.haomeiwen.com/subject/kotutjtx.html