使用Microsoft.Extensions.AI调用Ollama模型时,支持自定义函数的模型始终返回JSON的解决方法
解决Ollama模型返回JSON而非普通文本的问题
清理函数配置:如果不需要调用自定义函数,初始化
ChatOptions时不要添加任何AIFunction实例,避免模型因检测到函数支持配置而默认返回JSON。示例:var chatOptions = new ChatOptions(); // 不包含Functions属性明确格式要求:在系统提示词中直接指定返回普通文本格式,比如在系统消息里加入
"请以普通自然语言文本回复,不要使用JSON格式。",强制模型输出文本而非结构化数据。设置Ollama格式参数:通过
ChatOptions的AdditionalProperties传入Ollama原生参数format: text,强制模型返回文本格式。示例:var chatOptions = new ChatOptions { AdditionalProperties = new Dictionary<string, object> { { "format", "text" } } };响应后解析处理:若上述方法无效,可在获取响应后尝试解析JSON提取文本。检测响应内容是否为JSON,若是则提取对应字段(如
content),否则直接使用原内容。示例:var response = await chatClient.CompleteAsync(messages, chatOptions); var resultText = response.Content; try { var jsonContent = JsonSerializer.Deserialize<Dictionary<string, string>>(resultText); if (jsonContent?.TryGetValue("content", out var text) == true) { resultText = text; } } catch (JsonException) { // 非JSON格式,无需处理 }
内容的提问来源于stack exchange,提问作者Dmitri Nesteruk
相关产品推荐
相关产品推荐

