# chat_message

id: 93ba6d71-adb7-4b36-93b2-e8d6461feed1
role: userMessage
chatflowid: a52f5a5d-9c82-495c-b006-55697b9815e5
createdDate: 2025-12-18 10:41:45.343
chatType: EXTERNAL
chatId: fbe217ad-10d1-4a67-91e2-d69e0b912d85
sessionId: fbe217ad-10d1-4a67-91e2-d69e0b912d85
content:
  A quels types de réglementations nationales, ou européennes sur les données, Interprivacy peut être étendu ?


id: 1c9957bb-11a0-4503-a883-7fcbaab547dd
role: apiMessage
chatflowid: a52f5a5d-9c82-495c-b006-55697b9815e5
createdDate: 2025-12-18 10:42:51.835
chatType: EXTERNAL
chatId: fbe217ad-10d1-4a67-91e2-d69e0b912d85
sessionId: fbe217ad-10d1-4a67-91e2-d69e0b912d85
content:
  Interprivacy peut facilement être étendu à des réglementations nationales, y compris les suivantes :

  - Règlement fédéral suisse sur la protection des données (FADP)
  - Règlement général sur la protection des données (GDPR) de l'Union européenne
  - Règlement britannique sur la protection des données (UK GDPR)
  Et, en plus, il peut également être étendu à des réglementations européennes supplémentaires, telles que :

  - La directive pour une harmonisation européenne de la protection des données (Data Governance Act)
  - La directive pour une harmonisation européenne de la protection des données (Data Act)
  - Les règles sur la gouvernance des données (Data Governance Rules)

  De plus, grâce à ses critères d'extension, Interprivacy peut facilement s'adapter aux réglementations complémentaires, y compris des réglementations nationales et des réglementations régionales.


# role

id: 452b2d7d-f098-12b6-8e3c-96d4a300cfdc
name: personal workspace
description: Has full control over the personal workspace
createdDate: 2025-12-15 13:12:24
updatedDate: 2025-12-15 13:12:24
permissions:
  [ "chatflows:view", "chatflows:create", "chatflows:update", "chatflows:duplicate", "chatflows:delete", "chatflows:export", "chatflows:import", "chatflows:config", "chatflows:domains", "agentflows:view", "agentflows:create", "agentflows:update", "agentflows:duplicate", "agentflows:delete", "agentflows:export", "agentflows:import", "agentflows:config", "agentflows:domains", "tools:view", "tools:create", "tools:update", "tools:delete", "tools:export", "assistants:view", "assistants:create", "assistants:update", "assistants:delete", "credentials:view", "credentials:create", "credentials:update", "credentials:delete", "credentials:share", "variables:view", "variables:create", "variables:update", "variables:delete", "apikeys:view", "apikeys:create", "apikeys:update", "apikeys:delete", "apikeys:import", "documentStores:view", "documentStores:create", "documentStores:update", "documentStores:delete", "documentStores:add-loader", "documentStores:delete-loader", "documentStores:preview-process", "documentStores:upsert-config", "datasets:view", "datasets:create", "datasets:update", "datasets:delete", "evaluators:view", "evaluators:create", "evaluators:update", "evaluators:delete", "evaluations:view", "evaluations:create", "evaluations:update", "evaluations:delete", "evaluations:run", "templates:marketplace", "templates:custom", "templates:custom-delete", "templates:toolexport", "templates:flowexport", "templates:custom-share", "workspace:export", "workspace:import", "executions:view", "executions:delete" ]


# apikey

id: 059862dc-36b7-46ab-9eb2-cfa02f3b1d56
apiKey: qJxSgqM7QkYZ12KTxVVnHZBCBDaeXYR8kLw7jUMFCys
keyName: DefaultKey
createdDate: 2025-12-17 12:45:27
updatedDate: 2025-12-17 12:45:27
workspaceId: be1a33ba-6247-4d3e-91fc-5ba79ed04f02
apiSecret:
  91f5727f4a80a851c34becfb5137a397de7a643076608c8cbe187eea53b98dc1448d115c946d08a623e24838b2afc5dd0170f653cf9c2fe2fe8224cb7d1c107c.5fde4e59595d5c7b


# chat_flow

id: a52f5a5d-9c82-495c-b006-55697b9815e5
name: AI Chatbot Europrivacy
createdDate: 2025-12-17 12:38:09
updatedDate: 2025-12-17 12:44:57
type: CHATFLOW
workspaceId: be1a33ba-6247-4d3e-91fc-5ba79ed04f02
flowData:
  {"nodes":[{"id":"chatLocalAI_0","position":{"x":1847.6722521168292,"y":403.6319178250318},"type":"customNode","data":{"label":"ChatLocalAI","name":"chatLocalAI","version":3,"type":"ChatLocalAI","icon":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/chatmodels/ChatLocalAI/localai.png","category":"Chat Models","description":"Use local LLMs like llama.cpp, gpt4all using LocalAI","baseClasses":["ChatLocalAI","BaseChatModel","BaseChatOpenAI","BaseChatModel","BaseLanguageModel","Runnable"],"credential":"","inputs":{"cache":"","basePath":"http://localai:8080","modelName":"gpt-4","temperature":"0.9","streaming":true,"maxTokens":"","topP":"","timeout":""},"filePath":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/chatmodels/ChatLocalAI/ChatLocalAI.js","inputAnchors":[{"label":"Cache","name":"cache","type":"BaseCache","optional":true,"id":"chatLocalAI_0-input-cache-BaseCache","display":true}],"inputParams":[{"label":"Connect Credential","name":"credential","type":"credential","credentialNames":["localAIApi"],"optional":true,"id":"chatLocalAI_0-input-credential-credential","display":true},{"label":"Base Path","name":"basePath","type":"string","placeholder":"http://localhost:8080/v1","id":"chatLocalAI_0-input-basePath-string","display":true},{"label":"Model Name","name":"modelName","type":"string","placeholder":"gpt4all-lora-quantized.bin","id":"chatLocalAI_0-input-modelName-string","display":true},{"label":"Temperature","name":"temperature","type":"number","step":0.1,"default":0.9,"optional":true,"id":"chatLocalAI_0-input-temperature-number","display":true},{"label":"Streaming","name":"streaming","type":"boolean","default":true,"optional":true,"additionalParams":true,"id":"chatLocalAI_0-input-streaming-boolean","display":true},{"label":"Max Tokens","name":"maxTokens","type":"number","step":1,"optional":true,"additionalParams":true,"id":"chatLocalAI_0-input-maxTokens-number","display":true},{"label":"Top Probability","name":"topP","type":"number","step":0.1,"optional":true,"additionalParams":true,"id":"chatLocalAI_0-input-topP-number","display":true},{"label":"Timeout","name":"timeout","type":"number","step":1,"optional":true,"additionalParams":true,"id":"chatLocalAI_0-input-timeout-number","display":true}],"outputs":{},"outputAnchors":[{"id":"chatLocalAI_0-output-chatLocalAI-ChatLocalAI|BaseChatModel|BaseChatOpenAI|BaseChatModel|BaseLanguageModel|Runnable","name":"chatLocalAI","label":"ChatLocalAI","description":"Use local LLMs like llama.cpp, gpt4all using LocalAI","type":"ChatLocalAI | BaseChatModel | BaseChatOpenAI | BaseChatModel | BaseLanguageModel | Runnable"}],"id":"chatLocalAI_0","selected":false},"width":300,"height":681,"selected":false,"dragging":false,"positionAbsolute":{"x":1847.6722521168292,"y":403.6319178250318}},{"id":"localAIEmbeddings_0","position":{"x":984.8177070088262,"y":918.3459136192873},"type":"customNode","data":{"label":"LocalAI Embeddings","name":"localAIEmbeddings","version":1,"type":"LocalAI Embeddings","icon":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/embeddings/LocalAIEmbedding/localai.png","category":"Embeddings","description":"Use local embeddings models like llama.cpp","baseClasses":["LocalAI Embeddings","Embeddings"],"credential":"","inputs":{"basePath":"http://localai:8080","modelName":"text-embedding-ada-002"},"filePath":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/embeddings/LocalAIEmbedding/LocalAIEmbedding.js","inputAnchors":[],"inputParams":[{"label":"Connect Credential","name":"credential","type":"credential","credentialNames":["localAIApi"],"optional":true,"id":"localAIEmbeddings_0-input-credential-credential","display":true},{"label":"Base Path","name":"basePath","type":"string","placeholder":"http://localhost:8080/v1","id":"localAIEmbeddings_0-input-basePath-string","display":true},{"label":"Model Name","name":"modelName","type":"string","placeholder":"text-embedding-ada-002","id":"localAIEmbeddings_0-input-modelName-string","display":true}],"outputs":{},"outputAnchors":[{"id":"localAIEmbeddings_0-output-localAIEmbeddings-LocalAI Embeddings|Embeddings","name":"localAIEmbeddings","label":"LocalAI Embeddings","description":"Use local embeddings models like llama.cpp","type":"LocalAI Embeddings | Embeddings"}],"id":"localAIEmbeddings_0","selected":false},"width":300,"height":479,"selected":false,"positionAbsolute":{"x":984.8177070088262,"y":918.3459136192873},"dragging":false},{"id":"textFile_0","position":{"x":978.4201923074459,"y":428.48892157866584},"type":"customNode","data":{"label":"Text File","name":"textFile","version":3,"type":"Document","icon":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/documentloaders/Text/Txt.svg","category":"Document Loaders","description":"Load data from text files","baseClasses":["Document"],"inputs":{"txtFile":"FILE-STORAGE::[\"20251217 02 Interprivacy.txt\"]","textSplitter":"{{recursiveCharacterTextSplitter_0.data.instance}}","metadata":"","omitMetadataKeys":""},"outputs":{"output":"document"},"filePath":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/documentloaders/Text/Text.js","inputAnchors":[{"label":"Text Splitter","name":"textSplitter","type":"TextSplitter","optional":true,"id":"textFile_0-input-textSplitter-TextSplitter","display":true}],"inputParams":[{"label":"Txt File","name":"txtFile","type":"file","fileType":".txt, .html, .aspx, .asp, .cpp, .c, .cs, .css, .go, .h, .java, .js, .less, .ts, .php, .proto, .python, .py, .rst, .ruby, .rb, .rs, .scala, .sc, .scss, .sol, .sql, .swift, .markdown, .md, .tex, .ltx, .vb, .xml","id":"textFile_0-input-txtFile-file","display":true},{"label":"Additional Metadata","name":"metadata","type":"json","description":"Additional metadata to be added to the extracted documents","optional":true,"additionalParams":true,"id":"textFile_0-input-metadata-json","display":true},{"label":"Omit Metadata Keys","name":"omitMetadataKeys","type":"string","rows":4,"description":"Each document loader comes with a default set of metadata keys that are extracted from the document. You can use this field to omit some of the default metadata keys. The value should be a list of keys, seperated by comma. Use * to omit all metadata keys execept the ones you specify in the Additional Metadata field","placeholder":"key1, key2, key3.nestedKey1","optional":true,"additionalParams":true,"id":"textFile_0-input-omitMetadataKeys-string","display":true}],"outputAnchors":[{"name":"output","label":"Output","type":"options","description":"Array of document objects containing metadata and pageContent","options":[{"id":"textFile_0-output-document-Document|json","name":"document","label":"Document","description":"Array of document objects containing metadata and pageContent","type":"Document | json"},{"id":"textFile_0-output-text-string|json","name":"text","label":"Text","description":"Concatenated string from pageContent of documents","type":"string | json"}],"default":"document"}],"id":"textFile_0","selected":false},"width":300,"height":445,"selected":false,"positionAbsolute":{"x":978.4201923074459,"y":428.48892157866584},"dragging":false},{"id":"recursiveCharacterTextSplitter_0","position":{"x":577.7155388397211,"y":419.9820959335792},"type":"customNode","data":{"label":"Recursive Character Text Splitter","name":"recursiveCharacterTextSplitter","version":2,"type":"RecursiveCharacterTextSplitter","icon":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/textsplitters/RecursiveCharacterTextSplitter/textsplitter.svg","category":"Text Splitters","description":"Split documents recursively by different characters - starting with \"\\n\\n\", then \"\\n\", then \" \"","baseClasses":["RecursiveCharacterTextSplitter","TextSplitter","BaseDocumentTransformer","Runnable"],"inputs":{"chunkSize":1000,"chunkOverlap":200,"separators":""},"filePath":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/textsplitters/RecursiveCharacterTextSplitter/RecursiveCharacterTextSplitter.js","inputAnchors":[],"inputParams":[{"label":"Chunk Size","name":"chunkSize","type":"number","description":"Number of characters in each chunk. Default is 1000.","default":1000,"optional":true,"id":"recursiveCharacterTextSplitter_0-input-chunkSize-number","display":true},{"label":"Chunk Overlap","name":"chunkOverlap","type":"number","description":"Number of characters to overlap between chunks. Default is 200.","default":200,"optional":true,"id":"recursiveCharacterTextSplitter_0-input-chunkOverlap-number","display":true},{"label":"Custom Separators","name":"separators","type":"string","rows":4,"description":"Array of custom separators to determine when to split the text, will override the default separators","placeholder":"[\"|\", \"##\", \">\", \"-\"]","additionalParams":true,"optional":true,"id":"recursiveCharacterTextSplitter_0-input-separators-string","display":true}],"outputs":{},"outputAnchors":[{"id":"recursiveCharacterTextSplitter_0-output-recursiveCharacterTextSplitter-RecursiveCharacterTextSplitter|TextSplitter|BaseDocumentTransformer|Runnable","name":"recursiveCharacterTextSplitter","label":"RecursiveCharacterTextSplitter","description":"Split documents recursively by different characters - starting with \"\\n\\n\", then \"\\n\", then \" \"","type":"RecursiveCharacterTextSplitter | TextSplitter | BaseDocumentTransformer | Runnable"}],"id":"recursiveCharacterTextSplitter_0","selected":false},"width":300,"height":436,"selected":false,"positionAbsolute":{"x":577.7155388397211,"y":419.9820959335792},"dragging":false},{"id":"memoryVectorStore_0","position":{"x":1454.8935523653618,"y":811.2597521126552},"type":"customNode","data":{"vectorStoreMethods":{},"label":"In-Memory Vector Store","name":"memoryVectorStore","version":1,"type":"Memory","icon":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/vectorstores/InMemory/memory.svg","category":"Vector Stores","description":"In-memory vectorstore that stores embeddings and does an exact, linear search for the most similar embeddings.","baseClasses":["Memory","VectorStoreRetriever","BaseRetriever"],"inputs":{"document":["{{textFile_0.data.instance}}"],"embeddings":"{{localAIEmbeddings_0.data.instance}}","topK":""},"outputs":{"output":"retriever"},"filePath":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/vectorstores/InMemory/InMemoryVectorStore.js","inputAnchors":[{"label":"Document","name":"document","type":"Document","list":true,"optional":true,"id":"memoryVectorStore_0-input-document-Document","display":true},{"label":"Embeddings","name":"embeddings","type":"Embeddings","id":"memoryVectorStore_0-input-embeddings-Embeddings","display":true}],"inputParams":[{"label":"Top K","name":"topK","description":"Number of top results to fetch. Default to 4","placeholder":"4","type":"number","optional":true,"id":"memoryVectorStore_0-input-topK-number","display":true}],"outputAnchors":[{"name":"output","label":"Output","type":"options","description":"","options":[{"id":"memoryVectorStore_0-output-retriever-Memory|VectorStoreRetriever|BaseRetriever","name":"retriever","label":"Memory Retriever","description":"","type":"Memory | VectorStoreRetriever | BaseRetriever"},{"id":"memoryVectorStore_0-output-vectorStore-Memory|VectorStore","name":"vectorStore","label":"Memory Vector Store","description":"","type":"Memory | VectorStore"}],"default":"retriever"}],"id":"memoryVectorStore_0","selected":false},"width":300,"height":413,"selected":false,"positionAbsolute":{"x":1454.8935523653618,"y":811.2597521126552},"dragging":false},{"id":"conversationalRetrievalQAChain_0","position":{"x":2289.8749559109056,"y":1059.3246713895855},"type":"customNode","data":{"label":"Conversational Retrieval QA Chain","name":"conversationalRetrievalQAChain","version":3,"type":"ConversationalRetrievalQAChain","icon":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/chains/ConversationalRetrievalQAChain/qa.svg","category":"Chains","description":"Document QA - built on RetrievalQAChain to provide a chat history component","baseClasses":["ConversationalRetrievalQAChain","BaseChain","Runnable"],"inputs":{"model":"{{chatLocalAI_0.data.instance}}","vectorStoreRetriever":"{{memoryVectorStore_0.data.instance}}","memory":"","returnSourceDocuments":"","rephrasePrompt":"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.\n\nChat History:\n{chat_history}\nFollow Up Input: {question}\nStandalone Question:","responsePrompt":"I want you to act as a document that I am having a conversation with. \nYou are a virtual assistant for Europrivacy, a company specializing in data protection and GDPR compliance. \nYour name is \"Europrivacy AI Assistant\". Using the provided context, answer the user's question to the best of your ability using the resources provided.\n\nIMPORTANT RULE: ALWAYS respond in the same language used by the user to ask their question. \n- If the question is in French, respond in French. \n- If the question is in English, respond in English. \n- If the question is in German, respond in German. \n- Etc. \n\nBe professional and concise. \nBase your responses solely on the context provided.\n\nIf there is nothing in the context relevant to the question at hand, just say \"Hmm, I'm not sure\" and stop after that. Refuse to answer any question not about the info. Never break character.\n------------\n{context}\n------------\nREMEMBER: If there is no relevant information within the context, just say \"Hmm, I'm not sure\". Don't try to make up an answer. Never break character.\n","inputModeration":""},"filePath":"/usr/local/lib/node_modules/flowise/node_modules/flowise-components/dist/nodes/chains/ConversationalRetrievalQAChain/ConversationalRetrievalQAChain.js","inputAnchors":[{"label":"Chat Model","name":"model","type":"BaseChatModel","id":"conversationalRetrievalQAChain_0-input-model-BaseChatModel","display":true},{"label":"Vector Store Retriever","name":"vectorStoreRetriever","type":"BaseRetriever","id":"conversationalRetrievalQAChain_0-input-vectorStoreRetriever-BaseRetriever","display":true},{"label":"Memory","name":"memory","type":"BaseMemory","optional":true,"description":"If left empty, a default BufferMemory will be used","id":"conversationalRetrievalQAChain_0-input-memory-BaseMemory","display":true},{"label":"Input Moderation","description":"Detect text that could generate harmful output and prevent it from being sent to the language model","name":"inputModeration","type":"Moderation","optional":true,"list":true,"id":"conversationalRetrievalQAChain_0-input-inputModeration-Moderation","display":true}],"inputParams":[{"label":"Return Source Documents","name":"returnSourceDocuments","type":"boolean","optional":true,"id":"conversationalRetrievalQAChain_0-input-returnSourceDocuments-boolean","display":true},{"label":"Rephrase Prompt","name":"rephrasePrompt","type":"string","description":"Using previous chat history, rephrase question into a standalone question","warning":"Prompt must include input variables: {chat_history} and {question}","rows":4,"additionalParams":true,"optional":true,"default":"Given the following conversation and a follow up question, rephrase the follow up question to be a standalone question.\n\nChat History:\n{chat_history}\nFollow Up Input: {question}\nStandalone Question:","id":"conversationalRetrievalQAChain_0-input-rephrasePrompt-string","display":true},{"label":"Response Prompt","name":"responsePrompt","type":"string","description":"Taking the rephrased question, search for answer from the provided context","warning":"Prompt must include input variable: {context}","rows":4,"additionalParams":true,"optional":true,"default":"I want you to act as a document that I am having a conversation with. Your name is \"AI Assistant\". Using the provided context, answer the user's question to the best of your ability using the resources provided.\nIf there is nothing in the context relevant to the question at hand, just say \"Hmm, I'm not sure\" and stop after that. Refuse to answer any question not about the info. Never break character.\n------------\n{context}\n------------\nREMEMBER: If there is no relevant information within the context, just say \"Hmm, I'm not sure\". Don't try to make up an answer. Never break character.","id":"conversationalRetrievalQAChain_0-input-responsePrompt-string","display":true}],"outputs":{},"outputAnchors":[{"id":"conversationalRetrievalQAChain_0-output-conversationalRetrievalQAChain-ConversationalRetrievalQAChain|BaseChain|Runnable","name":"conversationalRetrievalQAChain","label":"ConversationalRetrievalQAChain","description":"Document QA - built on RetrievalQAChain to provide a chat history component","type":"ConversationalRetrievalQAChain | BaseChain | Runnable"}],"id":"conversationalRetrievalQAChain_0","selected":false},"width":300,"height":538,"selected":true,"positionAbsolute":{"x":2289.8749559109056,"y":1059.3246713895855},"dragging":false}],"edges":[{"source":"recursiveCharacterTextSplitter_0","sourceHandle":"recursiveCharacterTextSplitter_0-output-recursiveCharacterTextSplitter-RecursiveCharacterTextSplitter|TextSplitter|BaseDocumentTransformer|Runnable","target":"textFile_0","targetHandle":"textFile_0-input-textSplitter-TextSplitter","type":"buttonedge","id":"recursiveCharacterTextSplitter_0-recursiveCharacterTextSplitter_0-output-recursiveCharacterTextSplitter-RecursiveCharacterTextSplitter|TextSplitter|BaseDocumentTransformer|Runnable-textFile_0-textFile_0-input-textSplitter-TextSplitter"},{"source":"textFile_0","sourceHandle":"textFile_0-output-document-Document|json","target":"memoryVectorStore_0","targetHandle":"memoryVectorStore_0-input-document-Document","type":"buttonedge","id":"textFile_0-textFile_0-output-document-Document|json-memoryVectorStore_0-memoryVectorStore_0-input-document-Document"},{"source":"localAIEmbeddings_0","sourceHandle":"localAIEmbeddings_0-output-localAIEmbeddings-LocalAI Embeddings|Embeddings","target":"memoryVectorStore_0","targetHandle":"memoryVectorStore_0-input-embeddings-Embeddings","type":"buttonedge","id":"localAIEmbeddings_0-localAIEmbeddings_0-output-localAIEmbeddings-LocalAI Embeddings|Embeddings-memoryVectorStore_0-memoryVectorStore_0-input-embeddings-Embeddings"},{"source":"memoryVectorStore_0","sourceHandle":"memoryVectorStore_0-output-retriever-Memory|VectorStoreRetriever|BaseRetriever","target":"conversationalRetrievalQAChain_0","targetHandle":"conversationalRetrievalQAChain_0-input-vectorStoreRetriever-BaseRetriever","type":"buttonedge","id":"memoryVectorStore_0-memoryVectorStore_0-output-retriever-Memory|VectorStoreRetriever|BaseRetriever-conversationalRetrievalQAChain_0-conversationalRetrievalQAChain_0-input-vectorStoreRetriever-BaseRetriever"},{"source":"chatLocalAI_0","sourceHandle":"chatLocalAI_0-output-chatLocalAI-ChatLocalAI|BaseChatModel|BaseChatOpenAI|BaseChatModel|BaseLanguageModel|Runnable","target":"conversationalRetrievalQAChain_0","targetHandle":"conversationalRetrievalQAChain_0-input-model-BaseChatModel","type":"buttonedge","id":"chatLocalAI_0-chatLocalAI_0-output-chatLocalAI-ChatLocalAI|BaseChatModel|BaseChatOpenAI|BaseChatModel|BaseLanguageModel|Runnable-conversationalRetrievalQAChain_0-conversationalRetrievalQAChain_0-input-model-BaseChatModel"}],"viewport":{"x":-674.8043698463771,"y":-448.4484031382002,"zoom":0.7820533454124792}}


