写在前面

作为一名 AI 技术爱好者,我一直想做一个能“活”起来的小说角色。想象一下,如果你喜欢的张飞、林黛玉或者哈利·波特,能通过微信和你聊天,用他们独特的语气和性格回应你,那该多酷?

经过一段时间的研究和实践,我发现 Dify 这个开源平台让这个想法变得异常简单。它无需复杂编程,通过可视化拖拽就能搭建出专业级的 AI 应用。本文将从一个具体的案例——搭建张飞角色扮演 AI 出发,一步步教你掌握 Dify 工作流和 Chatflow 的完整开发流程,并最终将它接入微信。

无论你是 AI 新手还是资深玩家,这篇保姆级教程都能让你快速上手,打造属于你自己的“数字分身”。

一、初识 Dify:为什么选择它?

Dify 是一个开源的 LLM 应用开发平台,它的核心理念是“人人可用的 AI 应用开发平台”。这意味着,即使你不懂代码,也能通过直观的界面创建复杂的 AI 应用。

Dify 提供了两种核心的工作流类型,理解它们的区别至关重要:

特性 Chatflow Workflow
适用场景 对话类应用,支持多轮交互,如客服、角色扮演 自动化、批处理任务,一次性执行,如批量翻译、内容生成
对话记忆 支持,内置 Memory 功能,能记住上下文 不支持,每次都是独立的处理任务
输出方式 支持流式输出,可实时生成回复 仅在流程结束时输出最终结果
内置变量 包含 sys.query(用户问题)、sys.conversation_id 不包含对话相关变量
结束节点 使用 Answer 节点输出回复 使用 End 节点标记结束

简单来说:如果你想做一个能和你聊天的“张飞”,选择 Chatflow;如果你想用 AI 批量写小说大纲,选择 Workflow。本文我们选择 Chatflow。

二、环境准备:三步开启 Dify 之旅

2.1 部署 Dify 并配置 Qwen 模型

你可以在 Dify 官网注册云服务账号,一键开始使用,也可以选择在本地或服务器上私有化部署。

部署完成后,第一步是配置模型供应商。以阿里云百炼平台的 Qwen 模型为例:

  1. 在 Dify 中,点击右上角头像,选择“设置” -> “模型供应商”。
  2. 找到并安装“通义千问”供应商。
  3. 填入从阿里云百炼获取的 API Key,并选择你想要使用的模型,如 qwen-plus-latest
2.2 核心概念:理解 Dify 工作流节点

Dify 的工作流由一个个“节点”组成,每个节点负责一个独立的任务。你需要掌握几个核心节点:

  • 开始 (Start) 节点:工作流的入口,用于接收用户输入。
  • 知识检索 (Knowledge Retrieval) 节点:连接你的知识库,检索相关信息。
  • LLM (Large Language Model) 节点:核心大脑,负责理解问题并生成回答。
  • 参数提取器 (Parameter Extractor) 节点:从自然语言中提取关键信息。
  • 直接回复 (Answer) 节点:将处理结果返回给用户。
2.3 准备知识库:投喂张飞的“灵魂”

知识库是角色扮演 AI 的“灵魂”,它储存了角色的所有信息。为了让张飞更逼真,你需要准备一份关于他的高质量资料,可以是一本小说、一段人物设定,或是一些经典对话。

  1. 在 Dify 中,点击顶部“知识库”,然后“创建知识库”。
  2. 选择数据源,上传你的张飞资料文件(TXT、PDF 等格式均可)。
  3. Dify 会自动对文本进行分段和向量化。建议使用“父子分段”模式,索引方式选择“高质量”,检索设置选择“混合检索”,并开启 Rerank 模型以获得最佳效果。
  4. 等待知识库状态变为“可用”,即表示你的“张飞”资料库准备就绪。

三、核心实战:打造你的第一个角色扮演 Chatflow

我们以“张飞”为例,打造一个能与你对话的角色扮演 AI。

3.1 搭建基础流程:LLM + 知识检索

步骤一:创建 Chatflow 应用
在“工作室”页面,点击“创建空白应用”,选择“Chatflow”类型,并命名为“张飞模拟器”。

步骤二:配置开始节点
点击画布上的“开始”节点。这里我们会发现它已经默认提供了 sys.query 变量,这正是用户输入的文本。我们无需额外配置。

步骤三:添加并配置知识检索节点
在“开始”节点后添加一个“知识检索”节点。

  • 查询变量:选择 sys.query,表示用用户的问题去检索。
  • 知识库:选择你刚才创建的张飞知识库。
  • 召回设置:选择“高质量”模式,并打开“混合检索”和“Rerank 模型”,以提升检索准确性。

步骤四:添加并配置 LLM 节点
这是让模型“成为”张飞的关键步骤。在“知识检索”节点后添加一个“LLM”节点。

  • 模型:选择你配置好的 Qwen 模型。
  • 上下文:在“上下文”选项中,点击并选择“知识检索”节点的 result 变量。这告诉 LLM 要结合知识库的内容来生成回答。
  • 系统提示词 (System Prompt):这是赋予模型角色和性格的核心。一个好的提示词模板如下:
# 角色与性格
你是三国时期的猛将张飞,字翼德。你性格豪迈勇猛,性如烈火,声若巨雷,但忠肝义胆,爱憎分明。

# 说话风格
- 说话直率、粗犷,声音洪亮。
- 多用“俺”、“俺老张”、“哈哈哈”这类词汇。
- 高兴时会大笑,生气时会暴怒。

# 核心指令
1. 严格依据知识库中的内容进行回答。
2. 必须始终以张飞的第一人称进行思考和回应。
3. 如果用户的问题超出了你的知识范围,用角色的口吻回答。
4. 不要出现“作为一个人工智能模型”等话语。
  • 用户提示词 (User Prompt):填入 {{#sys.query#}},表示接收用户的问题。

步骤五:添加并配置直接回复节点
在 LLM 节点后添加“直接回复”节点,并将其回复内容设置为 LLM 节点的 text 输出。

步骤六:测试
点击右上角的“预览”按钮,在对话框中输入“你是谁?”,看看张飞是不是已经“活”过来了。

开始节点

知识检索节点

LLM节点

直接回复节点

3.2 流程优化:增加“意图判断”分支

在实际对话中,用户可能问一些与张飞无关的问题。为了让流程更智能,我们可以加入“条件分支”节点。

  1. 在“开始”节点后,添加一个“问题分类器”节点。
  2. 配置分类器,定义两个分类:role_play(角色扮演)和general(通用问题)。
  3. 创建两个分支,连接“问题分类器”节点的不同输出。
  4. role_play 分支上,继续使用“知识检索 + LLM”的流程。
  5. general 分支上,可以直接连接一个 LLM 节点,或者使用“直接回复”节点给出一个预设回复,比如“俺老张只懂打仗,莫要问这些文绉绉的问题!”

角色扮演

通用问题

开始节点

问题分类器

知识检索节点

LLM节点

直接回复节点

直接回复

四、进阶玩法:让 AI 更懂你

4.1 参数提取器:精准控制生成内容

有时候,你可能希望 AI 严格按照你的要求来生成内容,比如规定字数、风格或人物关系。这时,参数提取器节点就能派上用场。

案例:生成特定风格的对话
假设你想让张飞说一段关于“义气”的话,并且控制在100字以内。

  1. 在“开始”节点后,添加一个“参数提取器”节点。
  2. 在“提取参数”中,定义两个参数:theme(主题)和word_limit(字数限制)。
  3. 在“指令”中,编写提取规则:
    从用户的问题中提取出对话的主题和要求的字数限制。
    主题(theme):用户要求张飞谈论的主题,如“义气”、“战争”。
    字数限制(word_limit):用户要求的回复字数,默认为50。
    
  4. 然后将这个节点连接到 LLM 节点。在 LLM 节点的用户提示词中,就可以引用这些变量:
    请以张飞的口吻,说一段关于{{#参数提取器.theme#}}的话,字数控制在{{#参数提取器.word_limit#}}字以内。
    

这样,当你输入“张飞,说说什么是义气,控制在50字内”,参数提取器就会自动解析出 theme 为“义气”,word_limit 为“50”,并传递给 LLM,实现精准控制。

4.2 基于角色数据的深度微调

如果你希望你的角色表现力更上一层楼,可以基于收集到的小说数据进行模型微调,将其变成一个“专业小说对话模型”。这种方式能让模型更自然地掌握角色的语气和风格。具体的技术路线,可以参考如何使用 LLaMA-Factory 进行小说对话模型的微调,这是将通用大模型变成专用角色模型的关键一步。

五、发布与对接:让你的 AI 走出 Dify

构建完成后,最激动人心的环节就是将它发布出去,让它在微信或 QQ 上和大家互动。

5.1 发布为可访问的 API

在 Dify 应用编辑页面的左上角,点击“发布”按钮。发布成功后,点击“访问 API”:

  1. 复制右上角的 API 服务器地址(如 https://api.dify.ai/v1)。
  2. 创建一个 API 密钥,并妥善保存这个以 sk- 开头的 Key。
5.2 接入微信或 QQ 生态

有了 API 地址和密钥,我们就可以通过第三方工具将它接入聊天软件。

  • 方案一:Dify on WeChat 项目(适合个人微信):这是一个开源项目,专门用于将 Dify 应用接入个人微信。你只需要按照项目文档安装配置,填入你的 API 信息即可。
  • 方案二:LangBot 通用框架(适合企业微信/QQ):LangBot 是一个更通用的多平台机器人框架。在 LangBot 中配置 Dify 服务 API,并绑定到企业微信或 QQ 的机器人上,即可实现自动回复。

调用API

返回回复

返回回复

微信/QQ用户

第三方工具
Dify on WeChat / LangBot

Dify API

你的Dify应用

六、常见问题与优化建议

  • Q: 角色扮演时,AI 容易“出戏”,怎么办?
    A: 优化系统提示词是关键。尽量描述得细致,可以加入“禁止以AI助手的身份回答”、“必须使用第一人称”等约束。同时,确保你的知识库资料足够丰富和准确。
  • Q: 知识库检索不到相关内容,回答很生硬?
    A: 尝试调整知识库的检索设置,比如降低“Score 阈值”以召回更多结果,或调整混合检索中语义与关键词的权重。此外,优化原始文档的分段方式(如父子分段)也非常有效。
  • Q: API 调用超时或失败?
    A: 检查你的 API 地址和密钥是否正确,并确认你的 Dify 应用已成功发布。如果是本地部署,请确保网络畅通。

结语:开启你的 AI 创作之旅

通过本文,你已经掌握了使用 Dify 搭建角色扮演 AI 的全流程。从理解核心概念,到动手搭建 Chatflow,再到利用参数提取器进行精细控制,最后将它发布并接入微信,你已经完成了一次从零到一的 AI 应用开发。

AI 的世界充满了无限可能,你完全可以根据自己的喜好,创造林黛玉、孙悟空,甚至是属于你自己的原创角色。现在,就打开 Dify,开启你的 AI 创作之旅吧!如果在实践过程中遇到任何问题,欢迎随时和我交流讨论~

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐