diff --git a/backend/pkg/providers/helpers.go b/backend/pkg/providers/helpers.go index cc80eeaf..31174d14 100644 --- a/backend/pkg/providers/helpers.go +++ b/backend/pkg/providers/helpers.go @@ -46,11 +46,12 @@ type dummyMessage struct { // wrapToolCallIDTemplateError annotates an error returned by // Provider.GetToolCallIDTemplate so the user sees an actionable hint when a -// known upstream limitation blocks flow creation. Currently it covers the -// Ollama "model does not support tools" case (issue #280): the underlying -// error is returned by the Ollama API itself and surfaces five wraps deep, -// which previously left the user with a cryptic "failed to determine tool -// call ID template" message. +// known upstream limitation blocks provider initialization. Currently it +// covers the Ollama "model does not support tools" case (issue #280): the +// underlying error is returned by the Ollama API itself and surfaces five +// wraps deep, which previously left the user with a cryptic "failed to +// determine tool call ID template" message. This helper is shared by the +// flow and assistant provider paths, so the wording stays context-neutral. // // The function preserves the original error chain via %w so downstream code // (logs, langfuse spans, errors.Is/As) keeps working. @@ -62,9 +63,9 @@ func wrapToolCallIDTemplateError(err error) error { return fmt.Errorf( "failed to determine tool call ID template: the selected model "+ "does not support tool/function calling, which PentAGI requires "+ - "for flow execution; pick an Ollama model that advertises the "+ - "\"tools\" capability (for example llama3.1, qwen2.5, or "+ - "mistral-nemo) and update the provider configuration: %w", + "for tool execution in flows and assistant sessions; select an "+ + "Ollama model whose metadata advertises tool/function calling "+ + "support and update the provider configuration: %w", err) } return fmt.Errorf("failed to determine tool call ID template: %w", err) diff --git a/backend/pkg/providers/helpers_test.go b/backend/pkg/providers/helpers_test.go index a59188c0..3fe35b7e 100644 --- a/backend/pkg/providers/helpers_test.go +++ b/backend/pkg/providers/helpers_test.go @@ -1207,9 +1207,24 @@ func TestWrapToolCallIDTemplateError(t *testing.T) { "failed to determine tool call ID template", "does not support tool/function calling", "PentAGI requires", - "\"tools\" capability", + "flows and assistant sessions", + "metadata advertises tool/function calling", "does not support tools", }, + wantNotContain: []string{ + // The hint must not name specific model tags as + // tool-capable, because Ollama model capabilities are + // not verified by PentAGI and any concrete list ages + // poorly. + "llama3.1", + "qwen2.5", + "mistral-nemo", + // The helper is shared by both the flow and assistant + // provider paths, so the message must not imply this + // is a flow-only failure mode. + "flow execution", + "flow creation", + }, wantUnwrapsTo: ollamaErr, }, { @@ -1221,7 +1236,7 @@ func TestWrapToolCallIDTemplateError(t *testing.T) { }, wantNotContain: []string{ "does not support tool/function calling", - "\"tools\" capability", + "metadata advertises tool/function calling", }, wantUnwrapsTo: genericErr, },