【Dify】基于 Agent 实现热门新闻生成助手

目录

一、实现思路

二、创建 Agent 应用并完善提示词工程

2.1 创建 Agent 应用

2.2 添加工具

2.3 自定义工具的 服务实现

2.4 执行结果


一、实现思路

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

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

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

具体实现步骤如下:

  1. 在 dify 中创建 Agent 应用。

  2. 填写提示词,设置变量和编排任务。

  3. 添加相关组件:

    1. time:获取当前时间,根据时间生成对应日期的热点新闻。

    2. tavily:联网的搜索服务,用于查询某个日期的热点新闻。

    3. 自定义 Java 服务:实现将 HTML 页面转换为图片。

  4. 选择 LLM

  5. 执行热点新闻生成操作。

二、创建 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 执行效果如下:

<think>好的,我现在需要回答用户关于如何使用Dify框架创建或配置代理(agent)的问题。首先,我得回顾一下用户提供的引用内容,特别是引用[1]提到的DifyAgent功能和内置工具。用户可能希望得到一步步的指导,所以需要结构清晰、分点说明。 首先,我需要明确Dify中创建Agent的基本流程。根据引用[1],Dify允许基于LLM函数调用或ReAct定义Agent,并提供多种内置工具。所以第一步应该是创建Agent应用,然后选择模型,比如GPT-3.5或GPT-4。接下来是配置工具,比如谷歌搜索或Stable Diffusion。这部分需要详细说明如何添加这些工具,是否需要在界面上进行设置。 然后,可能需要配置ReAct策略或函数调用。这里需要解释两者的区别,以及用户如何根据需求选择。比如,ReAct更适合需要推理和动作循环的任务,而函数调用可能更直接。这部分可能需要进一步查阅Dify的文档,但根据现有引用,可以简要说明。 接着是定义提示词模板,这部分需要指导用户如何编写有效的提示词,确保Agent能准确理解任务。比如,可以给出示例模板的结构,说明输入变量和上下文的使用。 测试与部署也是关键步骤,用户需要知道如何通过对话界面测试Agent,并根据结果调整配置。最后,部署到生产环境,比如API或网页应用,可能需要说明部署选项和注意事项。 用户可能还会关心性能优化或高级配置,比如处理复杂任务时的多工具协作。需要提到这些高级功能,但保持回答简洁,引导用户查阅官方文档获取更多细节。 此外,用户提供的引用[2]是关于项目引用的,可能与当前问题无关,但需要确保回答中正确标注引用来源,只使用引用[1]的信息。同时,注意使用中文,避免任何Markdown格式,行内公式用$...$,独立公式用$$...$$,但这个问题可能不涉及数学公式,所以可能不需要使用。 最后,生成相关问题,比如创建Agent的步骤、工具集成方法、ReAct配置、提示词优化等,帮助用户进一步探索。确保问题自然相关,覆盖用户可能感兴趣的方面。</think>### 如何使用Dify创建或配置Agent #### 1. **创建Agent应用** - 在Dify平台中新建一个“Agent”类型的应用,选择基础模型(如GPT-3.5/4)作为核心推理引擎[^1]。 - 通过界面配置Agent的名称、描述和初始参数(如温度值、响应长度限制)。 #### 2. **集成工具(Tools)** - Dify提供50+内置工具(如谷歌搜索、图像生成工具),可直接从工具库中选择并启用。 - 自定义工具:通过API或代码定义工具的功能逻辑,例如: ```python def custom_tool(query: str) -> str: # 实现特定功能(如调用外部API) return processed_result ``` - 工具需声明输入/输出格式,并与Agent的交互流程绑定[^1]。 #### 3. **配置ReAct或函数调用策略** - **ReAct模式**:设置推理-动作循环逻辑,使Agent能动态选择工具并迭代执行任务。例如: > Agent接收到问题 → 分解任务 → 调用工具 → 整合结果 → 最终回复 - **函数调用模式**:直接映射用户意图到预定义工具,适合结构化任务。 #### 4. **定义提示词模板** - 编写提示词以规范Agent的行为,例如: ```text 你是一个数据分析助手,可以调用以下工具: {tools_list} 请根据用户问题分步骤执行操作,并最终用中文回复。 ``` - 支持通过变量(如`{context}`)动态注入上下文信息。 #### 5. **测试与部署** - 在Dify的对话界面模拟用户输入,验证工具调用链路和结果整合逻辑。 - 根据测试结果调整工具配置或提示词优化。 - 部署为API服务或嵌入网页应用,支持流式响应或异步任务处理。 --- ### 高级配置建议 - **多工具协作**:通过条件判断配置工具调用顺序,例如优先使用WolframAlpha计算复杂公式,再调用Stable Diffusion生成图表。 - **异常处理**:设置工具调用超时重试机制或备用响应模板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敖云岚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值