{"record":{"id":"b102da1b0a2a2b3d","repo":"plandex-ai/plandex","slug":"no-namepipeddata-function-call-found-in-response","errorCode":null,"errorMessage":"No namePipedData function call found in response. The model failed to generate a valid response.","messagePattern":"No namePipedData function call found in response\\. The model failed to generate a valid response\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/server/model/name.go","lineNumber":212,"sourceCode":"\t})\n\n\tif err != nil {\n\t\tfmt.Printf(\"Error during piped data name model call: %v\\n\", err)\n\t\treturn \"\", err\n\t}\n\n\tvar name string\n\tcontent := modelRes.Content\n\n\tif baseModelConfig.PreferredOutputFormat == shared.ModelOutputFormatXml {\n\t\tname = utils.GetXMLContent(content, \"name\")\n\t\tif name == \"\" {\n\t\t\treturn \"\", fmt.Errorf(\"No name tag found in XML response\")\n\t\t}\n\t} else {\n\t\tif content == \"\" {\n\t\t\tfmt.Println(\"no namePipedData function call found in response\")\n\t\t\treturn \"\", fmt.Errorf(\"No namePipedData function call found in response. The model failed to generate a valid response.\")\n\t\t}\n\n\t\tvar nameRes prompts.PipedDataNameRes\n\t\terr = json.Unmarshal([]byte(content), &nameRes)\n\t\tif err != nil {\n\t\t\tfmt.Printf(\"Error unmarshalling piped data name response: %v\\n\", err)\n\t\t\treturn \"\", err\n\t\t}\n\t\tname = nameRes.Name\n\t}\n\n\treturn name, nil\n}\n\nfunc GenNoteName(\n\tctx context.Context,\n\tauth *types.ServerAuth,\n\tplan *db.Plan,","sourceCodeStart":194,"sourceCodeEnd":230,"githubUrl":"https://github.com/plandex-ai/plandex/blob/e2d772072efadbe41d2946d97d79be55532dbab5/app/server/model/name.go#L194-L230","documentation":"GenPipedDataName, in the non-XML (function-call/JSON) path, expects the model response to contain a namePipedData function call whose content is a PipedDataNameRes JSON payload. When the response Content is empty (no function call made), this error is returned. The model failed to produce the structured name response at all.","triggerScenarios":"PreferredOutputFormat != XML and the LLM reply contains no namePipedData function call: model answers in plain text, refuses, or the tools config omitted/misnamed the function.","commonSituations":"Provider updates changing tool_call serialization, models without reliable function calling, prompts asking for a direct answer instead of the tool call, or truncated responses from low max_tokens.","solutions":["Retry the request; failures are often stochastic.","Force tool_choice to namePipedData in the model request.","Confirm the tools array registers namePipedData with the expected schema.","Increase max_tokens and re-check the prompt instructs tool use.","Use a model with stronger tool-calling reliability."],"exampleFix":"// before\nmodelReq{Prompt: prompt}\n// after\nmodelReq{Prompt: prompt, ToolChoice: {Type: \"function\", Function: {Name: \"namePipedData\"}}}","handlingStrategy":"try-catch","validationCode":null,"typeGuard":"func hasContent(res *shared.ModelRes) bool { return res != nil && res.Content != \"\" }","tryCatchPattern":"name, err := model.GenPipedDataName(ctx, req)\nif err != nil {\n    if strings.Contains(err.Error(), \"No namePipedData function call found\") {\n        name, err = model.GenPipedDataName(ctx, req) // single retry\n    }\n    if err != nil { return fmt.Errorf(\"piped data naming failed: %w\", err) }\n}","preventionTips":["Force tool_choice to namePipedData","Register the namePipedData tool with a valid schema on every request","Raise max_tokens to avoid truncated tool calls","Alert on repeated empty-content responses per model to catch provider regressions"],"tags":["llm","function-calling","model-response"],"backgroundTag":"llm-empty-tool-call-response","analyzedSha":"e2d772072efadbe41d2946d97d79be55532dbab5","analyzedAt":"2026-09-05T20:56:53.631Z","contentChangedAt":"2026-09-05T20:56:53.631Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}