本地部署 AI 智能体,Dify 搭建保姆级教程:票据(发票/火车票)识别工作流 API 对接

搭建一个dify 工作流,不是目的。我们希望的是可以在具体的业务中使用起来。所以避免不了要通过api 的方式。
本文将教会你如何一步一步对接一个工作流,看完这个教程,我相信你可以对接所有的工作流。
工作流搭建教程: 票据识别工作流搭建
一个工作流,本想着一会就对接完毕,没想到坑不少。
每一个细节不对,都无功而返,折腾了几个小时。
终于走完了全流程。废话不多说,来,走起。

一、首先,阅读:票务识别工作流的api:

无论对接什么平台,仔细阅读api 是必须的。

可以看出这个工作流包含7个接口。

因为我们的目的是执行工作流,所以第一个接口,必须是执行工作流;

重点关注:执行 workflow

从图中可以看出,这个接口有3个参数:

  • response_mode: 很好理解。使用推荐的 streaming 即可。

  • User:一个唯一标识符。也好理解。

  • Inputs: 这个就麻烦了,看不懂。inputs 解释的最后一句话,如果是文件类型,就需要一个以下files 中所描述的对象。files 如下图所示:

​ 先读files, 属性 transfer_method 很重要。即文件选择本地还是网络。即支持本地上传和从网络读取。

​ 我们这里实验本地读取。

​ 从图中1 和 2 的对比可以看出, inputs 中是放了一个 key-value 模式的参数。 Value 是一个对象,包含3个参数。key 从哪里来呢? 可以看出图中2 ,ke y 是用{}大括号圈起来的。

重点来了:打开工作流,在开始节点,新增变量。 p 。

完整的传参:
{
  "inputs": {"p": [{"transfer_method": "local_file","upload_file_id": "3954b2dd-f1f4-4ba4-8528-31b479f09537","type": "image"}]
  },
  "response_mode": "streaming",
  "user": "abbbacc-123123"
}

需要注意的是: 我们选择了本地上传。 从 files 的介绍中可以看出,我们需要一个upload_file_id。从哪里来呢?

就需要下面的上传图片接口:会返回一个id.

接口:上传图片

二、介绍完毕,开始实操:

2.1 创建api-key:

通过图中1,2,3 即可获取一个密钥。

2.2 配置上传图片的变量:

这里至关重要,不创建变量。在执行工作流的时候,没有key,无法传参。

2.3 调用上传图片接口:

1. 复制 curl ,导入到 apifox 中:
2.添加参数;
3. 执行;

记得添加端口号。默认的请求没有端口号

4. 保存返回的 id.

2.4 调用: 票务识别工作流

导入接口:

添加参数:
执行,结果如下:

2.5 在dify 中查看调用记录,现实成功:

日志分析:

三、总结:

在apifox 可以调用成功,就说明这个接口可以在我们的服务中使用了。可以对接到业务中了。

下一篇将介绍: agent+工作流,如何使用。

### 各组件及其版本的功能与集成方式 #### 1. **langgenius/dify-api:0.6.6** `langgenius/dify-api:0.6.6` 是 Dify API 的核心容器镜像,提供了一个 RESTful 接口来管理 AI 应用程序的创建、训练和推理功能。它集成了多种工具支持,如搜索引擎、天气预报等[^1]。此镜像是整个系统的控制中心,负责接收外部请求并协调其他服务完成任务。 集成方式通常通过 Docker Compose 文件定义其运行环境变量和服务端口映射关系。例如: ```yaml version: '3' services: api: image: langgenius/dify-api:0.6.6 ports: - "8000:8000" environment: DATABASE_URL: postgres://user:password@db:5432/dify_db ``` --- #### 2. **postgres:15-alpine** PostgreSQL 数据库用于存储结构化数据,比如用户的配置文件、历史记录以及其他元数据信息。版本 `15-alpine` 表示 PostgreSQL 15 版本,并采用轻量 Alpine Linux 基础镜像构建而成。该数据库对于持久保存应用状态至关重要[^3]。 为了确保高可用性和性能优化,在实际部署过程中可以考虑设置主从复制机制或者定期备份策略。以下是简单的 compose 配置片段: ```yaml db: image: postgres:15-alpine environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: dify_db volumes: - ./data:/var/lib/postgresql/data ``` --- #### 3. **redis:6-alpine** Redis 主要作为缓存层服务于高频读取操作场景下提升响应速度的任务需求。此外还可以充当消息队列角色实现异步处理逻辑。这里选用的是 Redis 6 版本搭配 alpine 发行版以减少资源消耗。 下面展示如何将其加入到 docker-compose.yml 中并与其它微服务交互: ```yaml cache: image: redis:6-alpine ports: - "6379:6379" ``` 随后可以在应用程序内部指定连接字符串指向这个实例地址。 --- #### 4. **semitechnologies/weaviate:1.19.0** Weaviate 是一种矢量搜索引擎,能够高效检索嵌入向量空间中的相似项。这使得复杂自然语言查询变得可行,从而增强了语义理解能力。在此项目里使用的特定标签号表明开发者希望锁定兼容性良好的稳定发行版而非最新边缘特性预览版。 启动 Weaviate 实例时需注意初始化参数设定以便适配目标工作负载特征: ```yaml weaviate: image: semitechnologies/weaviate:1.19.0 ports: - "8080:8080" environment: QUERY_DEFAULTS_LIMIT: 25 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' ``` --- #### 5. **langgenius/dify-sandbox:0.1.0** `sandbox` 容器扮演着隔离测试环境的角色,允许用户在一个受控区域内尝试新想法而不会影响生产流程。尽管当前仅处于早期迭代阶段 (v0.1.0),但它已经具备基本框架用来验证概念证明型实验成果。 典型应用场景可能涉及加载定制插件模块或是调整算法超参组合等等动作。相应部分声明如下所示: ```yaml sandbox: image: langgenius/dify-sandbox:0.1.0 depends_on: - db - cache ``` 上述例子强调了依赖链条顺序的重要性——即必须等待基础支撑设施完全就绪之后再激活高业务单元。 --- #### 6. **nginx:latest** 最后提到 Nginx 负责反向代理职责,统一入口流量分发至下游多个后端节点上执行具体事务处理活动。由于官方维护积极频繁更新补丁修复漏洞等原因,“latest” 标签代表获取最近一次发布的通用二进制包集合[^2]。 下面是关于如何配置 SSL/TLS 加密通信链路的一个简单示范脚本节选: ```nginx server { listen 443 ssl; server_name localhost; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; location / { proxy_pass http://api:8000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值