实战:Dify智能体+Java=自动化运营工具!

我们在运营某个圈子的时候,可能每天都要将这个圈子的“热门新闻”发送到朋友圈或聊天群里,但依靠传统的实现手段非常耗时耗力,我们通常要先收集热门新闻,再组装要新闻内容,再根据内容设计海报等。

那怎么才能简化并高效的完成以上工作呢?

答案是我们可以借助 AI 工具:Dify + Java 服务来实现热点新闻自动生成功能,最终生成效果如下:

实现思路

具体实现步骤如下:

  1. 在 dify 中创建 Agent 应用。
  2. 添加相关组件:
    • time:获取当前时间,根据时间生成对应日期的热点新闻。
    • tavily:联网的搜索服务,用于查询某个日期的热点新闻。
    • 自定义 Java 服务:实现将 HTML 页面转换为图片。
  3. 填写提示词,设置变量和编排任务。
  4. 选择 LLM
  5. 执行热点新闻生成操作。

为什么要使用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、多模态、向量数据库、嵌入模型等内容。

原创作者: vipstone 转载于: https://www.cnblogs.com/vipstone/p/18891936
### Dify 智能体工具中的变量功能使用指南 Dify 是一个强大的智能体开发平台,支持通过变量功能实现动态数据处理和交互。以下是关于 Dify 智能体工具中变量功能的详细说明: #### 1. 变量的基本概念 在 Dify 中,变量用于存储和传递动态数据,这些数据可以是用户输入、工具调用返回的结果或系统生成的信息。变量可以通过模板语法嵌入到提示词(Prompt)或工具配置中,从而实现灵活的数据处理[^1]。 #### 2. 定义和使用变量 在 Dify智能体配置中,变量通常以 `${variable_name}` 的形式表示。例如: ```python "你是程序员,当前时间是 ${current_time},请根据以下代码运行结果回答问题:${code_output}" ``` 上述示例中,`${current_time}` 和 `${code_output}` 是两个变量,分别代表当前时间和代码运行的结果。 #### 3. 变量的来源 - **用户输入**:用户在与智能体交互时提供的信息可以直接作为变量使用。 - **工具返回值**:通过调用工具(如“获取当前时间”或“代码运行”工具),将返回的结果存储为变量。 - **系统生成**:Dify 系统会自动生成一些内置变量,例如 `${session_id}`(会话 ID)或 `${timestamp}`(时间戳)[^2]。 #### 4. 配置工具以使用变量 在配置工具时,可以将工具的输入参数设置为变量。例如,假设有一个工具名为“获取天气”,需要传入城市名称作为参数,可以在工具配置中设置如下: ```json { "tool_name": "get_weather", "parameters": { "city": "${user_city}" } } ``` 此处 `${user_city}` 是从用户输入中提取的城市名称。 #### 5. 示例:构建每日要闻应用 以下是一个完整的示例,展示如何在“每日要闻”应用中使用变量功能: - 设置提示词: ```python "以下是 ${current_date} 的每日要闻:${news_content}" ``` - 添加工具“获取新闻”: ```json { "tool_name": "get_news", "parameters": { "date": "${current_date}" } } ``` 在此示例中,`${current_date}` 是通过“获取当前时间”工具生成的变量,而 `${news_content}` 是“获取新闻工具返回的结果[^3]。 #### 6. 注意事项 - 在使用变量前,请确保相关工具已正确配置并获得必要的授权。 - 如果变量未被正确解析,可能会导致智能体的行为异常。建议在调试阶段检查变量的值是否符合预期。 ```python # 示例代码:调试变量值 def debug_variables(variables): for key, value in variables.items(): print(f"{key}: {value}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值