Skip to content

Commit

Permalink
fix: 优化AI配置检测机制
Browse files Browse the repository at this point in the history
  • Loading branch information
terwer committed Aug 31, 2023
1 parent cd8a375 commit 02a243a
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 21 deletions.
20 changes: 1 addition & 19 deletions src/composables/useChatGPT.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import { ChatGPTAPI, ChatGPTUnofficialProxyAPI, SendMessageOptions } from "chatg
import { Utils } from "~/src/utils/utils.ts"
import { isDev } from "~/src/utils/constants.ts"
import { createAppLogger } from "~/src/utils/appLogger.ts"
import { SiyuanDevice } from "zhi-device"

/**
* 创建一个用于与 ChatGPT 服务进行交互的钩子
Expand All @@ -41,30 +40,13 @@ import { SiyuanDevice } from "zhi-device"
*/
const useChatGPT = () => {
const logger = createAppLogger("use-chatgpt")
const { getReadOnlyPublishPreferenceSetting, getPublishPreferenceSetting } = usePublishPreferenceSetting()
const changablePref = getPublishPreferenceSetting()
const { getReadOnlyPublishPreferenceSetting } = usePublishPreferenceSetting()
const pref = getReadOnlyPublishPreferenceSetting()

// 创建 ChatGPTAPI 实例
let api: ChatGPTAPI | ChatGPTUnofficialProxyAPI

try {
// 检测是否使用思源笔记的配置
const win = SiyuanDevice.siyuanWindow()
const snAiCfg = win?.siyuan?.config?.ai?.openAI
logger.info("try load win.siyuan.config =>", snAiCfg)
// 使用思源笔记的配置
if (snAiCfg) {
changablePref.value.experimentalUseSiyuanNoteAIConfig = true
changablePref.value.experimentalAIProxyUrl = snAiCfg.apiProxy
changablePref.value.experimentalAICode = snAiCfg.apiKey
changablePref.value.experimentalAIBaseUrl = snAiCfg.apiBaseURL
logger.info("use siyuan-note ai config")
} else {
changablePref.value.experimentalUseSiyuanNoteAIConfig = false
logger.info("use custom ai config")
}

// 设置了代理地址创建代理实例,否则使用官方实例
if (!StrUtil.isEmptyString(pref.value.experimentalAIProxyUrl)) {
api = new ChatGPTUnofficialProxyAPI({
Expand Down
24 changes: 22 additions & 2 deletions src/stores/usePublishPreferenceSetting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,16 @@
import { RemovableRef, StorageSerializers, useLocalStorage } from "@vueuse/core"
import { PublishPreferenceCfg } from "~/src/models/publishPreferenceCfg.ts"
import { readonly } from "vue"
import {SiyuanDevice} from "zhi-device";
import {createAppLogger} from "~/src/utils/appLogger.ts";

/**
* 使用发布偏好设置的自定义钩子
*/
const usePublishPreferenceSetting = () => {
// 存储键
const storageKey = "publish-preference-cfg"
const logger = createAppLogger("use-publish-pref")

/**
* 获取思源笔记配置
Expand All @@ -43,10 +46,27 @@ const usePublishPreferenceSetting = () => {
*/
const getPublishPreferenceSetting = (): RemovableRef<PublishPreferenceCfg> => {
const initialValue = new PublishPreferenceCfg()
const siyuanConfig = useLocalStorage<PublishPreferenceCfg>(storageKey, initialValue, {
const prefConfig = useLocalStorage<PublishPreferenceCfg>(storageKey, initialValue, {
serializer: StorageSerializers.object,
})
return siyuanConfig

// 检测是否使用思源笔记的配置
const win = SiyuanDevice.siyuanWindow()
const snAiCfg = win?.siyuan?.config?.ai?.openAI
logger.info("try load win.siyuan.config =>", snAiCfg)
// 使用思源笔记的配置
if (snAiCfg) {
prefConfig.value.experimentalUseSiyuanNoteAIConfig = true
prefConfig.value.experimentalAIProxyUrl = snAiCfg.apiProxy
prefConfig.value.experimentalAICode = snAiCfg.apiKey
prefConfig.value.experimentalAIBaseUrl = snAiCfg.apiBaseURL
logger.info("use siyuan-note ai config")
} else {
prefConfig.value.experimentalUseSiyuanNoteAIConfig = false
logger.info("use custom ai config")
}

return prefConfig
}

/**
Expand Down

0 comments on commit 02a243a

Please sign in to comment.