DeepSeek+dify 工作流保姆级教程:票据识别专家智能体

Dify最牛的地方就是像搭积木一样简单——不用懂代码,普通人稍微学学就能用它的「智能机器人」和「流程图」功能,自己拼出一套自动化工具。比如自动回复客户、处理文件这些事,你拖拖拽拽就能搭出想要的功能,特别适合折腾些好玩的小发明。

我们可以通过智能体或工作流,自定义工具完成很多我们好玩的功能。

报文篇幅较长,简单说下内容:

  1. 从0开始创建一个票务识别智能体;
  2. 介绍搭建过程中的各个细节;
  3. 教会你每一步为什么,而不是只是完成;

通过实践这个流程,我相信你可以学会自己搭建自己需要的智能体。

一、Dify 工作流:

工作流通过将复杂的任务分解成较小的步骤(节点)降低系统复杂度,减少了对提示词技术和模型推理能力的依赖,提高了 LLM 应用面向复杂任务的性能,提升了系统的可解释性、稳定性和容错性。

Dify 工作流分为两种类型:

  • Chatflow:面向对话类情景,包括客户服务、语义搜索、以及其他需要在构建响应时进行多步逻辑的对话式应用程序。
  • Workflow:面向自动化和批处理情景,适合高质量翻译、数据分析、内容生成、电子邮件自动化等应用程序。

二、如何开始呢?

  1. 从一个空白的工作流开始构建或者使用系统模版帮助你开始;
  2. 熟悉基础操作,包括在画布上创建节点、连接和配置节点、调试工作流、查看运行历史等;
  3. 保存并发布一个工作流;
  4. 在已发布应用中运行或者通过 API 调用工作流;

根据这四步,我们一步一步来实现。

三、创建火车票单类票据识别智能体工作流:

3.1 创建工作里空白应用:

在首页,选择 工作室-> 工作流-> 创建空白应用

按照下图所示 1-> 2 -> 3 ,操作

工作流创建成功:

3.2 添加节点:

点击 + 号,添加节点

选择自己需要的节点:我们这里选择 LLM

3.3 选择LLM 节点后如下:

3.4 修改配置LLM

  1. 选择模型,这里选择的模型需要支持: 多模态输入的大模型。因为要使用视觉。我这里使用的是通过ollama 部署的 llava 本地模型。

  2. 输入角色提示词,在SYSTEM中填入:

    根据图片识别内容,给出json格式的结构化信息,包括:起始站,终点站,车次,乘车日期,出发时间,票面价格,身份证号,姓名。
    

​ 因为我们的任务非常简单,因此无需复杂的提示词,只要把你的要求清晰表达出来即可。

  1. **视觉**选项打开,否则 Dify 默认不启用多模态能力。

    添加结束节点:

3.5 一个火车票识别智能体就搭建完了。点击发布。

3.6 开启图片上传功能:

3.7 火车票识别智能体运行:

3.8 点击运行,上传火车票:

图片支持:本地和网络地址

3.9 点击开始运行,分析结果:

可以看出结果是比较糟糕的,识别的信息错误很大。主要是模型不星。

3.10 更换大模型:

使用:Qwen/Qwen2-VL-72B-Instruct

3.11 重新识别,非常完美的结果:

四、创建多类票据识别智能体工作流:

多票据,可以知道,需要先判断是什么票?

遇事不决,交给大模型。

4.1 只需加一个发票类型识别的LLM:

发票和火车票,提示词如下:

你是发票识别专家,根据用户上传的发票图像,给出发票类型。只需返回指定的发票类型对应的序号,无需其他任何内容。
发票类型包括:
1.火车票
2.增值税电子发票
如果无法判断,直接输出0。

如果是火车票,输出 1. 如果是增值税电子发票,输出2.

4.2 添加条件分支:

这个分支的意义是,如果是火车票,走哪个模型;如果是发票,走哪个模型:

4.3 需要新增一个 LLM发票识别.

提示词:

根据图片识别内容,给出json格式的结构化信息,包括:发票标题,发票号码,开票日期,购买方信息名称,购买方统一社会信用代码/纳税人识别号,销售方信息名,销售方统一社会信用代码/纳税人识别号,项目名称,规格型号,单位,数量,单价,金额,价税合计(小写),备注。

其实就是,把发票上的信息。描述了一下。

4.4 添加变量聚合器

把不同识别大模型的输出,都统一路由到一个叫变量聚合器的组件中:

这样的话,就不用给每一个识别模型,都设置结束节点。

4.5 配置结束节点:

4.6 完整工作流展示:

4.7 验证:运行识别火车票,完美实现功能:

从追踪结果看:完全符合我们的判断;

如果识别是火车票,输出 1. 条件判断走: 火车票识别大模型,通过变量聚合器后,输出。

4.8 验证:运行发票识别,完美:

4.9 导出保存DSL:

4.10 导入入口:

如果想要使用别人的工作流,这里直接导入即可。

五、备注一下,文中使用的模型都是用的硅基的,获取流程如下:

注册即送 2000 万 Tokens

5.1 注册地址:

https://cloud.siliconflow.cn/i/5WC4oDo4

img

5.2 如何获取 SiliconCloud api-key?

点击注册地址: https://cloud.siliconflow.cn/i/5WC4oDo4。注册后登陆进入以下页面,创建api-key。

img

配置后,在聊天助手中就可以使用,可以看到硅基的模型:

img

### 如何在 Dify 大模型工作流中上传文件 #### 文件上传的支持形式 Dify当前仅支持特定类型的文件上传操作,特别是对于图像文件的处理。为了适应这一需求,在实际应用中,前端传输给后端的数据是以Base64编码的形式存在的[^1]。 #### 实现过程中的挑战 当尝试将上传的功能集成到基于大型语言模型(LLM)的应用场景下时,可能会面临一些困难。例如,即使通过`sys.files`实现了基本的文件接收能力,但在使这些接收到的文件成为LLM能够理解的信息方面遇到了阻碍——即难以让LLM识别并利用上传的文件内容作为输入的一部分[^2]。 #### 解决方案概述 针对上述提到的问题,可以考虑引入额外的内容提取机制来辅助完成整个流程。具体来说,可以通过创建专门用于解析和预处理所上传文件的新组件或服务来进行优化改进。比如,如果目标是从图片中抽取文本,则应构建一个负责OCR(光学字符识别)的任务节点;而对于其他类型的非结构化数据,则可能需要相应的转换逻辑以确保最终能被下游的语言模型有效解读[^3]。 ```python import base64 from io import BytesIO from PIL import Image def decode_image_from_base64(base64_string): """解码来自前端发送过来的base64字符串""" img_data = base64.b64decode(base64_string.split(',')[1]) image = Image.open(BytesIO(img_data)) return image # 假设这是从前端获取到的一个包含图片信息的base64字符串 example_base64_img_str = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..." decoded_image = decode_image_from_base64(example_base64_img_str) print("Image successfully decoded.") ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值