优化改写文案

This commit is contained in:
mcallzbl 2025-04-02 19:41:49 +08:00
parent f9b031e8da
commit 0df00ba33e
3 changed files with 24 additions and 8 deletions

View File

@ -71,11 +71,10 @@ export default class IPCs {
ipcMain.handle('call-openai', async (event, baseURL, apiKey, model, count, rawArticle) => {
try {
const client = new OpenAI({
apiKey: apiKey, // 从环境变量中获取API密钥
baseURL: baseURL // 设置代理地址
apiKey: apiKey,
baseURL: baseURL
})
// 创建 count 个请求
const requests = Array.from({ length: count }, (_, index) => {
return client.chat.completions
.create({
@ -84,11 +83,12 @@ export default class IPCs {
{
role: 'system',
content:
'你是一个小红书文案写手,能够熟练地根据用户的输入,改写成内容相近,但表达方式不同的新文案。你的文案中需要具备吸人眼球的钩子,能够牢牢抓住用户的注意力。请直接输出新的文案,不要输出其他任何提示性词语, 以纯文本的形式输出'
'你是一个小红书文案写手,能够熟练地根据用户的输入,改写成内容相近,但表达方式不同的新文案。你的文案中需要具备吸人眼球的钩子,能够牢牢抓住用户的注意力。请直接输出新的文案,不要输出其他任何提示性词语, 以纯文本的形式输出。注意输出的文案不要超过900字。'
},
{ role: 'user', content: rawArticle }
],
stream: true // 启用流式输出
max_tokens: 1800, // 约900字
stream: true
})
.then(async (stream) => {
let fullResponse = ''
@ -125,7 +125,6 @@ export default class IPCs {
timeout: 30000
})
// 创建 count 个请求
const requests = Array.from({ length: count }, (_, index) => {
return client.chat.completions
.create({
@ -133,11 +132,11 @@ export default class IPCs {
messages: [
{
role: 'system',
content: '你是一个小红书标题写手,能够熟练地根据用户的输入,改写成内容相近,但表达方式不同的新标题。你的标题中需要具备吸人眼球的钩子,能够牢牢抓住用户的注意力。请直接输出新的标题,不要输出其他任何提示性词语, 以纯文本的形式输出'
content: '你是一个小红书标题写手,能够熟练地根据用户的输入,改写成内容相近,但表达方式不同的新标题。你的标题中需要具备吸人眼球的钩子,能够牢牢抓住用户的注意力。请直接输出新的标题,不要输出其他任何提示性词语, 以纯文本的形式输出。注意输出的标题不要超过20字。'
},
{ role: 'user', content: text }
],
max_tokens: 100,
max_tokens: 50, // 约20字
temperature: 0.8,
stream: true
})

View File

@ -66,6 +66,9 @@
</div>
<div :class="{ expanded: expandedResults[index] }" class="result-content">
{{ text }}
<!-- <div v-if="text.length > (type === 'title' ? 20 : 900)" class="warning-badge">
超出字数限制
</div> -->
</div>
</div>
</div>
@ -526,4 +529,15 @@ const showToast = (message) => {
height: auto;
}
}
.warning-badge {
position: absolute;
top: 8px;
right: 8px;
background-color: #ff5252;
color: white;
padding: 4px 8px;
border-radius: 4px;
font-size: 12px;
}
</style>

View File

@ -13,6 +13,7 @@
:is-generating="isGenerating || isGeneratingTitle"
:model="currentModel"
:layout-mode="layoutMode"
:type="currentType"
@update:layout="(newLayout) => layoutMode = newLayout"
/>
</div>
@ -33,6 +34,7 @@ const isGenerating = ref(false)
const isGeneratingTitle = ref(false)
const layoutMode = ref('list')
const currentModel = ref('gpt-4o')
const currentType = ref('content')
onMounted(async () => {
try {
@ -63,6 +65,7 @@ const showToast = (message) => {
}
const handleRewrite = async ({ mode, text, count, model, key, type }) => {
currentType.value = type
if (type === 'title') {
isGeneratingTitle.value = true
rewrittenText.value = []