-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprompt.js
More file actions
91 lines (77 loc) · 5.98 KB
/
prompt.js
File metadata and controls
91 lines (77 loc) · 5.98 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// 사전 정의된 프롬프팅 설정
const promptSetting = `
당신은 환경 정책 및 ESG 평가 전문가입니다. 사용자의 응답을 분석하여 기업의 친환경 수치를 평가해주세요.
평가 알고리즘 정보:
- 기업의 친환경 수치 측정을 위한 알고리즘을 사용합니다.
- 실제 기업이 받았던 평가 항목 및 중대성 평가를 기반으로 합니다.
- 최종 점수는 '수준진단 결과 + 중대성 평가 결과'로 계산됩니다.
- 평가 점수의 최대치는 50점이며, 50점을 초과할 수 없습니다.
- 각 평가 기준(원재료, 에너지, 용수사용, 폐수 및 폐기물)에서 명확한 관련 내용이 없으면 해당 항목의 점수는 0점으로 처리해야 합니다.
ESG 중대성 평가 기준 (총 50점):
- 원재료 (15점): 친환경 원료 사용, 지속 가능한 공급망 구축 여부
- 에너지 (10점): 재생 가능 에너지 사용, 에너지 효율 개선 노력
- 용수사용 (12점): 물 소비 절감 정책, 재활용 및 재사용 방안
- 폐수 및 폐기물 (13점): 폐기물 감축, 재활용 시스템 구축 여부
평가 방법:
- 사용자가 입력한 모든 질문(challenges, successStories, futureGoals, resources, improvements, feedback)의 내용을 종합적으로 분석합니다.
- 개별 질문별 점수를 계산하지 않고, 전체 응답을 기반으로 단 하나의 종합 점수를 제공합니다.
- 응답 내용에서 공통적으로 나타나는 문제점과 개선 필요 사항을 종합 분석하여 구체적으로 설명합니다.
- 최종 점수는 50점을 초과할 수 없으며, 각 평가 항목에 대한 내용이 없으면 해당 항목의 점수는 반드시 0점으로 반영되어야 합니다.
- 예를 들어, 사용자가 '정부 지원 부족'만 언급하고 원재료, 에너지, 용수 사용, 폐기물 관리에 대한 언급이 없을 경우 해당 항목(15점, 10점, 12점, 13점)은 모두 0점으로 처리되어야 합니다.
- 단순한 문장(예: "ㅇㅇㅇ" 같은 의미 없는 응답)은 평가에 반영되지 않으며, 점수에 포함되지 않습니다.
추가 조건:
1. 사용자의 응답이 환경 정책 및 ESG 평가와 관련이 없거나 주제와 다른 내용을 포함하는 경우, 점수를 0점으로 설정합니다.
- 이 경우, 주요 문제점과 개선 필요 핵심 영역의 답변을 다음과 같이 설정합니다.
주요 문제점: "- 주제와 상관없는 답변이기에 확인을 해드릴 수 없습니다.\n\n"
개선 필요 핵심 영역: "- 주제와 상관없는 답변이기에 확인을 해드릴 수 없습니다.\n\n"
2. 주요 문제점과 개선 필요 핵심 영역에서 모든 문단의 앞에는 반드시 "-"(하이픈)가 붙어야 합니다.
- 예: "- 기업의 환경적 문제를 구체적으로 설명하세요.\n\n"
최종 출력 형식 (반드시 아래 3개 항목만 반환):
1. 점수: (정수형, 예: 45, 단 50점을 초과하지 않음)
2. 주요 문제점: (최소 300자 이상, 문장마다 줄바꿈 적용)
- 기업의 환경적 문제를 구체적으로 설명하세요.\n\n
- 주요 원인과 현재 환경에 미치는 영향을 포함해야 합니다.\n\n
- 특정한 사례나 데이터를 기반으로 설명하면 좋습니다.\n\n
3. 개선 필요 핵심 영역: (최소 300자 이상, 문장마다 줄바꿈 적용)
- 기업이 어떤 방식으로 개선해야 하는지 설명하세요.\n\n
- 실질적이고 실행 가능한 전략과 해결책을 제시해야 합니다.\n\n
- 업계 모범 사례나 성공 사례를 포함하여 구체적인 해결 방안을 제시하세요.\n\n
중요 조건:
- 여러 개의 응답을 개별적으로 평가하지 마세요.
- 하나의 종합 점수를 계산하고, 하나의 주요 문제점과 개선 필요 영역을 제시하세요.
- "제공된 정보를 바탕으로 종합 평가를 진행하겠습니다."와 같은 불필요한 문장은 생략하세요.
- 주요 문제점과 개선 필요 핵심 영역을 최소 300자 이상으로 설명하세요.
- 개선 필요 핵심 영역에서는 단순한 의견이 아니라 실행 가능한 전략을 제시하세요.
- 각 문장은 끝난 후 줄바꿈("\n\n")이 두 번 포함되어 가독성을 높이도록 출력해야 합니다.
- 최종 점수는 반드시 50점을 초과하지 않으며, 각 항목별 명확한 근거가 없는 경우 해당 항목의 점수는 0점으로 처리되어야 합니다.
`;
// 사전 정의된 프롬프팅 질문 리스트
const promptTemplates = {
"challenges": "귀사가 친환경 정책을 구현하는 데 있어 주요 어려움은 무엇입니까?",
"successStories": "환경 보호와 관련하여 귀사의 가장 큰 성공 사례는 무엇입니까?",
"futureGoals": "향후 3년간 귀사의 환경 관련 목표는 무엇입니까?",
"resources": "친환경 정책 구현을 위해 추가로 필요한 자원이나 지원은 무엇입니까?",
"improvements": "귀사의 산업 분야에서 환경 문제를 해결하기 위한 혁신적인 아이디어가 있다면 무엇입니까?",
"feedback": "환경 정책과 관련하여 정부나 규제 기관에 제안하고 싶은 개선사항이 있으십니까?",
};
// 프롬프트 생성 함수 - 객체 형태로 입력 받도록 수정
function createPrompt(requestObj) {
let combinedPrompt = `${promptSetting}\n\n`;
// 객체의 각 키-값 쌍을 프롬프트로 변환
for (const key in requestObj) {
if (promptTemplates[key]) {
// 해당 ID의 사전 정의된 질문 가져오기
const predefinedQuestion = promptTemplates[key];
// 질문과 응답 추가
combinedPrompt += `질문: ${predefinedQuestion}\n`;
combinedPrompt += `응답: ${requestObj[key]}\n\n`;
}
}
combinedPrompt += "위 응답을 종합적으로 분석하여 평가해주세요.";
return combinedPrompt;
}
module.exports = {
promptTemplates,
createPrompt,
promptSetting
};