diff --git a/packages/components/package.json b/packages/components/package.json index b99c0ddb5..1837609e1 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -26,9 +26,9 @@ "@qdrant/js-client-rest": "^1.2.2", "@supabase/supabase-js": "^2.29.0", "@types/js-yaml": "^4.0.5", - "apify-client": "^2.7.1", "@types/jsdom": "^21.1.1", "@zilliz/milvus2-sdk-node": "^2.2.24", + "apify-client": "^2.7.1", "axios": "^0.27.2", "cheerio": "^1.0.0-rc.12", "chromadb": "^1.5.3", @@ -41,7 +41,7 @@ "google-auth-library": "^9.0.0", "graphql": "^16.6.0", "html-to-text": "^9.0.5", - "langchain": "^0.0.128", + "langchain": "^0.0.133", "linkifyjs": "^4.1.1", "mammoth": "^1.5.1", "moment": "^2.29.3", diff --git a/packages/ui/src/views/chatmessage/ChatMessage.js b/packages/ui/src/views/chatmessage/ChatMessage.js index 506f02da6..7a15d9ff2 100644 --- a/packages/ui/src/views/chatmessage/ChatMessage.js +++ b/packages/ui/src/views/chatmessage/ChatMessage.js @@ -64,9 +64,27 @@ export const ChatMessage = ({ open, chatflowid, isDialog }) => { window.open(data, '_blank') } + const handleVectaraMetadata = (message) => { + if (message.sourceDocuments && message.sourceDocuments[0].metadata.length) + message.sourceDocuments = message.sourceDocuments.map((docs) => { + const newMetadata = docs.metadata.reduce((newMetadata, metadata) => { + newMetadata[metadata.name] = metadata.value + return newMetadata + }, {}) + return { + pageContent: docs.pageContent, + metadata: newMetadata + } + }) + return message + } + const removeDuplicateURL = (message) => { const visitedURLs = [] const newSourceDocuments = [] + + message = handleVectaraMetadata(message) + message.sourceDocuments.forEach((source) => { if (isValidURL(source.metadata.source) && !visitedURLs.includes(source.metadata.source)) { visitedURLs.push(source.metadata.source) @@ -154,7 +172,10 @@ export const ChatMessage = ({ open, chatflowid, isDialog }) => { const response = await predictionApi.sendMessageAndGetPrediction(chatflowid, params) if (response.data) { - const data = response.data + let data = response.data + + data = handleVectaraMetadata(data) + if (typeof data === 'object' && data.text && data.sourceDocuments) { if (!isChatFlowAvailableToStream) { setMessages((prevMessages) => [