dify对接钉钉

背景:

AI识别单据并且生成一个固定的json数据。但这只是识别并生成了AI的数据,没有人工标注和评测AI模型的基准数据,所以就做了一个对接钉钉并自动生成标注任务的能力。使用的平台为dify。


实现步骤:

工作流如下:

1. 上传单据

由于上传到dify的单据有加签和时效,在一定时间后就会过期。所以智能体的开始步骤我选择了上传图片以及图片的URL;该工作流后期是会对接业务线自己的API,并且图片都会传到公司自己的文件服务器,所以增加一个file_url作为接收公司自己的文件url。

2.识别

识别这一步就忽略不计了,就是调用大模型,编写一系列提示词。。

3.代码执行

增加”代码执行“的节点,用于拼接各类参数以及markdown数据。

代码如下:

代码中有输出很多没用的字段,这是因为在调试过程中不断增加导致的,用不到的删除就行。

import json

import time

import hashlib

from datetime import datetime

import pytz

def main(machine_json: str, image_url: str, file_url: str):

    task_id = hashlib.md5(str(time.time()).encode()).hexdigest()[:8]

    machine_json_str = machine_json

    try:

        machine_json = json.loads(machine_json)

    except:

        machine_json = machine_json

    doc_url = "https://alidocs.dingtalk.com/i/nodes/xxxxxxxxxxxx"

    beijing_tz = pytz.timezone('Asia/Shanghai')

    beijing_time = datetime.now(beijing_tz)

    current_time = beijing_time.strftime('%Y-%m-%d %H:%M:%S')

    markdown_text = f"""### 🔔 <font color=#FF0000>新的人工标注任务</font>\n\n**任务ID**:`{task_id}`\n\n**图片链接**:`{file_url}`\n\n**图片**:[点击查看图片]({file_url})\n\n**机器识别结果**:\n```json\n{machine_json}\n```\n**请操作**:\n1. 打开钉钉文档:[点击进入标注表格]({doc_url})\n2. 找到任务ID为 `{task_id}` 的行\n3. 在“人工JSON”列输入你的识别结果\n4. 将状态改为“已完成”\n*生成时间:{current_time}*"""


    img_html = f"![图片]({file_url})"

    dingtalk_message = {

        "msgtype": "markdown",

        "markdown": {

            "title": "测试消息",

            "text": markdown_text

        }

    }

    row_data = {

        "任务ID": task_id,

        "图片链接": image_url,

        "机器JSON": machine_json,

        "状态": "待人工",

        "创建时间": current_time

    }

    return {

        "dingtalk_message": json.dumps(dingtalk_message,ensure_ascii=False),

        "task_id": task_id,

        "machine_json": machine_json,

        "doc_url": doc_url,

        "markdown_text": markdown_text,

        "row_data": row_data,

        "file_url": file_url,

        "machine_json_str": machine_json_str,

        "img_html": img_html

    }

4.发送钉钉消息

在工作流中添加一个”钉钉“工具。

在钉钉群里添加一个”自定义机器人“,添加的机器人会有access_token和加签秘钥,分别填写到该节点中去。

由于我是要发送markdown的内容,所以webhook类型选择为markdown。

消息内容就直接引用”代码执行“中所输出的markdown_text变量。

执行后,钉钉群里就会收到消息。

5.记录数据到表格

接下来就是自动将需要标注的数据到表格了。

首先创建一个钉钉的”AI表格“,切换到”数据“这一个tab,表头这些任意定义。

接下来切换到”自动化“tab。

点开第一步,切换触发条件为”接收到数据时“webhook,会生成一个固定的webhook链接,复制。

并且需要写一个标准的参数示例。

增加第二步”新增记录“,这一步中的需要设置记录内容,这个里面的key就是从上一步的参数示例中提取并自动生成的。”选择数据表“就是选择刚刚新建的这一个表。

接下来就是在工作流中增加一个 ”http请求“节点,选择post请求,url就是刚刚复制得到的webhook链接,json内容就自己拼接,但key一定要要跟前面定义的一样否则钉钉表格无法正确接收字段。

最后,执行工作流,就会发现群里有钉钉消息了,并且文档也自动增加了一行数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容