目录
一、实现思路
我们在运营某个圈子的时候,可能每天都要将这个圈子的“热门新闻”发送到朋友圈或聊天群里,但依靠传统的实现手段非常耗时耗力,我们通常要先收集热门新闻,再组装要新闻内容,再根据内容设计海报等。
那怎么才能简化并高效的完成以上工作呢?
答案是我们可以借助 AI 工具:Dify + Java 服务来实现热点新闻自动生成功能,最终生成效果如下:
具体实现步骤如下:
-
在 dify 中创建 Agent 应用。
-
填写提示词,设置变量和编排任务。
-
添加相关组件:
-
time:获取当前时间,根据时间生成对应日期的热点新闻。
-
tavily:联网的搜索服务,用于查询某个日期的热点新闻。
-
自定义 Java 服务:实现将 HTML 页面转换为图片。
-
-
选择 LLM。
-
执行热点新闻生成操作。
二、创建 Agent 应用并完善提示词工程
2.1 创建 Agent 应用
变量定义:一种动态数据容器,能够存储和传递不固定的内容,在不同的节点内被相互引用,实现信息在节点间的灵活通信。
<prompt>
<instruction>
根据提供的关键字{{keyword}}生成5条热门的吸引人的中文新闻标题。请遵循以下步骤:
1. 先根据time插件获取具体的日期。
2. 使用搜索插件查询中文的热门{{keyword}}信息。
3. 提取搜索中的标题内容。
4. 将上面标题生成一个热门排行榜html页面,html中不用生成<meta>标签,要求美观大方,并展示HTML预览效果。
5.将上面生成的html页面转换成image图片。
</instruction>
</prompt>
2.2 添加工具
2.3 自定义工具的 服务实现
1. 添加依赖
<dependency>
<groupId>com.github.alotuser</groupId>
<artifactId>html2image</artifactId>
<version>1.0.0</version>
</dependency>
2. 编写服务代码:
import cn.alotus.HtmlRender;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.UUID;
@RestController
@RequestMapping("/html2img")
public class ApiController {
@RequestMapping("/gen")
public String generate(@RequestParam String html) throws IOException {
HtmlRender htmlRender = new HtmlRender(BufferedImage.TYPE_INT_RGB);
String imgPath = "D://" + UUID.randomUUID() + ".png";
//生成图片
htmlRender.toPng(html, imgPath);
return imgPath;
}
}
2.4 执行结果
Agent 执行效果如下: