Java调用Dify工作流以获取工作流输出文件
近期在钻研dify相关知识时,碰到了一些小问题,现在把它们记录下来。
Java调用的代码主要参考了这篇基于 Spring Boot 和 Dify 实现流式响应输出_springboot dify - CSDN博客,当然可以在此基础上做些调整。
要是直接部署了dify且没有进行其他相关配置,那么通过Java调用后,通常会输出类似这样的内容:
流式结果:StreamResponse(event=message, id=44f74b98-22bf-43e6-916c-f738e5704d79, task_id=d05f7e19-640c-4292-bb2b-de1681e803cf, message_id=44f74b98-22bf-43e6-916c-f738e5704d79, answer=这是根据您需求生成的文件:a0277b8185f64150bbecd372b7023c8a.xlsx, created_at=1746514907, conversation_id=f41acbdb-54b7-4318-82de-e7d7448928c5, data=null) 重点关注/files/tools/这部分。
当在dify页面下载文件时,也就是:
此时访问的是127.0.0.1:80/files/tools/.....,因为dify默认启动端口是80。而用Java代码调用时返回的只有/files/tools.....,前端点击时会判断地址是否正确,由于这个路径没有http://或https://,也没有端口,那么点击访问的路径就会是前端路径+/files/tools,比如http://localhost:1002/files/tools....,这样就会访问不到。这时候就需要修改.env文件,找到安装dify目录的docker目录下的.env文件:
不同版本的内容可能有差异,我的是dify1.3,FILES_URL原本是空的,在这里加上dify的路径就行。如果是运行在80端口,就不用加端口;要是修改了运行端口,这里就要加上。修改完后在dify的docker目录下执行命令行docker-compose down && docker-compose up -d。
要是直接在这里停止再启动,大概率没效果,至少我遇到的情况是这样,所以要用上面的命令启动。完成后再次调用,此时返回的就是http://127.0.0.1/files/tools/......
这样一来,在自己的页面点击就能下载文件了。
当然,获取文件的方式有多种,这只是其中一种,其他方式就需要自己去探究了。
文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/12812.html