如何让PowerShell中ConvertFrom-Json支持Ollama API流式输出?
解决ConvertFrom-Json流式处理Ollama API输出的问题
你的问题出在ConvertFrom-Json默认会等待所有输入数据接收完成后才进行解析,所以原本的流式输出被转换成了一次性处理。要实现流式解析,需要让PowerShell逐行处理curl返回的JSON对象——因为Ollama的API返回的是每行一个独立的完整JSON结构。
修正后的命令
curl -sd '{"model": "code-companion:latest", "prompt": "Why is the sky blue?"}' http://127.0.0.1:11434/api/generate | ForEach-Object { $_ | ConvertFrom-Json } | ForEach-Object { Write-Host -NoNewline $_.response }
原理说明
- 原命令中,
curl的所有输出会被一次性传递给ConvertFrom-Json,它必须等全部数据到齐才能完成解析,因此无法流式输出。 - 修正后的命令通过
ForEach-Object { $_ | ConvertFrom-Json },把curl返回的每一行文本单独传给ConvertFrom-Json解析,这样每收到一行JSON就能立即处理并输出对应的response内容,实现流式效果。
内容的提问来源于stack exchange,提问作者XCS
相关产品推荐
相关产品推荐

