I've been encountering the error "[ERROR: Non string tool message content is not supported]" when using any Ollama model in my n8n agent for accessing Qdrant, while OpenAI models work without issues.
This error makes tools within the Ollama agent unusable. Is there a configuration option I'm missing, or is this behavior inherent to how sub-nodes function in n8n?
Screenshot 2025-02-06 at 11.13.08 1920×1247 169 KB
Here's the workflow:
{ "nodes": [ { "parameters": { "promptType": "define", "text": "=Date: {{ $now }}\n\nUser Prompt: {{ $json.chatInput }}", "hasOutputParser": true, "options": { "systemMessage": "You have access to two long term memory tools (different to the conversation history), you can store and retrieve long term memories. always retrieve memories from the qdrant vector store (Access Memory Tool) to see if they add any context that could be useful in aiding you to respond to the users query.\n\nIMPORTANT: Do not create long term memories on every user prompt, always determine if its something worth remembering.\n\nCreate a long term memory using the memory tool whenever you believe that something the user said is worth remembering, for example 'i don't like cheese' or 'i'm size 8 shoes' - these could be useful in later conversations. DO NOT USE THIS TOOL ON EVERY USER PROMPT, only store memories worth remembering." } }, "type": "@n8n/n8n-nodes-langchain.agent", "typeVersion": 1.7, "position": [ 220, 0 ], "id": "a098d361-14d7-4b08-8a00-7dce7882c589", "name": "AI Agent" }, { "parameters": { "model": "command-r7b:latest", "options": {} }, "type": "@n8n/n8n-nodes-langchain.lmChatOllama", "typeVersion": 1, "position": [ 120, 260 ], "id": "ccdb57cd-fc92-4c07-87d2-08047a172429", "name": "Ollama Chat Model", "credentials": { "ollamaApi": { "id": "OyXUCOXv8zh5NSmM", "name": "Ollama account" } } }, { "parameters": { "tableName": "n8n_test_chats" }, "type": "@n8n/n8n-nodes-langchain.memoryPostgresChat", "typeVersion": 1.3, "position": [ 280, 260 ], "id": "922fdd15-a5b0-49fa-8902-fa26274e4f48", "name": "Postgres Chat Memory", "credentials": { "postgres": { "id": "CCxoJS7PuMPUDtxT", "name": "Postgres account" } } }, { "parameters": { "options": {} }, "type": "@n8n/n8n-nodes-langchain.chatTrigger", "typeVersion": 1.1, "position": [ -120, 0 ], "id": "f16fdac4-1c53-4bda-a680-3f775b2caecb", "name": "When chat message received", "webhookId": "e250c0ef-9983-4f43-9fbe-0bce74d9c403" }, { "parameters": { "model": "mxbai-embed-large:latest" }, "type": "@n8n/n8n-nodes-langchain.embeddingsOllama", "typeVersion": 1, "position": [ 440, 360 ], "id": "3ea0cf81-9565-4bd4-b9e9-c84f1eab9f74", "name": "Embeddings Ollama", "credentials": { "ollamaApi": { "id": "OyXUCOXv8zh5NSmM", "name": "Ollama account" } } }, { "parameters": { "name": "storeMemories", "description": "Call this tool whenever the user discloses or provides information about themselves you thin should be remembered long term. Call this tool whenever you feel storing a memory would aid and assist in future conversations where the conversation memory will have been forgotten. Input the memory in the memory field, and the memory topic in the memory topic field", "workflowId": { "__rl": true, "value": "x4dxqhsUH07d8Ht9", "mode": "list", "cachedResultName": "Memory Store" }, "workflowInputs": { "mappingMode": "defineBelow", "value": { "memory": "={{ $fromai('memory_to_store') }}", "memoryTopic": "={{ $fromai('topic_of_memory') }}" }, "matchingColumns": [], "schema": [ { "id": "memory", "displayName": "memory", "required": false, "defaultMatch": false, "display": true, "canBeUsedToMatch": true, "type": "string" }, { "id": "memoryTopic", "displayName": "memoryTopic", "required": false, "defaultMatch": false, "display": true, "canBeUsedToMatch": true, "type": "string" } ], "attemptToConvertTypes": false, "convertFieldsToString": false } }, "type": "@n8n/n8n-nodes-langchain.toolWorkflow", "typeVersion": 2, "position": [ 700, 220 ], "id": "c76f26c8-b4ca-432d-b048-23c95bdd3cb6", "name": "Store Memories" }, { "parameters": { "mode": "retrieve-as-tool", "toolName": "user_long_term_memory", "toolDescription": "This tool allows you to access memories you have created about the user. Call it in every chat, and if relevant, use your memories about the user to tailor your response.\n\nAlways output as string.", "qdrantCollection": { "__rl": true, "value": "memories", "mode": "list", "cachedResultName": "memories" }, "includeDocumentMetadata": false, "options": {} }, "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant", "typeVersion": 1, "position": [ 420, 220 ], "id": "ec643690-b571-4ca8-bd17-aa10fc6e1a0f", "name": "Access Memory", "credentials": { "qdrantApi": { "id": "jgWIiGVLBrPh9fcY", "name": "QdrantApi account" } } } ], "connections": { "Ollama Chat Model": { "ai_languageModel": [ [ { "node": "AI Agent", "type": "ai_languageModel", "index": 0 } ] ] }, "Postgres Chat Memory": { "ai_memory": [ [ { "node": "AI Agent", "type": "ai_memory", "index": 0 } ] ] }, "When chat message received": { "main": [ [ { "node": "AI Agent", "type": "main", "index": 0 } ] ] }, "Embeddings Ollama": { "ai_embedding": [ [ { "node": "Access Memory", "type": "ai_embedding", "index": 0 } ] ] }, "Store Memories": { "ai_tool": [ [ { "node": "AI Agent", "type": "ai_tool", "index": 0 } ] ] }, "Access Memory": { "ai_tool": [ [ { "node": "AI Agent", "type": "ai_tool", "index": 0 } ] ] } }, "pinData": {}, "meta": { "templateCredsSetupCompleted": true, "instanceId": "558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a" } }
n8n setup details:
- 1.76.3
- Database (default: SQLite): deafult
- Running n8n via Docker
- MacOS Sonoma 14.7