Functions/tools get repeatedly triggered based on a single request to Ollama

I got function calling now working with a local Ollama setup based on gpt-oss:20b, but now I have the issue, that I do a request and the tools do not get called once for the request, but repeatedly.

Did anybody else experience this behaviour?
What could cause this behaviour? Something seems to get out of sync in my application - or the TTMSMCPAI component just seems not to detect that the reuqest is fulfilled and the tools have been called already once.

Do the function calls respond with a response, at least an 'OK' for example?

This is how the log looks ....
[I modified this post to make the log cleaner - before there were different issues mixed up]

20250825T120413: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:04:13.9637352Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:1 Text:... We need to call AddKeywords once with Id: "1" and Keywords: JSON object where each keyword is key and true. We need to extract keywords from the text. Let's identify keywords: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Also maybe "Erfolgreiche Projekte". But we need to produce JSON object with keys and true. Let's produce something like:\n\n{\n "Digitalisierung": true,\n "maritime Industrie": true,\n "Schiffbau": true,\n "Datenintegration": true,\n "Automatisierung": true,\n "Künstliche Intelligenz": true,\n "Plattformlösungen": true,\n "Zusammenarbeit": true,\n "Konstruktion": true,\n "Produktion": true,\n "Zulieferer": true,\n "Datenqualität": true,\n "Governance": true,\n "IT-Sicherheit": true,\n "klare Strategien": true,\n "agile Methoden": true,\n "Mitarbeitende": true,\n "Erfolgreiche Projekte": true\n}\n\nBut maybe we should keep keys simple: "Digitalisierung", "maritime Industrie", "Schiffbau", "Datenintegration", "Automatisierung", "KI", "Plattformlösungen", "Zusammenarbeit", "Konstruktion", "Produktion", "Zulieferer", "Datenqualität", "Governance", "IT-Sicherheit", "Strategien", "agile Methoden", "Mitarbeitende", "Projekte". Let's choose a set. The instruction: "Schlagworte" meaning keywords. Provide JSON object where keyword is key and boolean true. So we need to call AddKeywords with Id: "1" and Keywords: {...}. Let's produce a concise set.\n\nWe'll call function.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"1","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Projekte":true,"Schiffbau":true,"Strategien":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":37115117700,"load_duration":155140200,"prompt_eval_count":353,"prompt_eval_duration":64467600,"eval_count":576,"eval_duration":36879249500}
20250825T120413: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:04:13.9637352Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:1 Text:... We need to call AddKeywords once with Id: "1" and Keywords: JSON object where each keyword is key and true. We need to extract keywords from the text. Let's identify keywords: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Also maybe "Erfolgreiche Projekte". But we need to produce JSON object with keys and true. Let's produce something like:\n\n{\n "Digitalisierung": true,\n "maritime Industrie": true,\n "Schiffbau": true,\n "Datenintegration": true,\n "Automatisierung": true,\n "Künstliche Intelligenz": true,\n "Plattformlösungen": true,\n "Zusammenarbeit": true,\n "Konstruktion": true,\n "Produktion": true,\n "Zulieferer": true,\n "Datenqualität": true,\n "Governance": true,\n "IT-Sicherheit": true,\n "klare Strategien": true,\n "agile Methoden": true,\n "Mitarbeitende": true,\n "Erfolgreiche Projekte": true\n}\n\nBut maybe we should keep keys simple: "Digitalisierung", "maritime Industrie", "Schiffbau", "Datenintegration", "Automatisierung", "KI", "Plattformlösungen", "Zusammenarbeit", "Konstruktion", "Produktion", "Zulieferer", "Datenqualität", "Governance", "IT-Sicherheit", "Strategien", "agile Methoden", "Mitarbeitende", "Projekte". Let's choose a set. The instruction: "Schlagworte" meaning keywords. Provide JSON object where keyword is key and boolean true. So we need to call AddKeywords with Id: "1" and Keywords: {...}. Let's produce a concise set.\n\nWe'll call function.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"1","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Projekte":true,"Schiffbau":true,"Strategien":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":37115117700,"load_duration":155140200,"prompt_eval_count":353,"prompt_eval_duration":64467600,"eval_count":576,"eval_duration":36879249500}
20250825T120413: result after tool call:Done adding keywords.
20250825T120413: tools response:{"role":"tool","name":"AddKeywords","content":"Done adding keywords."}
20250825T120413: Nr. of tools:1
20250825T120413: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text in der Assistent Role empfängt und dann zu den Texten Schlagworte entwickelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeyword".\r\nDie AddKeyWord-Funktion benötigt die Id des Textes als String und die Schlagworte als JSON-Objekt bei dem das Keyword der Bezeichner ist und dann ein Boolean-True-Wert kommt.\r\nCall the function only once.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:1 Text:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."},{"role":"tool","name":"AddKeywords","content":"Done adding keywords."} ],"tools": [ {"type": "function","function":{"name":"AddKeywords","description":"Function to add keywords.","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"object", "description":""}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T120413: Executing request with url: [192.168.1.109:11434/api/chat]
20250825T120446: Nr. of tools:1
20250825T120446: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text in der Assistent Role empfängt und dann zu den Texten Schlagworte entwickelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeyword".\r\nDie AddKeyWord-Funktion benötigt die Id des Textes als String und die Schlagworte als JSON-Objekt bei dem das Keyword der Bezeichner ist und dann ein Boolean-True-Wert kommt.\r\nCall the function only once.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:5 Text:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."} ],"tools": [ {"type": "function","function":{"name":"AddKeywords","description":"Function to add keywords.","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"object", "description":""}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T120446: Executing request with url: [192.168.1.109:11434/api/chat]
20250825T120454: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:04:54.2589592Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:1 Text:... We need to call AddKeywords once with Id: "1" and Keywords: JSON object where each keyword is key and true. We need to extract keywords from the text. Let's identify keywords: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Also maybe "Erfolgreiche Projekte". But we need to produce JSON object with keys and true. Let's produce something like:\n\n{\n "Digitalisierung": true,\n "maritime Industrie": true,\n "Schiffbau": true,\n "Datenintegration": true,\n "Automatisierung": true,\n "Künstliche Intelligenz": true,\n "Plattformlösungen": true,\n "Zusammenarbeit": true,\n "Konstruktion": true,\n "Produktion": true,\n "Zulieferer": true,\n "Datenqualität": true,\n "Governance": true,\n "IT-Sicherheit": true,\n "klare Strategien": true,\n "agile Methoden": true,\n "Mitarbeitende": true,\n "Erfolgreiche Projekte": true\n}\n\nBut maybe we should keep keys simple: "Digitalisierung", "maritime Industrie", "Schiffbau", "Datenintegration", "Automatisierung", "KI", "Plattformlösungen", "Zusammenarbeit", "Konstruktion", "Produktion", "Zulieferer", "Datenqualität", "Governance", "IT-Sicherheit", "Strategien", "agile Methoden", "Mitarbeitende", "Projekte". Let's choose a set. The instruction: "Schlagworte" meaning keywords. Provide JSON object where keyword is key and boolean true. So we need to call AddKeywords with Id: "1" and Keywords: {...}. Let's produce a concise set.\n\nWe'll call function.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"1","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Projekte":true,"Schiffbau":true,"Strategien":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":40254536300,"load_duration":157043700,"prompt_eval_count":353,"prompt_eval_duration":64940100,"eval_count":576,"eval_duration":40014752100}
20250825T120454: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:04:54.2589592Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:1 Text:... We need to call AddKeywords once with Id: "1" and Keywords: JSON object where each keyword is key and true. We need to extract keywords from the text. Let's identify keywords: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Also maybe "Erfolgreiche Projekte". But we need to produce JSON object with keys and true. Let's produce something like:\n\n{\n "Digitalisierung": true,\n "maritime Industrie": true,\n "Schiffbau": true,\n "Datenintegration": true,\n "Automatisierung": true,\n "Künstliche Intelligenz": true,\n "Plattformlösungen": true,\n "Zusammenarbeit": true,\n "Konstruktion": true,\n "Produktion": true,\n "Zulieferer": true,\n "Datenqualität": true,\n "Governance": true,\n "IT-Sicherheit": true,\n "klare Strategien": true,\n "agile Methoden": true,\n "Mitarbeitende": true,\n "Erfolgreiche Projekte": true\n}\n\nBut maybe we should keep keys simple: "Digitalisierung", "maritime Industrie", "Schiffbau", "Datenintegration", "Automatisierung", "KI", "Plattformlösungen", "Zusammenarbeit", "Konstruktion", "Produktion", "Zulieferer", "Datenqualität", "Governance", "IT-Sicherheit", "Strategien", "agile Methoden", "Mitarbeitende", "Projekte". Let's choose a set. The instruction: "Schlagworte" meaning keywords. Provide JSON object where keyword is key and boolean true. So we need to call AddKeywords with Id: "1" and Keywords: {...}. Let's produce a concise set.\n\nWe'll call function.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"1","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Projekte":true,"Schiffbau":true,"Strategien":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":40254536300,"load_duration":157043700,"prompt_eval_count":353,"prompt_eval_duration":64940100,"eval_count":576,"eval_duration":40014752100}
20250825T120454: result after tool call:Done adding keywords.
20250825T120454: tools response:{"role":"tool","name":"AddKeywords","content":"Done adding keywords."}
20250825T120454: Nr. of tools:1
20250825T120454: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text in der Assistent Role empfängt und dann zu den Texten Schlagworte entwickelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeyword".\r\nDie AddKeyWord-Funktion benötigt die Id des Textes als String und die Schlagworte als JSON-Objekt bei dem das Keyword der Bezeichner ist und dann ein Boolean-True-Wert kommt.\r\nCall the function only once.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:1 Text:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."},{"role":"tool","name":"AddKeywords","content":"Done adding keywords."} ],"tools": [ {"type": "function","function":{"name":"AddKeywords","description":"Function to add keywords.","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"object", "description":""}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T120454: Executing request with url: [192.168.1.109:11434/api/chat]
20250825T120509: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:05:09.5024413Z","message":{"role":"assistant","content":"","thinking":"We need to call AddKeywords function once. Provide Id: "5" and Keywords: JSON object with keys as keywords and true. Need to choose keywords relevant: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Provide as JSON.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"5","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":22982497900,"load_duration":208005700,"prompt_eval_count":341,"prompt_eval_duration":2301755000,"eval_count":225,"eval_duration":20444229300}
20250825T120509: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:05:09.5024413Z","message":{"role":"assistant","content":"","thinking":"We need to call AddKeywords function once. Provide Id: "5" and Keywords: JSON object with keys as keywords and true. Need to choose keywords relevant: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Provide as JSON.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"5","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":22982497900,"load_duration":208005700,"prompt_eval_count":341,"prompt_eval_duration":2301755000,"eval_count":225,"eval_duration":20444229300}
20250825T120509: result after tool call:Done adding keywords.
20250825T120509: tools response:{"role":"tool","name":"AddKeywords","content":"Done adding keywords."}
20250825T120509: Nr. of tools:1
20250825T120509: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text in der Assistent Role empfängt und dann zu den Texten Schlagworte entwickelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeyword".\r\nDie AddKeyWord-Funktion benötigt die Id des Textes als String und die Schlagworte als JSON-Objekt bei dem das Keyword der Bezeichner ist und dann ein Boolean-True-Wert kommt.\r\nCall the function only once.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:5 Text:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."},{"role":"tool","name":"AddKeywords","content":"Done adding keywords."} ],"tools": [ {"type": "function","function":{"name":"AddKeywords","description":"Function to add keywords.","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"object", "description":""}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T120509: Executing request with url: [192.168.1.109:11434/api/chat]
20250825T120518: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:05:18.4958774Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:1 Text: ... We need to add keywords. We need to call AddKeywords once. We need to produce JSON with Id as string and Keywords as object mapping keyword to true. We need to choose keywords relevant to the text. Let's pick: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Provide as JSON.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"1","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":24098698400,"load_duration":208926200,"prompt_eval_count":353,"prompt_eval_duration":217163200,"eval_count":255,"eval_duration":23635698000}
20250825T120518: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:05:18.4958774Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:1 Text: ... We need to add keywords. We need to call AddKeywords once. We need to produce JSON with Id as string and Keywords as object mapping keyword to true. We need to choose keywords relevant to the text. Let's pick: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Provide as JSON.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"1","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":24098698400,"load_duration":208926200,"prompt_eval_count":353,"prompt_eval_duration":217163200,"eval_count":255,"eval_duration":23635698000}
20250825T120518: result after tool call:Done adding keywords.
20250825T120518: tools response:{"role":"tool","name":"AddKeywords","content":"Done adding keywords."}
20250825T120518: Nr. of tools:1
20250825T120518: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text in der Assistent Role empfängt und dann zu den Texten Schlagworte entwickelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeyword".\r\nDie AddKeyWord-Funktion benötigt die Id des Textes als String und die Schlagworte als JSON-Objekt bei dem das Keyword der Bezeichner ist und dann ein Boolean-True-Wert kommt.\r\nCall the function only once.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:1 Text:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."},{"role":"tool","name":"AddKeywords","content":"Done adding keywords."} ],"tools": [ {"type": "function","function":{"name":"AddKeywords","description":"Function to add keywords.","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"object", "description":""}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T120518: Executing request with url: [192.168.1.109:11434/api/chat]
20250825T120539: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:05:39.5028268Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:5 Text:... We need to add keywords. We need to call AddKeywords once. We need to produce JSON with Id as string and Keywords as object mapping keyword to true. We need to choose keywords relevant to text: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Probably we need to produce a JSON object. The function signature: AddKeywords expects Id: Record\u003cstring, any\u003e, Keywords: Record\u003cstring, any\u003e. So Id should be string "5". Keywords: { "Digitalisierung": true, "maritime Industrie": true, ... }.\n\nWe need to call function once. So produce a function call.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"5","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":29834080500,"load_duration":205158500,"prompt_eval_count":353,"prompt_eval_duration":293703500,"eval_count":317,"eval_duration":29294166200}
20250825T120539: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:05:39.5028268Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:5 Text:... We need to add keywords. We need to call AddKeywords once. We need to produce JSON with Id as string and Keywords as object mapping keyword to true. We need to choose keywords relevant to text: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Probably we need to produce a JSON object. The function signature: AddKeywords expects Id: Record\u003cstring, any\u003e, Keywords: Record\u003cstring, any\u003e. So Id should be string "5". Keywords: { "Digitalisierung": true, "maritime Industrie": true, ... }.\n\nWe need to call function once. So produce a function call.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"5","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":29834080500,"load_duration":205158500,"prompt_eval_count":353,"prompt_eval_duration":293703500,"eval_count":317,"eval_duration":29294166200}
20250825T120539: result after tool call:Done adding keywords.
20250825T120539: tools response:{"role":"tool","name":"AddKeywords","content":"Done adding keywords."}
20250825T120539: Nr. of tools:1
20250825T120539: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text in der Assistent Role empfängt und dann zu den Texten Schlagworte entwickelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeyword".\r\nDie AddKeyWord-Funktion benötigt die Id des Textes als String und die Schlagworte als JSON-Objekt bei dem das Keyword der Bezeichner ist und dann ein Boolean-True-Wert kommt.\r\nCall the function only once.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:5 Text:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."},{"role":"tool","name":"AddKeywords","content":"Done adding keywords."} ],"tools": [ {"type": "function","function":{"name":"AddKeywords","description":"Function to add keywords.","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"object", "description":""}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T120539: Executing request with url: [192.168.1.109:11434/api/chat]
20250825T120542: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:05:42.5283515Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:1 Text: ... We need to add keywords. We need to call AddKeywords once. We need to produce JSON with Id as string and Keywords as object mapping keyword to true. We need to choose keywords relevant to the text. Let's pick: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Provide as JSON.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"1","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":23905395600,"load_duration":187178300,"prompt_eval_count":353,"prompt_eval_duration":230888200,"eval_count":255,"eval_duration":23460361200}
20250825T120542: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:05:42.5283515Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:1 Text: ... We need to add keywords. We need to call AddKeywords once. We need to produce JSON with Id as string and Keywords as object mapping keyword to true. We need to choose keywords relevant to the text. Let's pick: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Provide as JSON.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"1","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":23905395600,"load_duration":187178300,"prompt_eval_count":353,"prompt_eval_duration":230888200,"eval_count":255,"eval_duration":23460361200}
20250825T120542: result after tool call:Done adding keywords.
20250825T120542: tools response:{"role":"tool","name":"AddKeywords","content":"Done adding keywords."}
20250825T120542: Nr. of tools:1
20250825T120542: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text in der Assistent Role empfängt und dann zu den Texten Schlagworte entwickelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeyword".\r\nDie AddKeyWord-Funktion benötigt die Id des Textes als String und die Schlagworte als JSON-Objekt bei dem das Keyword der Bezeichner ist und dann ein Boolean-True-Wert kommt.\r\nCall the function only once.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:1 Text:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."},{"role":"tool","name":"AddKeywords","content":"Done adding keywords."} ],"tools": [ {"type": "function","function":{"name":"AddKeywords","description":"Function to add keywords.","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"object", "description":""}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T120542: Executing request with url: [192.168.1.109:11434/api/chat]
20250825T120606: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:06:06.3738815Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:1 Text: ... We need to add keywords. We need to call AddKeywords once. We need to produce JSON with Id as string and Keywords as object mapping keyword to true. We need to choose keywords relevant to the text. Let's pick: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Provide as JSON.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"1","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":23697211900,"load_duration":213521800,"prompt_eval_count":353,"prompt_eval_duration":228456500,"eval_count":255,"eval_duration":23210924800}
20250825T120606: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:06:06.3738815Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:1 Text: ... We need to add keywords. We need to call AddKeywords once. We need to produce JSON with Id as string and Keywords as object mapping keyword to true. We need to choose keywords relevant to the text. Let's pick: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Provide as JSON.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"1","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":23697211900,"load_duration":213521800,"prompt_eval_count":353,"prompt_eval_duration":228456500,"eval_count":255,"eval_duration":23210924800}
20250825T120606: result after tool call:Done adding keywords.
20250825T120606: tools response:{"role":"tool","name":"AddKeywords","content":"Done adding keywords."}
20250825T120606: Nr. of tools:1
20250825T120606: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text in der Assistent Role empfängt und dann zu den Texten Schlagworte entwickelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeyword".\r\nDie AddKeyWord-Funktion benötigt die Id des Textes als String und die Schlagworte als JSON-Objekt bei dem das Keyword der Bezeichner ist und dann ein Boolean-True-Wert kommt.\r\nCall the function only once.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:1 Text:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."},{"role":"tool","name":"AddKeywords","content":"Done adding keywords."} ],"tools": [ {"type": "function","function":{"name":"AddKeywords","description":"Function to add keywords.","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"object", "description":""}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T120606: Executing request with url: [192.168.1.109:11434/api/chat]
20250825T120608: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:06:08.8636725Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:5 Text: ... We need to add keywords. We need to call AddKeywords once. We need to produce JSON with Id as string and Keywords as object mapping keyword to true. We need to choose keywords relevant to text: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Probably we need to produce a JSON object. The function signature: AddKeywords expects Id: Record\u003cstring, any\u003e, Keywords: Record\u003cstring, any\u003e. So Id should be string "5". Keywords: { "Digitalisierung": true, "maritime Industrie": true, ... }.\n\nWe need to call function once. So produce a function call.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"5","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":29255128700,"load_duration":202405600,"prompt_eval_count":353,"prompt_eval_duration":254665900,"eval_count":317,"eval_duration":28763086500}
20250825T120608: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T10:06:08.8636725Z","message":{"role":"assistant","content":"","thinking":"We need to respond with the function call. The user gave Id:5 Text: ... We need to add keywords. We need to call AddKeywords once. We need to produce JSON with Id as string and Keywords as object mapping keyword to true. We need to choose keywords relevant to text: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Probably we need to produce a JSON object. The function signature: AddKeywords expects Id: Record\u003cstring, any\u003e, Keywords: Record\u003cstring, any\u003e. So Id should be string "5". Keywords: { "Digitalisierung": true, "maritime Industrie": true, ... }.\n\nWe need to call function once. So produce a function call.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"5","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":29255128700,"load_duration":202405600,"prompt_eval_count":353,"prompt_eval_duration":254665900,"eval_count":317,"eval_duration":28763086500}
20250825T120608: result after tool call:Done adding keywords.
20250825T120608: tools response:{"role":"tool","name":"AddKeywords","content":"Done adding keywords."}
20250825T120608: Nr. of tools:1
20250825T120608: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text in der Assistent Role empfängt und dann zu den Texten Schlagworte entwickelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeyword".\r\nDie AddKeyWord-Funktion benötigt die Id des Textes als String und die Schlagworte als JSON-Objekt bei dem das Keyword der Bezeichner ist und dann ein Boolean-True-Wert kommt.\r\nCall the function only once.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:5 Text:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."},{"role":"tool","name":"AddKeywords","content":"Done adding keywords."} ],"tools": [ {"type": "function","function":{"name":"AddKeywords","description":"Function to add keywords.","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"object", "description":""}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T120608: Executing request with url: [192.168.1.109:11434/api/chat]

[.... continuously ...]

Yes, the request response completed event of the componnet is triggered.

Total Bytes: 1252 - Resultstring: {"model":"gpt-oss:20B","created_at":"2025-08-25T09:51:04.0440826Z","message":{"role":"assistant","content":"","thinking":"We need to call AddKeywords function once. Provide Id as string "1" and Keywords as JSON object with keys as keywords and true. Need to choose keywords relevant to text. Let's pick: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Provide as JSON.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"1","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":15254169800,"load_duration":158997300,"prompt_eval_count":341,"prompt_eval_duration":677798400,"eval_count":231,"eval_duration":14408568900}

This is how the ARequestResult.ResultString looks in the OnRequestComplete event.

And yes - I set Result of the function call to Result := 'Done adding keywords.';

But, if that could change something - I can try some other Results.

I tried with two other results ...
// Result := 'OK - 200 - I received and added the keywords. Thank you. Done adding keywords. You do not need to answer anymore.';
Result := 'OK';

Both lead to the same behaviour - the functions OnExcecute gets called again an again, but I do not receive any more RequestComplete events - which is strange, as according to the logs I should get them. I will add a RequestProgress and RequestCanceled handler to my testapp to see if those get triggered.

This is the ouput of the test application - I log the request context and the response to a memo component in the form. I also log in this memo the triggering of the RequestComplete, RequestProgress and RequestCanceled events. I itterate over the keywords array and add lines for each keyword to the memo.

The expected result would IMO be that the keywords are shown once in the log (the tool is called once and not repeatedly). Current result is however that the request gets completed, the tool function gets called afterwards and then it gets called again and again.
Am I maybe not allowed to access the GUI from within the Tools Execute event?

Here the output of my console memo:
You: Id:50 Text:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus.
Request Progress
Request Progress
25.08.2025 12:22:38: request complete
Total Bytes: 1225 - Resultstring: {"model":"gpt-oss:20B","created_at":"2025-08-25T10:22:38.3268956Z","message":{"role":"assistant","content":"","thinking":"We need to call AddKeywords function once. Provide Id: "50" and Keywords: JSON object with keys as keywords and true. Need to think of relevant keywords: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Provide as JSON.","tool_calls":[{"function":{"name":"AddKeywords","arguments":{"Id":"50","Keywords":{"Automatisierung":true,"Datenintegration":true,"Datenqualität":true,"Digitalisierung":true,"Governance":true,"IT-Sicherheit":true,"Konstruktion":true,"Künstliche Intelligenz":true,"Mitarbeitende":true,"Plattformlösungen":true,"Produktion":true,"Schiffbau":true,"Zulieferer":true,"Zusammenarbeit":true,"agile Methoden":true,"klare Strategien":true,"maritime Industrie":true}}}}]},"done_reason":"stop","done":true,"total_duration":15139556200,"load_duration":170028600,"prompt_eval_count":341,"prompt_eval_duration":699950700,"eval_count":226,"eval_duration":14260760600}
50: Automatisierung
50: Datenintegration
50: Datenqualität
50: Digitalisierung
50: Governance
50: IT-Sicherheit
50: Konstruktion
50: Künstliche Intelligenz
50: Mitarbeitende
50: Plattformlösungen
50: Produktion
50: Schiffbau
50: Zulieferer
50: Zusammenarbeit
50: agile Methoden
50: klare Strategien
50: maritime Industrie
50: Automatisierung
50: Datenintegration
50: Datenqualität
50: Digitalisierung
50: Governance
50: IT-Sicherheit
50: Konstruktion
50: Künstliche Intelligenz
50: Mitarbeitende
50: Plattformlösungen
50: Produktion
50: Schiffbau
50: Zulieferer
50: Zusammenarbeit
50: agile Methoden
50: klare Strategien
50: maritime Industrie
50: Automatisierung
50: Datenintegration
50: Datenqualität
50: Digitalisierung
50: Governance
50: IT-Sicherheit
50: Konstruktion
50: Künstliche Intelligenz
50: Mitarbeitende
50: Plattformlösungen
50: Produktion
50: Schiffbau
50: Zulieferer
50: Zusammenarbeit
50: agile Methoden
50: klare Strategien
50: maritime Industrie

I rewrote the code, so that the function argument structure is a little simpler, but the problem persists. The tools function gets called again and again after the single request complete.

Here is the new log:
20250825T133802: Nr. of tools:1
20250825T133802: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text im Kontext empfängt und dann zu den Texten Schlagworte ermittelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeywords".\r\nDie AddKeywords-Funktion benötigt die Id des Textes als String und die Schlagworte als String-Array.\r\nDas erwartete Format für die Argumente ist { "Id": "123", "Keywords": ["foo", "bar", "baz"] } - bei den konkreten Werten 123, foo etc. handelt es sich nur um Beispiele.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:2x\r\nText:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."} ],"tools": [ {"type": "function","function":{"name":"AddKeyword","description":"Function to add keywords. ","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"array", "items":{"type":"string"}, "description":"Array of strings - each string represents a keyword of the text."}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T133802: Executing request with url: [192.168.1.109:11434/api/chat]
20250825T133817: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T11:38:17.531845Z","message":{"role":"assistant","content":"","thinking":"We need to extract keywords from the text. The function AddKeyword expects Id: string and Keywords: array of strings. The Id is "2x". We need to call the function. Let's produce keywords: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, Strategien, agile Methoden, Mitarbeitende. Maybe also "Digitalisierung" etc. Provide array.","tool_calls":[{"function":{"name":"AddKeyword","arguments":{"Id":"2x","Keywords":["Digitalisierung","maritime Industrie","Schiffbau","Datenintegration","Automatisierung","Künstliche Intelligenz","Plattformlösungen","Zusammenarbeit","Konstruktion","Produktion","Zulieferer","Datenqualität","Governance","IT-Sicherheit","Strategien","agile Methoden","Mitarbeitende"]}}}]},"done_reason":"stop","done":true,"total_duration":14775748600,"load_duration":159310100,"prompt_eval_count":380,"prompt_eval_duration":840942000,"eval_count":206,"eval_duration":13766648900}
20250825T133817: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T11:38:17.531845Z","message":{"role":"assistant","content":"","thinking":"We need to extract keywords from the text. The function AddKeyword expects Id: string and Keywords: array of strings. The Id is "2x". We need to call the function. Let's produce keywords: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, Strategien, agile Methoden, Mitarbeitende. Maybe also "Digitalisierung" etc. Provide array.","tool_calls":[{"function":{"name":"AddKeyword","arguments":{"Id":"2x","Keywords":["Digitalisierung","maritime Industrie","Schiffbau","Datenintegration","Automatisierung","Künstliche Intelligenz","Plattformlösungen","Zusammenarbeit","Konstruktion","Produktion","Zulieferer","Datenqualität","Governance","IT-Sicherheit","Strategien","agile Methoden","Mitarbeitende"]}}}]},"done_reason":"stop","done":true,"total_duration":14775748600,"load_duration":159310100,"prompt_eval_count":380,"prompt_eval_duration":840942000,"eval_count":206,"eval_duration":13766648900}
20250825T133817: result after tool call:OK - 200 - I received and added the keywords. Thank you. Done adding keywords. You do not need to answer anymore.
20250825T133817: tools response:{"role":"tool","name":"AddKeyword","content":"OK - 200 - I received and added the keywords. Thank you. Done adding keywords. You do not need to answer anymore."}
20250825T133817: Nr. of tools:1
20250825T133817: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text im Kontext empfängt und dann zu den Texten Schlagworte ermittelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeywords".\r\nDie AddKeywords-Funktion benötigt die Id des Textes als String und die Schlagworte als String-Array.\r\nDas erwartete Format für die Argumente ist { "Id": "123", "Keywords": ["foo", "bar", "baz"] } - bei den konkreten Werten 123, foo etc. handelt es sich nur um Beispiele.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:2x\r\nText:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."},{"role":"tool","name":"AddKeyword","content":"OK - 200 - I received and added the keywords. Thank you. Done adding keywords. You do not need to answer anymore."} ],"tools": [ {"type": "function","function":{"name":"AddKeyword","description":"Function to add keywords. ","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"array", "items":{"type":"string"}, "description":"Array of strings - each string represents a keyword of the text."}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T133817: Executing request with url: [192.168.1.109:11434/api/chat]
20250825T133839: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T11:38:39.9604514Z","message":{"role":"assistant","content":"","thinking":"The user provided Id:2x and a text. We need to extract keywords and call AddKeyword function. The function signature: AddKeyword expects an object with Id: string and Keywords: array of strings. We need to produce a function call. The user says "Du bist eine KI, die eine Id und einen Text im Kontext empfängt und dann zu den Texten Schlagworte ermittelt. Für die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeywords"."\n\nWe need to call the function. The user didn't ask for a response, just to add keywords. So we should call the function with the extracted keywords. We need to produce a JSON object with Id: "2x" and Keywords: array. Let's extract keywords: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Maybe also "Erfolgreiche Projekte". Let's produce a concise list. We'll call AddKeyword.","tool_calls":[{"function":{"name":"AddKeyword","arguments":{"Id":"2x","Keywords":["Digitalisierung","maritime Industrie","Schiffbau","Datenintegration","Automatisierung","Künstliche Intelligenz","Plattformlösungen","Zusammenarbeit","Konstruktion","Produktion","Zulieferer","Datenqualität","Governance","IT-Sicherheit","klare Strategien","agile Methoden","Mitarbeitende"]}}}]},"done_reason":"stop","done":true,"total_duration":22372128000,"load_duration":171382000,"prompt_eval_count":415,"prompt_eval_duration":356146200,"eval_count":329,"eval_duration":21832553000}
20250825T133839: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T11:38:39.9604514Z","message":{"role":"assistant","content":"","thinking":"The user provided Id:2x and a text. We need to extract keywords and call AddKeyword function. The function signature: AddKeyword expects an object with Id: string and Keywords: array of strings. We need to produce a function call. The user says "Du bist eine KI, die eine Id und einen Text im Kontext empfängt und dann zu den Texten Schlagworte ermittelt. Für die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeywords"."\n\nWe need to call the function. The user didn't ask for a response, just to add keywords. So we should call the function with the extracted keywords. We need to produce a JSON object with Id: "2x" and Keywords: array. Let's extract keywords: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende. Maybe also "Erfolgreiche Projekte". Let's produce a concise list. We'll call AddKeyword.","tool_calls":[{"function":{"name":"AddKeyword","arguments":{"Id":"2x","Keywords":["Digitalisierung","maritime Industrie","Schiffbau","Datenintegration","Automatisierung","Künstliche Intelligenz","Plattformlösungen","Zusammenarbeit","Konstruktion","Produktion","Zulieferer","Datenqualität","Governance","IT-Sicherheit","klare Strategien","agile Methoden","Mitarbeitende"]}}}]},"done_reason":"stop","done":true,"total_duration":22372128000,"load_duration":171382000,"prompt_eval_count":415,"prompt_eval_duration":356146200,"eval_count":329,"eval_duration":21832553000}
20250825T133839: result after tool call:OK - 200 - I received and added the keywords. Thank you. Done adding keywords. You do not need to answer anymore.
20250825T133839: tools response:{"role":"tool","name":"AddKeyword","content":"OK - 200 - I received and added the keywords. Thank you. Done adding keywords. You do not need to answer anymore."}
20250825T133839: Nr. of tools:1
20250825T133839: {"model": "gpt-oss:20B","messages": [ {"role":"system","content":"Du bist eine KI, die eine Id und einen Text im Kontext empfängt und dann zu den Texten Schlagworte ermittelt.\r\nFür die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeywords".\r\nDie AddKeywords-Funktion benötigt die Id des Textes als String und die Schlagworte als String-Array.\r\nDas erwartete Format für die Argumente ist { "Id": "123", "Keywords": ["foo", "bar", "baz"] } - bei den konkreten Werten 123, foo etc. handelt es sich nur um Beispiele.\r\n"},{"role":"assistant","content":"\r\n\r\n"},{"role":"user","content":"Id:2x\r\nText:Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."},{"role":"tool","name":"AddKeyword","content":"OK - 200 - I received and added the keywords. Thank you. Done adding keywords. You do not need to answer anymore."} ],"tools": [ {"type": "function","function":{"name":"AddKeyword","description":"Function to add keywords. ","parameters": { "type":"object", "properties": {"Id": { "type":"object", "description":""},"Keywords": { "type":"array", "items":{"type":"string"}, "description":"Array of strings - each string represents a keyword of the text."}},"required": ["Id","Keywords"]}}} ],"stream": false,"options":{"temperature":0,"max_tokens":null}}
20250825T133840: Executing request with url: [192.168.1.109:11434/api/chat]
20250825T133910: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T11:39:10.9991377Z","message":{"role":"assistant","content":"","thinking":"The user provided Id:2x and a text. We need to extract keywords and call AddKeyword function. The function signature: AddKeyword expects an object with Id: string and Keywords: array of strings. We need to produce a function call. The user says "Du bist eine KI, die eine Id und einen Text im Kontext empfängt und dann zu den Texten Schlagworte ermittelt. Für die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeywords"."\n\nWe need to call the function. The user didn't ask for a response, just to add keywords. So we should call the function with the extracted keywords. We need to decide keywords. The text: "Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."\n\nKeywords: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende.\n\nWe can shorten: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, KI, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, agile Methoden, Mitarbeitende.\n\nWe need to call AddKeyword with Id "2x" and Keywords array.","tool_calls":[{"function":{"name":"AddKeyword","arguments":{"Id":"2x","Keywords":["Digitalisierung","maritime Industrie","Schiffbau","Datenintegration","Automatisierung","Künstliche Intelligenz","Plattformlösungen","Zusammenarbeit","Konstruktion","Produktion","Zulieferer","Datenqualität","Governance","IT-Sicherheit","agile Methoden","Mitarbeitende"]}}}]},"done_reason":"stop","done":true,"total_duration":30934144800,"load_duration":155715200,"prompt_eval_count":415,"prompt_eval_duration":68233000,"eval_count":459,"eval_duration":30692831700}
20250825T133910: Result from request is {"model":"gpt-oss:20B","created_at":"2025-08-25T11:39:10.9991377Z","message":{"role":"assistant","content":"","thinking":"The user provided Id:2x and a text. We need to extract keywords and call AddKeyword function. The function signature: AddKeyword expects an object with Id: string and Keywords: array of strings. We need to produce a function call. The user says "Du bist eine KI, die eine Id und einen Text im Kontext empfängt und dann zu den Texten Schlagworte ermittelt. Für die Anlage der Schlagworte steht Dir eine Funktion zu Verfügung "AddKeywords"."\n\nWe need to call the function. The user didn't ask for a response, just to add keywords. So we should call the function with the extracted keywords. We need to decide keywords. The text: "Die Digitalisierung verändert die maritime Industrie in rasantem Tempo. Besonders im Schiffbau spielen Datenintegration, Automatisierung und Künstliche Intelligenz eine immer größere Rolle. Unternehmen setzen verstärkt auf Plattformlösungen, um die Zusammenarbeit zwischen Konstruktion, Produktion und Zulieferern zu verbessern. Gleichzeitig entstehen Herausforderungen in den Bereichen Datenqualität, Governance und IT-Sicherheit. Erfolgreiche Projekte zeichnen sich durch klare Strategien, agile Methoden und eine enge Einbindung der Mitarbeitenden aus."\n\nKeywords: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, Künstliche Intelligenz, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, klare Strategien, agile Methoden, Mitarbeitende.\n\nWe can shorten: Digitalisierung, maritime Industrie, Schiffbau, Datenintegration, Automatisierung, KI, Plattformlösungen, Zusammenarbeit, Konstruktion, Produktion, Zulieferer, Datenqualität, Governance, IT-Sicherheit, agile Methoden, Mitarbeitende.\n\nWe need to call AddKeyword with Id "2x" and Keywords array.","tool_calls":[{"function":{"name":"AddKeyword","arguments":{"Id":"2x","Keywords":["Digitalisierung","maritime Industrie","Schiffbau","Datenintegration","Automatisierung","Künstliche Intelligenz","Plattformlösungen","Zusammenarbeit","Konstruktion","Produktion","Zulieferer","Datenqualität","Governance","IT-Sicherheit","agile Methoden","Mitarbeitende"]}}}]},"done_reason":"stop","done":true,"total_duration":30934144800,"load_duration":155715200,"prompt_eval_count":415,"prompt_eval_duration":68233000,"eval_count":459,"eval_duration":30692831700}
20250825T133911: result after tool call:OK - 200 - I received and added the keywords. Thank you. Done adding keywords. You do not need to answer anymore.
20250825T133911: tools response:{"role":"tool","name":"AddKeyword","content":"OK - 200 - I received and added the keywords. Thank you. Done adding keywords. You do not need to answer anymore."}
[...etc...]

We typically test Ollama here with llama3.2 and couldn't see an issue.

To see if this is really model dependent, can you check the same with llama3.2?
To see if this is really dependent on your specific prompt & tools, did you check our weather demo for example with the model you use?

Please try to do such basic checks first to give guidance in what directions to investigate. Given the number of models that exist, it is impossible for us to test with every possible model.

Yes, I understand that.
I will test with llama3.2 and other demos.

I can confirm, that it is working now without that repetition issue with llama3.2:3b .
Thanks a lot for pointing me to a working model.
I still have issues, when I puit load on the Ollama server, but that might be for whatever reasons on Ollama side. At least the repetition is not happening anymore with llama3.2:3b.

Also the Mistral:7b model seems to work without repetion and properly calling the tools.

1 Like