跳转至

项目发布运行与导出导入

本节目标

1、掌握 Dify 项目的发布与运行方式

2、掌握项目嵌入网站的方法

3、学会通过 API 在 Python 中调用 Dify

4、理解流式响应(streaming)的基本使用

5、掌握工作流的导出与复用(DSL导入导出)

一 Dify项目发布

点击发布更新,进行发布更新。

img

二 在网页中运行

img

在网页中进行测试运行:

img

三 嵌入网站运行

通过以下操作可以嵌入网站运行

img

代码如下:

img

复制代码到Pycharm中:

img

运行结果如下:

img

四 在API中进行调用

img

img

在python中编辑代码如下:

import requests
import json

url = "http://127.0.0.1/v1/chat-messages"
headers = {
    "Authorization": "Bearer app-CoM2a5qUBGGbVzSzovsOwVoX",  # 请替换为你的有效API密钥
    "Content-Type": "application/json",
}

def handle_streaming_response(query, user="duyi", conversation_id="", inputs={}, response_mode="streaming"):
    """
    处理流式响应,手动传入query进行回答
    :param query: 问题内容
    :param user: 用户名
    :param conversation_id: 会话ID
    :param inputs: 额外输入(dict)
    :param response_mode: 响应模式
    :return: 完整消息内容
    """
    data = {
        "inputs": inputs,
        "query": query,
        "response_mode": response_mode,
        "conversation_id": conversation_id,
        "user": user,
    }

    response = requests.post(url, headers=headers, data=json.dumps(data), stream=True)
    if response.status_code != 200:
        print(f"请求失败,状态码: {response.status_code}")
        print(f"错误信息: {response.text}")
        return None

    print("流式响应内容:")
    full_message = ""

    for line in response.iter_lines():
        if not line:
            continue
        line_str = line.decode("utf-8")
        if line_str.startswith("data: "):
            line_str = line_str[len("data: "):]
        # print(line_str)
        # 尝试解析JSON
        try:
            data_dict = json.loads(line_str)
            # print(data_dict)
            if data_dict.get("event", "") == "message":
                answer_chunk = data_dict.get("answer", "")
                print(answer_chunk, end="", flush=True)
                full_message += answer_chunk
        except:
            # print("无法解析JSON")
            continue
    return full_message


if __name__ == "__main__":
    user_query = " iPhone 15 Pro 的产品定位是什么?"
    full_message = handle_streaming_response(user_query)

运行结果:

流式响应内容:
根据已提供的信息,iPhone 15 Pro的产品定位如下:

1. 是苹果公司在2023年推出的旗舰智能手机。
2. 代表了当下移动技术的巅峰水平。
3. 专为追求极致体验、重视品牌价值与技术创新的用户打造。
4. 是高端手机市场的标杆之作。

可以嵌入到其他程序中进行使用。

五 导出Dify工作流

导出Dify工作流,可以让程序给其他工程师进行使用。

img

在另一台电脑上,或者另一个项目中,可以导入DSL。

img

六 本节总结

本节完成了项目从“开发”到“落地使用”的全过程,包括发布、运行、嵌入和API调用。

核心能力:

1、发布并在线运行工作流

2、通过 API 将 Dify 集成到业务系统

3、支持流式输出提升交互体验

4、通过 DSL 实现项目复用与迁移