forked from cxumol/html
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathyiwu-txt-proc.html
72 lines (62 loc) · 3.31 KB
/
yiwu-txt-proc.html
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" /><meta charset="utf-8" />
<title>Text Processor</title>
<link rel="stylesheet" href="https://unpkg.com/mvp.css">
<style>
main { display: flex; }
textarea { width: calc(50% - 1em); height: 300px; margin: 0.5em; resize: vertical; }
#copyButton { background-color: #ccc; } /* Initial gray color */
#copyButton.active { background-color: #4CAF50; color: white; } /* Green when active */
</style>
</head>
<body>
<main>
<textarea id="inputArea" ondrop="dropHandler(event)" ondragover="dragOverHandler(event)"
placeholder="输入文本或拖拽文件到这里"></textarea>
<textarea id="outputArea" readonly></textarea>
</main>
<button id="go" onclick="processText()">Go</button>
<button id="copyButton" onclick="copyResult()" disabled>Copy Result</button>
<script>
var BASE="https://api.example.com/v1";
var KEY="sk-";
var MOD="gpt-4o";
var INTERVAL = 1000;
var SYSTEM_PROMPT = `将输入文本转为务实速记: 极度精简, 去除冗词赘词, 去除官腔废话, 引述转直述, 纯 txt 无 markdown
例如 "香港和台湾与中国内地的文化紧密联系" -> "港台内地文化紧密联系"
例如 "对话者讨论了现代小说中环境描写和人物刻画的减少现象,认为这与作者、读者偏好及阅读平台的限制有关。" -> "现代小说中环境描写和人物刻画的减少,与作者、读者偏好及手机阅读有关。"
例如 "在暗光下,这种响应较强,而在亮光下则显著减弱,表明其具备自适应能力。" -> "该响应在暗光下强, 亮光下弱, 可自适应"`;
var getId = id => document.getElementById(id);
var inputArea = getId('inputArea'), outputArea = getId('outputArea'), copyButton = getId('copyButton');
var processText = () => {
var text = inputArea.value;
outputArea.value = text.replace(/(- \d{2,3}.*\n\n)(.*)/g, (match, p1, p2) => {
var userPrompt = p2.trim();
console.log(`Original Text:\n${userPrompt}\n`); // Keep this line for logging
fetch(BASE+'/chat/completions', {
method: 'POST',
headers: { Authorization: 'Bearer '+KEY,'Content-Type': 'application/json' },
body: JSON.stringify({
model: MOD,
messages: [{ role: "system", content: SYSTEM_PROMPT }, { role: "user", content: userPrompt }]
})
})
.then(response => response.json())
.then(data => {
var aiResponse = data.choices[0].message.content.trim();
console.log(`AI Resp:${aiResponse}\n`);
outputArea.value = outputArea.value.replace(match, `${p1}${aiResponse}`) // replace with the appropriate values
})
return match; // Return the original match initially, update asynchronously after response
});
copyButton.disabled = false;
copyButton.classList.add('active');
};
var copyResult = () => { navigator.clipboard.writeText(outputArea.value); }
var dropHandler = ev => { ev.preventDefault(); var file = ev.dataTransfer.files[0]; var reader = new FileReader(); reader.onload = e => inputArea.value = e.target.result; reader.readAsText(file); }
var dragOverHandler = ev => ev.preventDefault();
</script>
</body>
</html>