Skip to content

Commit bcbe687

Browse files
authored
Merge pull request #2036 from terwer/dev
fix(preference): #1751 add experimental AI settings inputs
2 parents bd8f602 + e145661 commit bcbe687

4 files changed

Lines changed: 97 additions & 25 deletions

File tree

src/adaptors/api/astro/astroYamlConverterAdaptor.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,17 @@ class AstroYamlConverterAdaptor extends YamlConvertAdaptor {
3838
}
3939

4040
// pubDate
41-
let tzstr = "+00:00"
42-
const tz = new Date().getTimezoneOffset() / -60
43-
const sign = tz > 0 ? "+" : "-"
44-
if (tz.toString().length < 2) {
45-
tzstr = `${sign}0${tz}:00`
46-
} else {
47-
tzstr = `${sign}${tz}:00`
48-
}
49-
yamlFormatObj.yamlObj.pubDate = DateUtil.formatIsoToZh(post.dateCreated.toISOString(), true) + tzstr
41+
// let tzstr = "+00:00"
42+
// const tz = new Date().getTimezoneOffset() / -60
43+
// const sign = tz > 0 ? "+" : "-"
44+
// if (tz.toString().length < 2) {
45+
// tzstr = `${sign}0${tz}:00`
46+
// } else {
47+
// tzstr = `${sign}${tz}:00`
48+
// }
49+
// yamlFormatObj.yamlObj.pubDate = DateUtil.formatIsoToZh(post.dateCreated.toISOString(), true) + tzstr
50+
// 精简格式:yyyy-MM-dd
51+
yamlFormatObj.yamlObj.pubDate = DateUtil.formatIsoToZhDate(post.dateCreated.toISOString(), true)
5052

5153
// heroImage
5254
// 暂不支持

src/components/set/preference/AiSetting.vue

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const publishPreferenceSettingForm = getPublishPreferenceSetting()
1919

2020
<template>
2121
<el-form label-width="135px" class="ai-setting-form">
22+
<!-- API Key -->
2223
<el-form-item :label="t('pref.setting.aicode')">
2324
<el-input
2425
v-model="publishPreferenceSettingForm.experimentalAICode"
@@ -28,6 +29,8 @@ const publishPreferenceSettingForm = getPublishPreferenceSetting()
2829
:disabled="publishPreferenceSettingForm.experimentalUseSiyuanNoteAIConfig"
2930
/>
3031
</el-form-item>
32+
33+
<!-- API Base URL -->
3134
<el-form-item :label="t('pref.setting.ai.baseurl')">
3235
<el-input
3336
v-model="publishPreferenceSettingForm.experimentalAIBaseUrl"
@@ -36,6 +39,8 @@ const publishPreferenceSettingForm = getPublishPreferenceSetting()
3639
:disabled="publishPreferenceSettingForm.experimentalUseSiyuanNoteAIConfig"
3740
/>
3841
</el-form-item>
42+
43+
<!-- Proxy URL -->
3944
<el-form-item :label="t('pref.setting.ai.proxy.url')">
4045
<el-input
4146
v-model="publishPreferenceSettingForm.experimentalAIProxyUrl"
@@ -44,9 +49,50 @@ const publishPreferenceSettingForm = getPublishPreferenceSetting()
4449
:disabled="publishPreferenceSettingForm.experimentalUseSiyuanNoteAIConfig"
4550
/>
4651
</el-form-item>
52+
53+
<!-- AI Model -->
54+
<el-form-item :label="t('pref.setting.ai.model')">
55+
<el-input
56+
v-model="publishPreferenceSettingForm.experimentalAIApiModel"
57+
autocomplete="off"
58+
:placeholder="t('pref.setting.ai.model.tip')"
59+
:disabled="publishPreferenceSettingForm.experimentalUseSiyuanNoteAIConfig"
60+
/>
61+
</el-form-item>
62+
63+
<!-- Max Tokens -->
64+
<el-form-item :label="t('pref.setting.ai.max.tokens')">
65+
<el-input-number
66+
v-model="publishPreferenceSettingForm.experimentalAIApiMaxTokens"
67+
:min="0"
68+
:max="32768"
69+
:controls="false"
70+
:placeholder="t('pref.setting.ai.max.tokens.tip')"
71+
:disabled="publishPreferenceSettingForm.experimentalUseSiyuanNoteAIConfig"
72+
/>
73+
</el-form-item>
74+
75+
<!-- Temperature -->
76+
<el-form-item :label="t('pref.setting.ai.temperature')">
77+
<div class="temperature-container">
78+
<el-slider
79+
v-model="publishPreferenceSettingForm.experimentalAIApiTemperature"
80+
:min="0"
81+
:max="2"
82+
:step="0.1"
83+
:disabled="publishPreferenceSettingForm.experimentalUseSiyuanNoteAIConfig"
84+
/>
85+
<span class="temperature-value">{{
86+
publishPreferenceSettingForm.experimentalAIApiTemperature?.toFixed(1) || "0.0"
87+
}}</span>
88+
</div>
89+
</el-form-item>
90+
91+
<!-- Siyuan Note AI Config Warning -->
4792
<el-form-item v-if="publishPreferenceSettingForm.experimentalUseSiyuanNoteAIConfig">
4893
<el-alert :closable="false" :title="t('config.ai.use.siyuan')" class="form-item-tip" type="warning" />
4994
</el-form-item>
95+
5096
<div class="form-item-bottom"></div>
5197
</el-form>
5298
</template>
@@ -58,4 +104,17 @@ const publishPreferenceSettingForm = getPublishPreferenceSetting()
58104
59105
.form-item-bottom
60106
margin-bottom 16px
107+
108+
.temperature-container
109+
display flex
110+
align-items center
111+
width 100%
112+
113+
.temperature-value
114+
display inline-block
115+
margin-left 12px
116+
min-width 30px
117+
color #606266
118+
font-size 12px
119+
text-align right
61120
</style>

src/locales/en_US.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -632,15 +632,20 @@ export default {
632632
"Due to the limitations of the Yuque platform, editing the knowledge base is not supported at the moment. If you want to move a document, click Undelete and then select the new knowledge base publication again",
633633
"main.commonn.cate.title": "Public category",
634634
"main.cate.new": "New category",
635-
"pref.setting.aicode": "ChatGPT request key",
636-
"pref.setting.aicode.tip":
637-
"ChatGPT request key or third-party proxy key, if it is a proxy key, please set the request address",
638-
"pref.setting.ai.baseurl": "ChatGPT request address",
639-
"pref.setting.ai.baseurl.tip": "The ChatGPT request address, if it is official ChatGPT, can be left blank",
635+
"pref.setting.aicode": "API Key",
636+
"pref.setting.aicode.tip": "OpenAI API key or compatible third-party API key",
637+
"pref.setting.ai.baseurl": "API Base URL",
638+
"pref.setting.ai.baseurl.tip": "Base URL for AI service, leave blank to use official OpenAI service",
640639
"preference.setting.removeWidgetTag": "Remove the widget HTML",
641-
"pref.setting.ai.proxy.url": "ChatGPT proxy address",
642-
"pref.setting.ai.proxy.url.tip":
643-
"Can be left blank, note: Filling in the proxy will ignore the ChatGPT request address",
640+
"pref.setting.ai.proxy.url": "Proxy URL",
641+
"pref.setting.ai.proxy.url.tip": "Optional API proxy URL, will be used with priority when configured",
642+
"pref.setting.ai.model": "Model",
643+
"pref.setting.ai.model.tip": "e.g.: gpt-3.5-turbo, gpt-4, etc.",
644+
"pref.setting.ai.max.tokens": "Max Tokens",
645+
"pref.setting.ai.max.tokens.tip": "Controls the maximum length of generated text, 0 means use default value",
646+
"pref.setting.ai.temperature": "Temperature",
647+
"pref.setting.ai.temperature.tip":
648+
"Controls the randomness of generated text, between 0-2, higher values are more random",
644649
"main.auto.fetch.title": "Auto fetch title",
645650
"main.auto.fetch.cate": "Auto fetch category",
646651
"category.ai.hand":
@@ -767,5 +772,5 @@ export default {
767772
"main.publish.to.gitlabastro": "Publish to Gitlab Astro",
768773
"setting.gitlabastro": "Gitlab Astro",
769774
"service.switch.gitlabastro": "Gitlab Astro",
770-
"post.bind.gitlabastro.slug": "Gitlab Astro slug"
775+
"post.bind.gitlabastro.slug": "Gitlab Astro slug",
771776
}

src/locales/zh_CN.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -605,13 +605,19 @@ export default {
605605
"由于语雀平台的限制,暂时不支持编辑所属知识库。如果您想移动文档,请先点击取消删除该文档,然后重新选择新的知识库发布",
606606
"main.commonn.cate.title": "公共分类",
607607
"main.cate.new": "新分类",
608-
"pref.setting.aicode": "ChatGPT请求key",
609-
"pref.setting.aicode.tip": "ChatGPT请求key或者第三方代理key,如果是代理key,请设置请求地址",
610-
"pref.setting.ai.baseurl": "ChatGPT请求地址",
611-
"pref.setting.ai.baseurl.tip": "ChatGPT请求地址,如果是ChatGPT官方,可留空",
608+
"pref.setting.aicode": "API密钥",
609+
"pref.setting.aicode.tip": "OpenAI API密钥或兼容的第三方API密钥",
610+
"pref.setting.ai.baseurl": "API基础地址",
611+
"pref.setting.ai.baseurl.tip": "AI服务的基础URL地址,使用官方OpenAI服务时可留空",
612612
"preference.setting.removeWidgetTag": "去除挂件HTML",
613-
"pref.setting.ai.proxy.url": "ChatGPT代理地址",
614-
"pref.setting.ai.proxy.url.tip": "可留空,注意:填写了代理会忽略ChatGPT请求地址",
613+
"pref.setting.ai.proxy.url": "代理地址",
614+
"pref.setting.ai.proxy.url.tip": "可选的API代理地址,配置后将优先使用代理",
615+
"pref.setting.ai.model": "模型",
616+
"pref.setting.ai.model.tip": "例如:gpt-3.5-turbo、gpt-4等",
617+
"pref.setting.ai.max.tokens": "最大Token数",
618+
"pref.setting.ai.max.tokens.tip": "控制生成文本的最大长度,0表示使用默认值",
619+
"pref.setting.ai.temperature": "温度",
620+
"pref.setting.ai.temperature.tip": "控制生成文本的随机性,0-2之间,值越大越随机",
615621
"main.auto.fetch.title": "自动提取标题",
616622
"main.auto.fetch.cate": "自动提取分类",
617623
"category.ai.hand": "由于各平台分类体系不一致,分类需要手动进行校准,不会自动保存",
@@ -731,5 +737,5 @@ export default {
731737
"main.publish.to.gitlabastro": "发布到Gitlab Astro",
732738
"setting.gitlabastro": "Gitlab Astro",
733739
"service.switch.gitlabastro": "Gitlab Astro",
734-
"post.bind.gitlabastro.slug": "Gitlab Astro别名"
740+
"post.bind.gitlabastro.slug": "Gitlab Astro别名",
735741
}

0 commit comments

Comments
 (0)