2
0

🐛 (difyAi) Fix chunk parsing

Closes #1370
This commit is contained in:
Baptiste Arnaud
2024-03-18 18:05:35 +01:00
parent a797fc074c
commit e035a54cfc

View File

@ -82,29 +82,27 @@ export const createChatMessage = createAction({
stream.on('data', (chunk) => {
const lines = chunk.toString().split('\n') as string[]
lines
.filter((line) => line.length > 0)
.filter((line) => line.length > 0 && line !== '\n')
.forEach((line) => {
try {
const data = JSON.parse(
(jsonChunk.length > 0 ? jsonChunk : line).replace(
/^data: /,
''
)
) as Chunk
jsonChunk += line
if (jsonChunk.startsWith('event: ')) {
jsonChunk = ''
if (
data.event === 'message' ||
data.event === 'agent_message'
) {
answer += data.answer
}
if (data.event === 'message_end') {
totalTokens = data.metadata.usage.total_tokens
conversationId = data.conversation_id
}
} catch (error) {
if (line.includes('event: ')) return
jsonChunk += line
return
}
if (!jsonChunk.startsWith('data: ') || !jsonChunk.endsWith('}'))
return
const data = JSON.parse(jsonChunk.slice(6)) as Chunk
jsonChunk = ''
if (
data.event === 'message' ||
data.event === 'agent_message'
) {
answer += data.answer
}
if (data.event === 'message_end') {
totalTokens = data.metadata.usage.total_tokens
conversationId = data.conversation_id
}
})
})