homeStore.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. import { gptsType, mlog } from '@/api';
  2. import { reactive } from 'vue'
  3. import { ss } from '@/utils/storage'
  4. export const homeStore = reactive({
  5. myData:{
  6. act:'',//动作
  7. actData:{} //动作类别
  8. ,local:'' //当前所处的版本
  9. ,session:{} as any
  10. ,isLoader:false
  11. }
  12. ,setMyData( v:object){
  13. this.myData={...this.myData,...v};
  14. if( Object.keys(v).indexOf('act')>-1){
  15. setTimeout(()=> {
  16. this.myData.act=''
  17. this.myData.actData=''
  18. }, 2000 );
  19. }
  20. }
  21. })
  22. export interface gptConfigType{
  23. model:string
  24. modelLabel:string
  25. max_tokens:number
  26. userModel?:string //自定义
  27. talkCount:number //联系对话
  28. systemMessage:string //自定义系统提示语
  29. kid:string //知识库id
  30. kName:string //知识库名称
  31. gpts?:gptsType
  32. uuid?:number
  33. temperature?:number // 随机性 : 值越大,回复越随机
  34. top_p?:number // 核采样 : 与随机性类似,但不要和随机性一起更改
  35. frequency_penalty?:number
  36. presence_penalty?:number
  37. tts_voice?:string //TTS 人物
  38. }
  39. const getGptInt= ():gptConfigType =>{
  40. let v:gptConfigType=getDefault();
  41. let str = localStorage.getItem('gptConfigStore');
  42. if(str){
  43. let old = JSON.parse(str);
  44. if(old) v={...v,...old};
  45. }
  46. return v;
  47. }
  48. const getDefault=()=>{
  49. const amodel = homeStore.myData.session.amodel??'o1-mini-2024-09-12'
  50. let v:gptConfigType={
  51. model: amodel,
  52. modelLabel: '',
  53. max_tokens: 1024,
  54. userModel: '',
  55. talkCount: 10,
  56. systemMessage: '',
  57. temperature: 0.5,
  58. top_p: 1,
  59. presence_penalty: 0,
  60. frequency_penalty: 0,
  61. tts_voice: "alloy",
  62. kid: '',
  63. kName: ''
  64. }
  65. return v ;
  66. }
  67. export const gptConfigStore= reactive({
  68. myData:getGptInt(),
  69. setMyData(v: Partial<gptConfigType>){
  70. this.myData={...this.myData,...v};
  71. //mlog('gptConfigStore', v )
  72. if(v.model && !v.gpts) this.myData.gpts=undefined;
  73. localStorage.setItem('gptConfigStore', JSON.stringify( this.myData));
  74. }
  75. ,setInit(){
  76. this.setMyData(getDefault());
  77. }
  78. })
  79. export interface gptServerType{
  80. OPENAI_API_KEY:string
  81. OPENAI_API_BASE_URL:string
  82. MJ_SERVER:string
  83. MJ_API_SECRET:string
  84. UPLOADER_URL:string
  85. MJ_CDN_WSRV?:boolean //wsrv.nl
  86. }
  87. const getServerDefault=()=>{
  88. let v:gptServerType={
  89. OPENAI_API_KEY:'',
  90. OPENAI_API_BASE_URL:'',
  91. MJ_SERVER:'',
  92. UPLOADER_URL:'',
  93. MJ_API_SECRET:'',
  94. MJ_CDN_WSRV:false
  95. }
  96. return v ;
  97. }
  98. const getServerInit= ():gptServerType =>{
  99. let v:gptServerType=getServerDefault();
  100. let str = localStorage.getItem('gptServerStore');
  101. if(str){
  102. let old = JSON.parse(str);
  103. if(old) v={...v,...old};
  104. }
  105. return v;
  106. }
  107. export const gptServerStore= reactive({
  108. myData:getServerInit(),
  109. setMyData(v: Partial<gptServerType>){
  110. this.myData={...this.myData,...v};
  111. localStorage.setItem('gptServerStore', JSON.stringify( this.myData));
  112. }
  113. ,setInit(){
  114. this.setMyData(getServerDefault());
  115. }
  116. })
  117. const gptsUlistInit= ():gptsType[]=>{
  118. const lk= ss.get('gpts-use-list');
  119. if( !lk) return [];
  120. return lk as gptsType[];
  121. }
  122. //使用gtps列表
  123. export const gptsUlistStore= reactive({
  124. myData:gptsUlistInit(),
  125. setMyData( v: gptsType){
  126. this.myData= this.myData.filter( v2=> v2.gid!=v.gid );
  127. this.myData.unshift(v);
  128. ss.set('gpts-use-list', this.myData );
  129. return this;
  130. }
  131. });