我們在運營某個圈子的時候,可能每天都要將這個圈子的“熱門新聞”發送到朋友圈或聊天群里,但依靠傳統的實現手段非常耗時耗力,我們通常要先收集熱門新聞,再組裝要新聞內容,再根據內容設計海報等。
那怎么才能簡化并高效的完成以上工作呢?
答案是我們可以借助 AI 工具:Dify + Java 服務來實現熱點新聞自動生成功能,最終生成效果如下:
實現思路
具體實現步驟如下:
- 在 dify 中創建 Agent 應用。
- 添加相關組件:
- time:獲取當前時間,根據時間生成對應日期的熱點新聞。
- tavily:聯網的搜索服務,用于查詢某個日期的熱點新聞。
- 自定義 Java 服務:實現將 HTML 頁面轉換為圖片。
- 填寫提示詞,設置變量和編排任務。
- 選擇 LLM。
- 執行熱點新聞生成操作。
為什么要使用Java服務?
為什么要使用 Java 服務,而不是根據文案直接生成圖片呢?
答:因為根據文案直接生成圖片,目前大模型生成圖片服務,并不能滿足熱點新聞的生成要求。所以,我們可以讓大模型先生成美觀的 HTML 頁面,再將 HTML 轉換成圖片,才能滿足生產級別的圖片要求。當然,自定義服務不一定是 Java 語言實現的,其他語言也是可以的,例如 Python。
1.自定義工具
自定義工具的 Schema 用于描述調用的外部調用服務,只需要滿足 OpenAI-Swagger 要求即可:
{"openapi": "3.1.0","info": {"title": "html to image","description": "Generate image files based on HTML code","version": "v1.0.0"},"servers": [{"url": "http://192.168.3.94:8080"}],"paths": {"/html2img/gen": {"get": {"description": "Generate image files based on HTML code","operationId": "generate","parameters": [{"name": "html","in": "query","description": "HTML code","required": true,"schema": {"type": "string"}}],"deprecated": false}}},"components": {"schemas": {}}
}
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;}
}
3.Agent執行效果
Agent 執行效果如下:
小結
AI 發展為我們提供了很大的便利,大大的提升了我們的工作效率,以后人機共創將是新的方向。我們也要靈活使用 AI 工具,加上我們之前的編程經驗,可以發揮出巨大的化學反應,開發出很多很好玩又實用的產品。一起行動起來吧,使用 AI 技術做點有價值又有意義的事情~
本文已收錄到我的技術小站 www.javacn.site,其中包含的內容有:Spring AI、LangChain4j、Dify、AI Agent、MCP、Function Call、RAG、向量數據庫、Prompt、多模態、向量數據庫、嵌入模型等內容。