华为云云主机+DeepSeek|如何一键式华为云云主机单机部署基于华为云的Dify-LLM AI应用方案,打造属于自己的古诗词语

举报
杨琴 发表于 2025/07/25 19:54:39 2025/07/25
【摘要】 华为开发者空间介绍:华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。免费领取开发者空间云主机→ PC端→ 移动端 一、前言:本文详细阐述了基于华为云...

华为开发者空间介绍:

华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。

image.png

免费领取开发者空间云主机

PC端
移动端


一、前言:

本文详细阐述了基于华为云云主机部署、DeepSeek大模型与Dify-LLM平台搭建“古诗词语音漫画AI智能体”的全流程。从华为云云主机部署的模型开发与部署,到华为云云主机云服务一键部署Dify平台,再到“古诗词语音漫画AI智能体”功能的全链路配置,每一步均体现了华为云生态的技术协同优势。

华为云华为云云主机部署平台上的DeepSeek-V3/R1大模型推理服务,全托管服务免去基础设施管理,多模型支持与弹性扩展适配业务需求,内置安全防护保障数据安全,开发者无需关注底层资源,专注模型训练与优化,显著提升开发效率。

image.png

华为云快速搭建Dify-LLM应用开发平台,预置模板与自动化工具实现Dify-LLM一键单机部署,零底层架构学习成本,大幅降低技术门槛,助力中小企业及开发者快速验证实现AI智能体的场景。


二、基于Dify平台开发AI Agent的完整流程:

2.1 免费领取开发者空间云主机:

首次打开华为开发者空间,整洁的界面和清晰的导航就让人眼前一亮。这个专为全球开发者打造的平台,就像一个一站式技术宝库,不仅提供了昇腾、鸿蒙、鲲鹏等华为核心技术的开发工具,还贴心地配备了云主机、存储空间和详细的案例指导。

image.png

点击"免费领取开发者空间云主机"按钮时,无论是PC端还是移动端,都能轻松免费获取并使用4核8G的Ubuntu 24.04云主机,领取启动取后这里我们稍等几分钟就行了,因为系统正在加载图形化界面。

image.png

进入到了桌面后,跟平时我们的电脑桌面差不多,但是华为云主机专注于开发领域的,一般的开发软件都已经存在在桌面上了,直接上手使用就行。

右键终端输入命令,安装ollama:

image.png

下完完后,就会进行安装ollama就安装好了。

image.png

接下来借助ollama工具来进行deepseek r1模型的部署操作,这里选择的是deepseek-r1:1.5b模型,当然也可以部署其他的模型。

image.png

这里在开始进行部署时,可以看到华为云主机部署速度还是很快的,8M每秒,对于下载大容量的大模型也不在话下。

image.png


2.1 开始节点:

我们将开始节点进行改造一下,可以添加单个文件,点击添加变量,可以弹出一个“添加变量”的选项框,这里可以选择“单文件”,输入变量名称、显示名称,和支持的文件类型、上传文件类型即可在最开始有一个上传文件的功能,这里的必填不要勾选。

image.png

接下来判断一下逻辑,如果是input_name(输入古人名称)有值的话,我们就走LLM大模型进行搜索,我们就走文件识别文本的功能。


2.2 条件分支节点:

在 Dify 平台中,‌条件分支节点‌(IF/ELSE 节点)是工作流编排的关键逻辑控制组件,用于根据预设条件动态选择执行路径,根据输入变量的值(如文本、数字、布尔值)匹配预设规则,将工作流导向不同分支。

image.png

例如,当用户提问涉及“历史人物”时进入故事生成分支,涉及“文件上传”时进入解析分支,如下面:

  • ①. 当用户最开始节点输入“历史人物”的名字的话,就会通过条件分支的IF条件去进行判断,input_name是否不为空,如果不为空的话,就走LLM大语言模型逻辑,将他对应的诗词查出来。

image.png

  • ②. 当用户最开始节点输入“历史人物”的名字为空的话,就是走ELSE的逻辑,就会去调用“SPEECH TO TEXT”这个节点,将文件的信息读取出来,返回是某个人的诗词,如果没有解析出来,就会返回为空。

image.png

按照上面的逻辑所说,这里我们可以再加一个LLM2的大语言模型进行解析,将“SPEECH TO TEXT”的上下文选中,然后里面给出一些提示词,大概意思是将文件的信息读取出来,返回是某个人的诗词,如果没有解析出来,就会返回为空。

image.png

以下是相关的提示词,LLM(大语言模型)中的提示词(Prompt)是与模型交互的核心工具,它通过自然语言指令引导模型生成符合预期的输出,提示词将用户抽象需求转化为模型可执行指令。

```xml
<instruction>
<instructions>
1. 仔细阅读提供的文案内容,重点关注作者署名或明显标识作者的信息。
2. 如果文案中明确提到了作者的名字(如“作者:张三”、“文/李四”等),则提取该名字作为输出。
3. 如果文案中没有明确提到作者名字,但能从上下文推断出作者(例如“本文由XX团队撰写”),则提取推断出的名字或团队名称。
4. 如果文案中没有任何作者信息或无法推断,则返回空值。
5. 输出时仅返回作者名字或空值,不要包含任何额外文字、标点符号或XML标签。
6. 确保输出格式严格遵循要求,仅为一个名字或空值。
</instructions>

<examples>
<example>
输入:这篇文章由科技专栏作家王五撰写,探讨了人工智能的未来发展。
输出:王五
</example>

<example>
输入:在最新的市场分析报告中,提到了消费者行为的变化趋势。
输出:
</example>

<example>
输入:文/赵六 近年来,气候变化问题日益受到关注。
输出:赵六
</example>
</examples>

<notes>
1. 作者名字可能以多种形式出现,如“作者:”、“文/”、“撰文:”等,需注意识别。
2. 如果名字前后有空格或特殊符号,需去除后输出纯名字。
3. 不要尝试猜测或编造作者名字,仅输出明确存在的信息。
4. 如果文案是匿名发布的或来自机构(如“新华社”),可返回机构名称。
5. 处理多作者情况时,仅返回第一个作者名字。
</notes>
</instruction>

2.4 LLM2大语言模型解析音频文件返回的文本信息测试:

这里我们可以选中某个节点,点击最上面的“运行”,输入测试的语句,比如这里我们输入“同是天涯沦落人”,来测试一下是哪个诗人写的词,通过LLM2大语言模型的搜索,这里可以返回输出了“白居易”,非常正确,这样如果语音转换为文字成功后,就可以得到诗人的名称。

image.png

那么,还有另外一种情况就是语单转换为文字时,没有找到这个诗人,可能是一句乱说的话,这样我们也可以来通过“运行”测试一下,输入“哈哈哈”,肯定是没有某个诗人写这个词句的,可以看到返回值是为空,表示没有找到这个语句的作者。

image.png


2.5 语音转文本找不到诗人处理逻辑:

如果在语单转文本找不到诗人就会返回为空,所以,这里可以做一个判断逻辑,当返回为空时,我们就系统默认随机找一个古代诗人的一首诗词返回,不过这里有一个固定的返回JSON格式:

image.png

```xml
<instruction>
随机找一个古代诗人的一首诗词返回,需要返回固定的json格式,作者与诗词的内容,不要有其它的。以下是详细的步骤和示例:

<instructions>
1. 随机选择一个中国古代诗人,例如李白、杜甫、苏轼等。
2. 从该诗人的作品中随机选择一首诗词。
3. 将诗词内容和作者信息整理为以下固定的JSON格式:
   {
      "author": "诗人姓名",
      "poem": "诗词内容"
   }
4. 确保诗词内容完整,包括标题(如果有)和正文,每行用换行符分隔。
5. 不要包含任何额外的信息或XML标签。
6. 输出时仅返回JSON格式的内容,不要包含其他文字或说明。
</instructions>

<examples>
以下是三个示例,展示输入和输出的格式:

<example>
输入:无
输出:
{
   "author": "李白",
   "poem": "静夜思\n床前明月光,疑是地上霜。\n举头望明月,低头思故乡。"
}
</example>

<example>
输入:无
输出:
{
   "author": "杜甫",
   "poem": "春望\n国破山河在,城春草木深。\n感时花溅泪,恨别鸟惊心。\n烽火连三月,家书抵万金。\n白头搔更短,浑欲不胜簪。"
}
</example>

<example>
输入:无
输出:
{
   "author": "苏轼",
   "poem": "水调歌头·明月几时有\n明月几时有?把酒问青天。\n不知天上宫阙,今夕是何年。\n我欲乘风归去,又恐琼楼玉宇,高处不胜寒。\n起舞弄清影,何似在人间。"
}
</example>
</examples>

请严格按照上述要求和示例完成任务,确保输出仅为JSON格式,不包含任何额外信息或标签。
</instruction>

但是,如果在音频转化为文本时,能够拿到相关的诗人,这样的话,我们可以使用ELSE的逻辑来处理,当有值的时候,是不是跟刚开始输入诗人的名字一样的逻辑呢,所以,我们直接将线条转到LLM节点即可。

image.png


2.6 代码执行(Code Executor)‌:

Dify 的‌代码执行(Code Executor)‌是平台中用于在沙盒环境中安全运行用户自定义代码的核心功能模块,主要服务于复杂工作流的动态逻辑处理需求,允许工作流中的变量(如用户输入、API 响应数据)作为参数传递至代码脚本,实现上下文感知的动态计算。

image.png

在 Dify 工作流中,工作流集成方式,代码执行节点通常作为‌逻辑处理器‌嵌入,该模块是 Dify 实现“复杂任务自动化”的关键组件,尤其适合需‌定制化逻辑‌与‌高可靠性‌的企业级应用场景:

  • ①. 输入对接‌:接收前置节点(如知识检索、模型推理)的输出数据。
    ‌- ②. 脚本编写‌:开发者编写业务逻辑代码(如数据清洗、公式计算)。
    ‌- ③. 结果输出‌:将处理结果传递给后续节点(如 LLM 生成或内容聚合)。

image.png

经过调试,发现上面代码不满足需求,会报错,请使用以下代码结构即可:

import json
import re
def main(arg1: str) -> dict:
    # 使用正则表达式提取被 ```json 和 ``` 包裹的内容
    match = re.search(r'```json\s*([\s\S]*?)\s*```', arg1)
    if not match:
        return {
            "author": "",
            "poem": ""
        }
    
    # 提取 JSON 字符串
    json_str = match.group(1).strip()
    
    # 将 JSON 字符串解析为 Python 字典
    result_dict = json.loads(json_str)
return result_dict

因为上一个节点LLM3返回的值是一个JSON的字符串,不是一个对象,所以,我们需要通过代码执行节点来将这个返回值进行序列化一下,当然,这里可以提供写python代码,我们只需要将参数进行绑定,然后再执行json.loads代码后即可转换为json对象。


2.7 模板转换固定输出格式:

Dify的‌模板转换‌是指通过预定义的格式模板(如JSON、HTML、Markdown等),将动态生成的内容(如AI输出、数据库查询结果)自动转换为标准化结构的过程。其核心价值在于‌统一输出规范‌(确保格式一致性)、‌提升开发效率‌(减少重复编码)和‌适配多端需求‌(如API响应、邮件模板、文档生成)。

image.png

例如,将LLM生成的文本自动套用企业报告模板,或把数据流转换为前端可渲染的表格结构,这里我们将代码执行解析的json格式拼接一个固定的格式进行输出,在Dify中进行模板转换的核心操作是通过‌Jinja2模板引擎‌动态格式化数据,实现从原始输入到结构化输出的自动化处理。


2.8 结束节点:

在Dify的工作流设计中,‌结束节点‌是流程的强制终止点与结果输出出口,承担以下核心功能,每个工作流必须有且仅有一个结束节点,确保流程闭环可控:

  • ①. 终止逻辑流‌
    作为工作流的终点,结束节点强制终止所有后续操作,避免流程无限循环或冗余执行,标志着任务完成的最终状态。
  • ②. 聚合输出结果‌
    接收并整合前置节点(如LLM生成、模板转换、变量聚合)的处理结果,向用户或外部系统返回结构化响应(如文本、JSON、HTML)。

image.png

这里我们就将模板转换好的格式直接绑定变量输出即可。


2.9 文件为空链路分支节点测试:

在Dify中,‌追踪‌指实时监控与分析工作流执行状态及用户交互意图的双维度能力,具体包含:

  • ①. 执行流追踪‌:可视化记录工作流节点运行状态(如耗时、错误)及变量传递过程,辅助调试与优化决策路径。
    ‌- ②. 意图追踪‌:在对话应用中捕捉用户深层需求(如客服场景中的出行时间、车次偏好),驱动精准响应与流程动态调整。
    本质是‌贯穿AI应用生命周期的核心观测能力‌,支撑性能调优与交互体验升级。

image.png

这里我们通过系统提供的追踪功能,可以看到输入与输出的返回值,可以很好的在单个节点中进行debug调试,非常方便,这里在代码执行的时候,一直会有报错,但是我们通过追踪功能,就马上结局了这个问题,Dify的追踪功能通过实时监控与深度分析,为性能调优提供精准数据支撑和优化方向。

image.png

以上是文件解析成功,但是没有通过文本找到是哪个诗人时,会默认通过华为云华为云云主机部署平台上的DeepSeek-V3/R1大模型推理服务进行搜索一个默认的诗人,并将诗人的名字与诗词语句全部返回到结束节点。


2.10 另外支线有历史人物名字的开发:

同理,我们新增一个LLM4大模型,主要是查询这个历史人物的背景信息,在Dify中,‌LLM节点‌是工作流的中枢引擎,接收用户输入(文本/文件/指令),通过大语言模型将其转化为目标输出(如文案、翻译、代码、分类结果等),本质是‌实现自然语言到任务结果的智能信号转换‌。

image.png

再通过模板转换,将LLM和LLM4所查询到的结果进行组装成一个固定的模板格式输出, 动态生成客服话术(结合用户画像)、知识库检索结果的结构化呈现(如表格/列表)、以及API响应数据的标准化输出。本质上,它是‌连接数据与AI生成的关键桥梁‌,使非技术人员也能快速定制复杂文本逻辑。

image.png

最后,进行测试可以看到上面的链路也完成了,也可以得到答案,Dify的‌运行测试‌功能是工作流上线前的核心验证环节,通过模拟真实请求快速验证流程的完整性与可靠性。

image.png

它能在开发阶段暴露潜在问题(如节点连接错误、数据格式不兼容),确保AI应用交付时具备稳定的业务表现。测试结果会反馈各节点耗时与资源消耗,为性能优化提供量化依据,本质上是用最小成本提前规避生产环境风险。


三、测试与发布应用

Dify平台的预览功能为开发者提供了方便的测试环境。在发布之前,可以通过输入实际内容对流程进行完整测试。观察各模块的处理结果,确保每一步逻辑正常执行。

image.png

应用发布后,即可投入使用。用户通过界面输入内容,系统便会自动完成,在使用过程中,云主机 X实例提供了强有力的运行保障,即使在多用户同时使用或处理大型小说时,也能保持高效稳定的服务体验。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。