项目发布运行与导出导入
本节目标
1、掌握 Dify 项目的发布与运行方式
2、掌握项目嵌入网站的方法
3、学会通过 API 在 Python 中调用 Dify
4、理解流式响应(streaming)的基本使用
5、掌握工作流的导出与复用(DSL导入导出)
一 Dify项目发布
点击发布更新,进行发布更新。

二 在网页中运行

在网页中进行测试运行:

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

代码如下:

复制代码到Pycharm中:

运行结果如下:

四 在API中进行调用


在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工作流,可以让程序给其他工程师进行使用。

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

六 本节总结
本节完成了项目从“开发”到“落地使用”的全过程,包括发布、运行、嵌入和API调用。
核心能力:
1、发布并在线运行工作流
2、通过 API 将 Dify 集成到业务系统
3、支持流式输出提升交互体验
4、通过 DSL 实现项目复用与迁移