优化改写文案
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) => {
|
ipcMain.handle('call-openai', async (event, baseURL, apiKey, model, count, rawArticle) => {
|
||||||
try {
|
try {
|
||||||
const client = new OpenAI({
|
const client = new OpenAI({
|
||||||
apiKey: apiKey, // 从环境变量中获取API密钥
|
apiKey: apiKey,
|
||||||
baseURL: baseURL // 设置代理地址
|
baseURL: baseURL
|
||||||
})
|
})
|
||||||
|
|
||||||
// 创建 count 个请求
|
|
||||||
const requests = Array.from({ length: count }, (_, index) => {
|
const requests = Array.from({ length: count }, (_, index) => {
|
||||||
return client.chat.completions
|
return client.chat.completions
|
||||||
.create({
|
.create({
|
||||||
@ -84,11 +83,12 @@ export default class IPCs {
|
|||||||
{
|
{
|
||||||
role: 'system',
|
role: 'system',
|
||||||
content:
|
content:
|
||||||
'你是一个小红书文案写手,能够熟练地根据用户的输入,改写成内容相近,但表达方式不同的新文案。你的文案中需要具备吸人眼球的钩子,能够牢牢抓住用户的注意力。请直接输出新的文案,不要输出其他任何提示性词语, 以纯文本的形式输出'
|
'你是一个小红书文案写手,能够熟练地根据用户的输入,改写成内容相近,但表达方式不同的新文案。你的文案中需要具备吸人眼球的钩子,能够牢牢抓住用户的注意力。请直接输出新的文案,不要输出其他任何提示性词语, 以纯文本的形式输出。注意:输出的文案不要超过900字。'
|
||||||
},
|
},
|
||||||
{ role: 'user', content: rawArticle }
|
{ role: 'user', content: rawArticle }
|
||||||
],
|
],
|
||||||
stream: true // 启用流式输出
|
max_tokens: 1800, // 约900字
|
||||||
|
stream: true
|
||||||
})
|
})
|
||||||
.then(async (stream) => {
|
.then(async (stream) => {
|
||||||
let fullResponse = ''
|
let fullResponse = ''
|
||||||
@ -125,7 +125,6 @@ export default class IPCs {
|
|||||||
timeout: 30000
|
timeout: 30000
|
||||||
})
|
})
|
||||||
|
|
||||||
// 创建 count 个请求
|
|
||||||
const requests = Array.from({ length: count }, (_, index) => {
|
const requests = Array.from({ length: count }, (_, index) => {
|
||||||
return client.chat.completions
|
return client.chat.completions
|
||||||
.create({
|
.create({
|
||||||
@ -133,11 +132,11 @@ export default class IPCs {
|
|||||||
messages: [
|
messages: [
|
||||||
{
|
{
|
||||||
role: 'system',
|
role: 'system',
|
||||||
content: '你是一个小红书标题写手,能够熟练地根据用户的输入,改写成内容相近,但表达方式不同的新标题。你的标题中需要具备吸人眼球的钩子,能够牢牢抓住用户的注意力。请直接输出新的标题,不要输出其他任何提示性词语, 以纯文本的形式输出'
|
content: '你是一个小红书标题写手,能够熟练地根据用户的输入,改写成内容相近,但表达方式不同的新标题。你的标题中需要具备吸人眼球的钩子,能够牢牢抓住用户的注意力。请直接输出新的标题,不要输出其他任何提示性词语, 以纯文本的形式输出。注意:输出的标题不要超过20字。'
|
||||||
},
|
},
|
||||||
{ role: 'user', content: text }
|
{ role: 'user', content: text }
|
||||||
],
|
],
|
||||||
max_tokens: 100,
|
max_tokens: 50, // 约20字
|
||||||
temperature: 0.8,
|
temperature: 0.8,
|
||||||
stream: true
|
stream: true
|
||||||
})
|
})
|
||||||
|
|||||||
@ -66,6 +66,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div :class="{ expanded: expandedResults[index] }" class="result-content">
|
<div :class="{ expanded: expandedResults[index] }" class="result-content">
|
||||||
{{ text }}
|
{{ text }}
|
||||||
|
<!-- <div v-if="text.length > (type === 'title' ? 20 : 900)" class="warning-badge">
|
||||||
|
超出字数限制
|
||||||
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -526,4 +529,15 @@ const showToast = (message) => {
|
|||||||
height: auto;
|
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>
|
</style>
|
||||||
@ -13,6 +13,7 @@
|
|||||||
:is-generating="isGenerating || isGeneratingTitle"
|
:is-generating="isGenerating || isGeneratingTitle"
|
||||||
:model="currentModel"
|
:model="currentModel"
|
||||||
:layout-mode="layoutMode"
|
:layout-mode="layoutMode"
|
||||||
|
:type="currentType"
|
||||||
@update:layout="(newLayout) => layoutMode = newLayout"
|
@update:layout="(newLayout) => layoutMode = newLayout"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -33,6 +34,7 @@ const isGenerating = ref(false)
|
|||||||
const isGeneratingTitle = ref(false)
|
const isGeneratingTitle = ref(false)
|
||||||
const layoutMode = ref('list')
|
const layoutMode = ref('list')
|
||||||
const currentModel = ref('gpt-4o')
|
const currentModel = ref('gpt-4o')
|
||||||
|
const currentType = ref('content')
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
try {
|
try {
|
||||||
@ -63,6 +65,7 @@ const showToast = (message) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const handleRewrite = async ({ mode, text, count, model, key, type }) => {
|
const handleRewrite = async ({ mode, text, count, model, key, type }) => {
|
||||||
|
currentType.value = type
|
||||||
if (type === 'title') {
|
if (type === 'title') {
|
||||||
isGeneratingTitle.value = true
|
isGeneratingTitle.value = true
|
||||||
rewrittenText.value = []
|
rewrittenText.value = []
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user