一、加工厂
使用方式
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的拦截器来处理,确保用户能够收到友好的错误提示。
-
生成代码
对比
三、进阶
结构化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 方法中都有体现,你需要根据实际情况进一步完善异常处理逻辑,比如添加重试机制或记录日志。
*/