fix(stage-web|stage-tamagotchi): locked to openrouter-ai

This commit is contained in:
Neko Ayaka
2025-03-17 01:45:26 +08:00
parent 0463fbb7d1
commit 8e1ed7ec19
5 changed files with 42 additions and 8 deletions
@@ -20,7 +20,7 @@ const { send, onAfterSend } = useChatStore()
const { messages } = storeToRefs(useChatStore())
const { t } = useI18n()
const providersStore = useProvidersStore()
const { activeModel } = storeToRefs(useConsciousnessStore())
const { activeModel, activeProvider } = storeToRefs(useConsciousnessStore())
async function handleSend() {
if (!messageInput.value.trim()) {
@@ -28,9 +28,11 @@ async function handleSend() {
}
try {
const providerConfig = providersStore.getProviderConfig(activeProvider.value)
await send(messageInput.value, {
model: activeModel.value,
chatProvider: providersStore.getProviderInstance('openrouter-ai') as ChatProvider,
chatProvider: providersStore.getProviderInstance(activeProvider.value) as ChatProvider,
providerConfig,
})
}
catch (error) {
@@ -34,7 +34,13 @@ const { transcribe: generate, load: loadWhisper, status: whisperStatus, terminat
return
}
await send(res, { chatProvider: providersStore.getProviderInstance(activeProvider.value) as ChatProvider, model: activeModel.value })
const providerConfig = providersStore.getProviderConfig(activeProvider.value)
await send(res, {
chatProvider: providersStore.getProviderInstance(activeProvider.value) as ChatProvider,
model: activeModel.value,
providerConfig,
})
},
})
@@ -44,7 +50,13 @@ async function handleSend() {
}
try {
await send(messageInput.value, { chatProvider: providersStore.getProviderInstance(activeProvider.value) as ChatProvider, model: activeModel.value })
const providerConfig = providersStore.getProviderConfig(activeProvider.value)
await send(messageInput.value, {
chatProvider: providersStore.getProviderInstance(activeProvider.value) as ChatProvider,
model: activeModel.value,
providerConfig,
})
}
catch (error) {
messages.value.pop()
@@ -27,7 +27,13 @@ async function handleSend() {
return
}
await send(messageInput.value, { chatProvider: providersStore.getProviderInstance(activeProvider.value) as ChatProvider, model: activeModel.value })
const providerConfig = providersStore.getProviderConfig(activeProvider.value)
await send(messageInput.value, {
chatProvider: providersStore.getProviderInstance(activeProvider.value) as ChatProvider,
model: activeModel.value,
providerConfig,
})
}
const { destroy, start } = useMicVAD(selectedAudioDeviceId, {
+11 -2
View File
@@ -71,7 +71,7 @@ export const useChatStore = defineStore('chat', () => {
const streamingMessage = ref<AssistantMessage>({ role: 'assistant', content: '' })
async function send(sendingMessage: string, options: { model: string, chatProvider: ChatProvider }) {
async function send(sendingMessage: string, options: { model: string, chatProvider: ChatProvider, providerConfig?: Record<string, unknown> }) {
try {
sending.value = true
@@ -95,7 +95,16 @@ export const useChatStore = defineStore('chat', () => {
await hook(sendingMessage)
}
const res = await stream(options.model, options.chatProvider, newMessages as Message[])
const headersArray = options.providerConfig?.headers as { key: string, value: string }[] | undefined
const headers = headersArray
?.filter(h => h.key && h.value)
.reduce((acc, curr) => {
acc[curr.key] = curr.value
return acc
}, {} as Record<string, string>)
const res = await stream(options.model, options.chatProvider, newMessages as Message[], { headers })
for (const hook of onAfterSendHooks.value) {
await hook(sendingMessage)
+6 -1
View File
@@ -6,13 +6,18 @@ import { streamText } from '@xsai/stream-text'
import { defineStore } from 'pinia'
export const useLLM = defineStore('llm', () => {
async function stream(model: string, chatProvider: ChatProvider, messages: Message[]) {
async function stream(model: string, chatProvider: ChatProvider, messages: Message[], options?: {
headers?: Record<string, string>
}) {
const headers = options?.headers
return await streamText({
...chatProvider.chat(model),
messages,
streamOptions: {
usage: true,
},
headers,
})
}