Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit86bba7d

Browse files
quzardChanzhaoyu
andauthored
feat: 添加自定义 temperature 和 top_p (Chanzhaoyu#1260)
* 在设置的高级面板里自定义temperature和top_p* change default temperature from 0.8 to 0.5* pref: 检查代码,增加仅 api 的接口判断* chore: 锁定 pnpm-lock.yaml---------Co-authored-by: ChenZhaoYu <790348264@qq.com>
1 parent1187d88 commit86bba7d

File tree

10 files changed

+65
-8
lines changed

10 files changed

+65
-8
lines changed

‎service/src/chatgpt/index.ts‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const timeoutMs: number = !isNaN(+process.env.TIMEOUT_MS) ? +process.env.TIMEOUT
2727
constdisableDebug:boolean=process.env.OPENAI_API_DISABLE_DEBUG==='true'
2828

2929
letapiModel:ApiModel
30+
letmodel='gpt-3.5-turbo'
3031

3132
if(!isNotEmptyString(process.env.OPENAI_API_KEY)&&!isNotEmptyString(process.env.OPENAI_ACCESS_TOKEN))
3233
thrownewError('Missing OPENAI_API_KEY or OPENAI_ACCESS_TOKEN environment variable')
@@ -39,7 +40,7 @@ let api: ChatGPTAPI | ChatGPTUnofficialProxyAPI
3940
if(isNotEmptyString(process.env.OPENAI_API_KEY)){
4041
constOPENAI_API_BASE_URL=process.env.OPENAI_API_BASE_URL
4142
constOPENAI_API_MODEL=process.env.OPENAI_API_MODEL
42-
constmodel=isNotEmptyString(OPENAI_API_MODEL) ?OPENAI_API_MODEL :'gpt-3.5-turbo'
43+
model=isNotEmptyString(OPENAI_API_MODEL) ?OPENAI_API_MODEL :'gpt-3.5-turbo'
4344

4445
constoptions:ChatGPTAPIOptions={
4546
apiKey:process.env.OPENAI_API_KEY,
@@ -90,13 +91,14 @@ let api: ChatGPTAPI | ChatGPTUnofficialProxyAPI
9091
})()
9192

9293
asyncfunctionchatReplyProcess(options:RequestOptions){
93-
const{ message, lastContext, process, systemMessage}=options
94+
const{ message, lastContext, process, systemMessage, temperature, top_p}=options
9495
try{
9596
letoptions:SendMessageOptions={ timeoutMs}
9697

9798
if(apiModel==='ChatGPTAPI'){
9899
if(isNotEmptyString(systemMessage))
99100
options.systemMessage=systemMessage
101+
options.completionParams={ model, temperature, top_p}
100102
}
101103

102104
if(lastContext!=null){

‎service/src/chatgpt/types.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ export interface RequestOptions {
55
lastContext?:{conversationId?:string;parentMessageId?:string}
66
process?:(chat:ChatMessage)=>void
77
systemMessage?:string
8+
temperature?:number
9+
top_p?:number
810
}
911

1012
exportinterfaceBalanceResponse{

‎service/src/index.ts‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ router.post('/chat-process', [auth, limiter], async (req, res) => {
2323
res.setHeader('Content-type','application/octet-stream')
2424

2525
try{
26-
const{ prompt, options={}, systemMessage}=req.bodyasRequestProps
26+
const{ prompt, options={}, systemMessage, temperature, top_p}=req.bodyasRequestProps
2727
letfirstChunk=true
2828
awaitchatReplyProcess({
2929
message:prompt,
@@ -33,6 +33,8 @@ router.post('/chat-process', [auth, limiter], async (req, res) => {
3333
firstChunk=false
3434
},
3535
systemMessage,
36+
temperature,
37+
top_p,
3638
})
3739
}
3840
catch(error){

‎service/src/types.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ export interface RequestProps {
44
prompt:string
55
options?:ChatContext
66
systemMessage:string
7+
temperature?:number
8+
top_p?:number
79
}
810

911
exportinterfaceChatContext{

‎src/api/index.ts‎

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
importtype{AxiosProgressEvent,GenericAbortSignal}from'axios'
22
import{post}from'@/utils/request'
3-
import{useSettingStore}from'@/store'
3+
import{useAuthStore,useSettingStore}from'@/store'
44

55
exportfunctionfetchChatAPI<T=any>(
66
prompt:string,
@@ -28,10 +28,25 @@ export function fetchChatAPIProcess<T = any>(
2828
onDownloadProgress?:(progressEvent:AxiosProgressEvent)=>void},
2929
){
3030
constsettingStore=useSettingStore()
31+
constauthStore=useAuthStore()
32+
33+
letdata:Record<string,any>={
34+
prompt:params.prompt,
35+
options:params.options,
36+
}
37+
38+
if(authStore.isChatGPTAPI){
39+
data={
40+
...data,
41+
systemMessage:settingStore.systemMessage,
42+
temperature:settingStore.temperature,
43+
top_p:settingStore.top_p,
44+
}
45+
}
3146

3247
returnpost<T>({
3348
url:'/chat-process',
34-
data:{prompt:params.prompt,options:params.options,systemMessage:settingStore.systemMessage},
49+
data,
3550
signal:params.signal,
3651
onDownloadProgress:params.onDownloadProgress,
3752
})

‎src/components/common/Setting/Advanced.vue‎

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts" setup>
22
import {ref }from'vue'
3-
import {NButton,NInput,useMessage }from'naive-ui'
3+
import {NButton,NInput,NSlider,useMessage }from'naive-ui'
44
import {useSettingStore }from'@/store'
55
importtype {SettingsState }from'@/store/modules/settings/helper'
66
import {t }from'@/locales'
@@ -11,6 +11,10 @@ const ms = useMessage()
1111
1212
const systemMessage=ref(settingStore.systemMessage??'')
1313
14+
const temperature=ref(settingStore.temperature??0.5)
15+
16+
const top_p=ref(settingStore.top_p??1)
17+
1418
function updateSettings(options:Partial<SettingsState>) {
1519
settingStore.updateSetting(options)
1620
ms.success(t('common.success'))
@@ -27,7 +31,7 @@ function handleReset() {
2731
<divclass="p-4 space-y-5 min-h-[200px]">
2832
<divclass="space-y-6">
2933
<divclass="flex items-center space-x-4">
30-
<spanclass="flex-shrink-0 w-[100px]">{{ $t('setting.role') }}</span>
34+
<spanclass="flex-shrink-0 w-[120px]">{{ $t('setting.role') }}</span>
3135
<divclass="flex-1">
3236
<NInputv-model:value="systemMessage"type="textarea":autosize="{ minRows: 1, maxRows: 4 }" />
3337
</div>
@@ -36,7 +40,27 @@ function handleReset() {
3640
</NButton>
3741
</div>
3842
<divclass="flex items-center space-x-4">
39-
<spanclass="flex-shrink-0 w-[100px]">&nbsp;</span>
43+
<spanclass="flex-shrink-0 w-[120px]">{{ $t('setting.temperature') }} </span>
44+
<divclass="flex-1">
45+
<NSliderv-model:value="temperature":max="1":min="0":step="0.1" />
46+
</div>
47+
<span>{{ temperature }}</span>
48+
<NButtonsize="tiny"texttype="primary"@click="updateSettings({ temperature })">
49+
{{ $t('common.save') }}
50+
</NButton>
51+
</div>
52+
<divclass="flex items-center space-x-4">
53+
<spanclass="flex-shrink-0 w-[120px]">{{ $t('setting.top_p') }} </span>
54+
<divclass="flex-1">
55+
<NSliderv-model:value="top_p":max="1":min="0":step="0.1" />
56+
</div>
57+
<span>{{ top_p }}</span>
58+
<NButtonsize="tiny"texttype="primary"@click="updateSettings({ top_p })">
59+
{{ $t('common.save') }}
60+
</NButton>
61+
</div>
62+
<divclass="flex items-center space-x-4">
63+
<spanclass="flex-shrink-0 w-[120px]">&nbsp;</span>
4064
<NButtonsize="small"@click="handleReset">
4165
{{ $t('common.reset') }}
4266
</NButton>

‎src/locales/en-US.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ export default {
5959
name:'Name',
6060
description:'Description',
6161
role:'Role',
62+
temperature:'Temperature',
63+
top_p:'Top_p',
6264
resetUserInfo:'Reset UserInfo',
6365
chatHistory:'ChatHistory',
6466
theme:'Theme',

‎src/locales/zh-CN.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ export default {
5959
name:'名称',
6060
description:'描述',
6161
role:'角色设定',
62+
temperature:'Temperature',
63+
top_p:'Top_p',
6264
resetUserInfo:'重置用户信息',
6365
chatHistory:'聊天记录',
6466
theme:'主题',

‎src/locales/zh-TW.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ export default {
5959
name:'名稱',
6060
description:'描述',
6161
role:'角色設定',
62+
temperature:'Temperature',
63+
top_p:'Top_p',
6264
resetUserInfo:'重設使用者資訊',
6365
chatHistory:'紀錄',
6466
theme:'主題',

‎src/store/modules/settings/helper.ts‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@ const LOCAL_NAME = 'settingsStorage'
44

55
exportinterfaceSettingsState{
66
systemMessage:string
7+
temperature:number
8+
top_p:number
79
}
810

911
exportfunctiondefaultSetting():SettingsState{
1012
return{
1113
systemMessage:'You are ChatGPT, a large language model trained by OpenAI. Follow the user\'s instructions carefully. Respond using markdown.',
14+
temperature:0.8,
15+
top_p:1,
1216
}
1317
}
1418

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp