优化改写文案
This commit is contained in:
parent
f9b031e8da
commit
0df00ba33e
@ -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
|
||||
})
|
||||
|
||||
@ -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>
|
||||
@ -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 = []
|
||||
|
||||
Loading…
Reference in New Issue
Block a user