Skip to content

Commit e3409fa

Browse files
author
mobiusy
committed
docs: 添加http_request_stream插件的README文档
添加详细的README文档说明http_request_stream插件的功能特性、使用方法和开发说明
1 parent 66d9b94 commit e3409fa

1 file changed

Lines changed: 108 additions & 0 deletions

File tree

README.md

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Dify 插件:http_request_stream
2+
3+
一个用于发送 HTTP 请求并以流式方式返回响应内容的插件。该插件特别适用于对接支持流式输出(如 SSE、分块响应)的 HTTP 服务,并将流内容实时输出给回答节点。
4+
5+
## 基本信息
6+
- 作者:mobiusy
7+
- 版本:0.0.1
8+
- 类型:tool
9+
10+
## 功能特性
11+
12+
### 流式请求与输出
13+
- 发送 HTTP 请求(支持 GET/POST/PUT/DELETE/HEAD/PATCH),并在响应为流式内容时实时读取
14+
- 内置 SSE 兼容请求头(Accept: text/event-stream / Connection: keep-alive / Cache-Control: no-cache)
15+
- 将流式文本以变量的形式持续输出到回答节点,变量名为 `stream_text`
16+
17+
### 请求体支持
18+
- 支持可选的 JSON 请求体(字符串形式传入),自动解析为 JSON 并随请求发送
19+
20+
### 健壮的错误处理
21+
- 检查 URL 合法性(必须以 http:// 或 https:// 开头)
22+
- 对非 2xx 的 HTTP 状态码进行友好错误提示
23+
- 连接阶段超时控制(连接超时 5 秒,读取阶段不设总体超时以保障流不中断)
24+
25+
## 安装与快速开始
26+
27+
1. 在 Dify 中安装本插件(可从 Marketplace 安装或通过本地包导入)
28+
2. 在工作流或工具流中添加工具 `http_request_stream`
29+
3. 在回答节点选择“流式输出”方式,并引用变量 `stream_text` 展示实时内容
30+
31+
> 说明:本插件无需额外的凭证配置。
32+
33+
## 使用示例
34+
35+
### 1)GET 方式获取流式数据
36+
```yaml
37+
tool: http_request_stream
38+
parameters:
39+
method: "GET"
40+
url: "https://httpbin.org/stream/10"
41+
```
42+
43+
### 2)POST 方式,发送 JSON 请求体,并获取流式返回
44+
```yaml
45+
tool: http_request_stream
46+
parameters:
47+
method: "POST"
48+
url: "https://example.com/sse"
49+
body: "{\"query\": \"hello\", \"user_id\": 123}"
50+
```
51+
52+
### 3)在回答节点中展示流输出
53+
- 将回答节点的内容设置为引用变量 `{{stream_text}}`
54+
- 当远端服务持续返回流式文本时,回答节点将持续更新显示
55+
56+
## 工具参考
57+
58+
| 工具 | 描述 | 关键参数 |
59+
|------|------|----------|
60+
| `http_request_stream` | 发送 HTTP 请求并以流式方式返回响应文本 | `method`(选择:GET/POST/PUT/DELETE/HEAD/PATCH),`url`(必填),`body`(可选 JSON 字符串) |
61+
62+
### 参数说明
63+
- `method`(必填,select):HTTP 方法,默认 `GET`
64+
- `url`(必填,string):请求的完整 URL(必须以 http:// 或 https:// 开头)
65+
- `body`(可选,string):JSON 字符串形式的请求体(仅在需要时提供,格式必须合法)
66+
67+
### 输出变量
68+
- `stream_text`:工具每次接收到的流文本片段会即时以该变量输出,可用于回答节点的动态展示
69+
70+
## 错误处理
71+
72+
- URL 为空或不合法:抛出 `httpx.InvalidURL` 错误
73+
- 非 2xx 状态码:抛出 `httpx.HTTPStatusError` 并显示状态码
74+
- JSON 解析失败:`body` 不是合法 JSON 字符串时抛出 `ValueError`
75+
- 网络异常或中断:捕获并抛出 `httpx.HTTPError` 或其他异常,便于定位问题
76+
77+
## 限制与注意事项
78+
79+
- 仅支持 HTTP/HTTPS URL
80+
- 服务器需支持流式输出(SSE 或分块响应)才能持续返回内容,否则可能一次性返回并结束
81+
- 当前版本不支持自定义请求头或认证参数;如需扩展,请在工具逻辑中添加相应支持
82+
- `body` 仅支持 JSON 字符串格式
83+
84+
## 常见问题与排查
85+
86+
1. “URL must start with http:// or https://”:请确认 URL 前缀正确
87+
2. “HTTP Error: <status_code>”:服务端返回了非 2xx 状态码,请检查接口是否正常或参数是否正确
88+
3. “body must be a valid JSON string.”:`body` 必须为合法的 JSON 字符串,请使用双引号并确保可被解析
89+
4. 长时间无输出:目标接口可能不支持流式返回或被网关/代理阻断
90+
91+
## 开发说明
92+
93+
本插件基于 Dify 插件框架实现,遵循“一个文件一个工具类”的最佳实践:
94+
- 工具定义:`tools/http_request_stream.yaml`
95+
- 工具实现:`tools/http_request_stream.py`(类名:`HttpRequestStreamTool`)
96+
- 提供者配置:`provider/http_request_stream.yaml`,本插件当前不需要凭证
97+
98+
实现要点:
99+
- 使用 `httpx.stream` 进行流式读取,并设置 SSE 兼容头部
100+
- 每次读取到的流文本通过 `create_stream_variable_message("stream_text", line)` 持续输出
101+
102+
## 许可
103+
104+
本插件按现状提供用于 Dify 使用。请参考 Dify 的许可条款以了解具体使用权利。
105+
106+
107+
108+

0 commit comments

Comments
 (0)