dify llm输出json时报错

背景

在dify开发中遇到的一个问题,就是llm(deepseek)节点要求输出json格式,但是运行时报错了,报错信息如下:

[deepseek] Error: API request failed with status code 400:
{“error”:{“message”:“Prompt must contain the word ‘json’ in some form
to use ‘response_format’ of type
‘json_object’.”,“type”:“invalid_request_error”,“param”:null,“code”:“invalid_request_error”}}

问题分析

这个错误提示表明,你在调用API时,指定了 response_format 为 json_object(即要求返回JSON格式的响应),但你的请求提示(prompt)中没有包含“json”这个词。API要求在使用 json_object 作为响应格式时,提示中必须明确包含“json”这个词,以确保用户确实希望得到JSON格式的响应。
总结一下就是提示词中缺少“json”这个词,无法满足API对JSON格式响应的要求

解决方案

知道了原因,解决起来就很简单了。只需要在提示词中添加json关键词即可。
例如,

如果原来的提示词是: “告诉我纽约的天气情况。”

可以修改为:

“告诉我纽约的天气情况,并以JSON格式返回。”

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐