如何搭建 AI 图片生成应用

作者:Steven Lynn。Dify Technical Writer。

随着图像生成技术的兴起,涌现了许多优秀的图像生成产品,比如 Dall-e、Flux、Stable 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:

撰写提示词

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

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

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

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

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

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

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

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

点击提示词的右上角生成

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

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

发布

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

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

思考题 1:如何指定生成图片的画风?

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

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

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

思考题 2: 如何拒绝部分用户的某些请求?

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

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

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

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

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

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

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

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

Last updated