影刀如何使用Dify工作流(持续更新)
评论
收藏

影刀如何使用Dify工作流(持续更新)

经验分享
Eureka_moment
2025-10-28 18:53·浏览量:3800
Eureka_moment
发布于 2024-08-03 11:28更新于 2025-10-28 18:533800浏览

影刀如何结合Dify工作流使用:

假如现在我需要调用dify工作流,我现在需要dify的工作流的api key.


如何获取dify工作流的api key

这样就复制好密钥了 正确的密钥格式为 app-5eVnQ7gUA0IdRmog5c4pfxud (这个密钥已失效)



然后到影刀新建一个模块.

复制粘贴以下代码:

# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块

import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import requests
import json

def main(args):
    pass



def run_dify_workflow(Dify_workflow_API_key, Dify_workflow_Input):
    """
    执行Dify工作流并返回结果。

    :param Dify_workflow_API_key: Dify工作流的API密钥
    :param Dify_workflow_Input: 工作流的输入,字典类型,且所有值均为字符串类型
    :return: 工作流的输出,字典类型
    """
    url = "https://api.dify.ai/v1/workflows/run"
    headers = {
        'Authorization': f'Bearer {Dify_workflow_API_key}',
        'Content-Type': 'application/json',
    }
    #保证所有输入的值均为字符串类型
    Dify_workflow_Input = {k: str(v) for k, v in Dify_workflow_Input.items()}
    
    # 数据结构
    data = {
        "inputs": Dify_workflow_Input,
        "response_mode": "blocking",
        "user": "default-user-id"
    }

    proxies = {
        'https': 'http://127.0.0.1:7897',
        'http': 'http://127.0.0.1:7897'
    }

    try:
        response = requests.post(url, headers=headers, json=data, proxies=proxies)
        
        # 打印完整的响应内容,以便调试
        print(f"响应状态码: {response.status_code}")
        # print(f"响应内容: {response.text}")
        
        response.raise_for_status()  # 如果响应状态码不是2xx,将引发异常

        result = response.json()
        if 'data' in result and 'outputs' in result['data']:
            Dify_workflow_Output = result['data']['outputs']
            return Dify_workflow_Output
        else:
            print("响应中没有找到预期的数据结构")
            return None
    except requests.RequestException as e:
        print(f"请求出错: {str(e)}")
        return None


代码里 proxies 的端口可能每个人不一样,到这里查看进行更改就行,没有开代理软件的把这段代码删掉即可。

proxies = {
        'https': 'http://127.0.0.1:7897',
        'http': 'http://127.0.0.1:7897'
    }

开始菜单-设置-网络和Internet-代理

设置完成后,到影刀主流程中,调用模块

输入输出需要注意的点是:

Dify_workflow Input 与 Output 都是字典格式,键和值都得对应

举例:

如果我在Dify中设置的输入是这样的

那么我的Dify_workflow Input就应该是这样,这样才不会报错.

Dify_workflow Input = {
  "AA": "这是A的文字内容",
  "BB": "这是B的文字内容",
  "CC": "这是C的文字内容",
}

目前我的dify工作流的结构是这样的

如果你的Dify工作流的结束时这样设置的

那么你得到的返回的Dify_workflow_Output就是这样

Dify_workflow_Output ={
  "EE": "这是A的文字内容",
  "FF": "这是B的文字内容",
  "GG": "这是C的文字内容"
}

好的,那么整个影刀流程结构如下:

然后就可以顺利使用了



2025/10/25 作者更新:修改了拼写错误。

2025/10/28 作者更新:因为文章编辑器没有自动保存功能,重新做的全新教程被一次自动刷新全清空了,全白改,作者气坏了。 生气

收藏11
全部评论1
最新
发布评论
评论