I would not make the streaming text and the structured output do the same job. The pattern I would use is: stream text only for the user-facing “typing” experience keep a final non-streamed structured response for the workflow/database step map only the fields the app actually needs fail clearly if a required path is missing or the model returns the wrong shape That keeps the UI fast without making your database depend on whatever partial chunks arrive during streaming. I built SchemaField Mapper for the final handoff piece: raw JSON/text in, explicit paths out, missing-field errors when the r