2
0

🐛 (dify) Fix invalid parsing when text delta is multiline

This commit is contained in:
Baptiste Arnaud
2024-05-27 15:39:36 +02:00
parent 85bcb699f8
commit 176e3a5fcf
4 changed files with 12 additions and 4 deletions

View File

@ -5,6 +5,7 @@ import { defaultBaseUrl } from '../constants'
import { Chunk } from '../types' import { Chunk } from '../types'
import ky, { HTTPError } from 'ky' import ky, { HTTPError } from 'ky'
import { deprecatedCreateChatMessageOptions } from '../deprecated' import { deprecatedCreateChatMessageOptions } from '../deprecated'
import { formatStreamPart } from 'ai'
export const createChatMessage = createAction({ export const createChatMessage = createAction({
auth, auth,
@ -120,7 +121,7 @@ export const createChatMessage = createAction({
onMessage: (message) => { onMessage: (message) => {
controller.enqueue( controller.enqueue(
new TextEncoder().encode( new TextEncoder().encode(
'0:"' + message.replace(/"/g, '\\"') + '"\n' formatStreamPart('text', message)
) )
) )
}, },
@ -299,7 +300,7 @@ const processDifyStream = async (
totalTokens, totalTokens,
conversationId, conversationId,
}: { }: {
totalTokens: number totalTokens?: number
conversationId: string conversationId: string
}) => void }) => void
} }
@ -333,7 +334,7 @@ const processDifyStream = async (
} }
if (data.event === 'message_end') { if (data.event === 'message_end') {
callbacks.onMessageEnd?.({ callbacks.onMessageEnd?.({
totalTokens: data.metadata.usage.total_tokens, totalTokens: data.metadata.usage?.total_tokens,
conversationId: data.conversation_id, conversationId: data.conversation_id,
}) })
} }

View File

@ -12,5 +12,8 @@
"@types/react": "18.2.15", "@types/react": "18.2.15",
"ky": "1.2.3", "ky": "1.2.3",
"typescript": "5.4.5" "typescript": "5.4.5"
},
"dependencies": {
"ai": "3.1.12"
} }
} }

View File

@ -11,7 +11,7 @@ type AgentMessageChunk = {
type MessageEndChunk = { type MessageEndChunk = {
event: 'message_end' event: 'message_end'
metadata: { metadata: {
usage: { usage?: {
total_tokens: number total_tokens: number
} }
} }

4
pnpm-lock.yaml generated
View File

@ -1347,6 +1347,10 @@ importers:
version: 5.4.5 version: 5.4.5
packages/forge/blocks/difyAi: packages/forge/blocks/difyAi:
dependencies:
ai:
specifier: 3.1.12
version: 3.1.12(openai@4.47.1)(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4)
devDependencies: devDependencies:
'@typebot.io/forge': '@typebot.io/forge':
specifier: workspace:* specifier: workspace:*