@gradio/client 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/index.js +72 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +30 -2
- package/src/types.ts +1 -1
- package/src/utils.ts +59 -0
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# @gradio/client
|
2
2
|
|
3
|
+
## 0.11.0
|
4
|
+
|
5
|
+
### Features
|
6
|
+
|
7
|
+
- [#7102](https://github.com/gradio-app/gradio/pull/7102) [`68a54a7`](https://github.com/gradio-app/gradio/commit/68a54a7a310d8d7072fdae930bf1cfdf12c45a7f) - Improve chatbot streaming performance with diffs. Thanks [@aliabid94](https://github.com/aliabid94)!/n Note that this PR changes the API format for generator functions, which would be a breaking change for any clients reading the EventStream directly
|
8
|
+
|
3
9
|
## 0.10.1
|
4
10
|
|
5
11
|
### Fixes
|
package/dist/client.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAQN,cAAc,
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -170,6 +170,52 @@ const hardware_types = [
|
|
170
170
|
"a10g-large",
|
171
171
|
"a100-large"
|
172
172
|
];
|
173
|
+
function apply_edit(target, path, action, value) {
|
174
|
+
if (path.length === 0) {
|
175
|
+
if (action === "replace") {
|
176
|
+
return value;
|
177
|
+
} else if (action === "append") {
|
178
|
+
return target + value;
|
179
|
+
}
|
180
|
+
throw new Error(`Unsupported action: ${action}`);
|
181
|
+
}
|
182
|
+
let current = target;
|
183
|
+
for (let i = 0; i < path.length - 1; i++) {
|
184
|
+
current = current[path[i]];
|
185
|
+
}
|
186
|
+
const last_path = path[path.length - 1];
|
187
|
+
switch (action) {
|
188
|
+
case "replace":
|
189
|
+
current[last_path] = value;
|
190
|
+
break;
|
191
|
+
case "append":
|
192
|
+
current[last_path] += value;
|
193
|
+
break;
|
194
|
+
case "add":
|
195
|
+
if (Array.isArray(current)) {
|
196
|
+
current.splice(Number(last_path), 0, value);
|
197
|
+
} else {
|
198
|
+
current[last_path] = value;
|
199
|
+
}
|
200
|
+
break;
|
201
|
+
case "delete":
|
202
|
+
if (Array.isArray(current)) {
|
203
|
+
current.splice(Number(last_path), 1);
|
204
|
+
} else {
|
205
|
+
delete current[last_path];
|
206
|
+
}
|
207
|
+
break;
|
208
|
+
default:
|
209
|
+
throw new Error(`Unknown action: ${action}`);
|
210
|
+
}
|
211
|
+
return target;
|
212
|
+
}
|
213
|
+
function apply_diff(obj, diff) {
|
214
|
+
diff.forEach(([action, path, value]) => {
|
215
|
+
obj = apply_edit(obj, path, action, value);
|
216
|
+
});
|
217
|
+
return obj;
|
218
|
+
}
|
173
219
|
function normalise_file(file, server_url, proxy_url) {
|
174
220
|
if (file == null) {
|
175
221
|
return null;
|
@@ -401,6 +447,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
401
447
|
const last_status = {};
|
402
448
|
let stream_open = false;
|
403
449
|
let pending_stream_messages = {};
|
450
|
+
let pending_diff_streams = {};
|
404
451
|
let event_stream = null;
|
405
452
|
const event_callbacks = {};
|
406
453
|
const unclosed_events = /* @__PURE__ */ new Set();
|
@@ -830,7 +877,7 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
830
877
|
}
|
831
878
|
}
|
832
879
|
};
|
833
|
-
} else if (protocol == "sse_v1") {
|
880
|
+
} else if (protocol == "sse_v1" || protocol == "sse_v2") {
|
834
881
|
fire_event({
|
835
882
|
type: "status",
|
836
883
|
stage: "pending",
|
@@ -918,6 +965,9 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
918
965
|
endpoint: _endpoint,
|
919
966
|
fn_index
|
920
967
|
});
|
968
|
+
if (data2 && protocol === "sse_v2") {
|
969
|
+
apply_diff_stream(event_id, data2);
|
970
|
+
}
|
921
971
|
}
|
922
972
|
if (data2) {
|
923
973
|
fire_event({
|
@@ -948,6 +998,9 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
948
998
|
if (event_callbacks[event_id]) {
|
949
999
|
delete event_callbacks[event_id];
|
950
1000
|
}
|
1001
|
+
if (event_id in pending_diff_streams) {
|
1002
|
+
delete pending_diff_streams[event_id];
|
1003
|
+
}
|
951
1004
|
}
|
952
1005
|
} catch (e) {
|
953
1006
|
console.error("Unexpected client exception", e);
|
@@ -979,6 +1032,24 @@ function api_factory(fetch_implementation, EventSource_factory) {
|
|
979
1032
|
}
|
980
1033
|
}
|
981
1034
|
);
|
1035
|
+
function apply_diff_stream(event_id2, data2) {
|
1036
|
+
let is_first_generation = !pending_diff_streams[event_id2];
|
1037
|
+
if (is_first_generation) {
|
1038
|
+
pending_diff_streams[event_id2] = [];
|
1039
|
+
data2.data.forEach((value, i) => {
|
1040
|
+
pending_diff_streams[event_id2][i] = value;
|
1041
|
+
});
|
1042
|
+
} else {
|
1043
|
+
data2.data.forEach((value, i) => {
|
1044
|
+
let new_data = apply_diff(
|
1045
|
+
pending_diff_streams[event_id2][i],
|
1046
|
+
value
|
1047
|
+
);
|
1048
|
+
pending_diff_streams[event_id2][i] = new_data;
|
1049
|
+
data2.data[i] = new_data;
|
1050
|
+
});
|
1051
|
+
}
|
1052
|
+
}
|
982
1053
|
function fire_event(event) {
|
983
1054
|
const narrowed_listener_map = listener_map;
|
984
1055
|
const listeners = narrowed_listener_map[event.type] || [];
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACtB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC;IACZ,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
@@ -29,4 +29,5 @@ export declare function get_space_hardware(space_id: string, token: `hf_${string
|
|
29
29
|
export declare function set_space_hardware(space_id: string, new_hardware: (typeof hardware_types)[number], token: `hf_${string}`): Promise<(typeof hardware_types)[number]>;
|
30
30
|
export declare function set_space_timeout(space_id: string, timeout: number, token: `hf_${string}`): Promise<number>;
|
31
31
|
export declare const hardware_types: readonly ["cpu-basic", "cpu-upgrade", "t4-small", "t4-medium", "a10g-small", "a10g-large", "a100-large"];
|
32
|
+
export declare function apply_diff(obj: any, diff: [string, (number | string)[], any][]): any;
|
32
33
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,OAAO,GACtB,MAAM,CAKR;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACrD,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC;IAC1B,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACb,CAgCA;AAED,eAAO,MAAM,aAAa,QAAqB,CAAC;AAChD,eAAO,MAAM,eAAe,QAAwB,CAAC;AACrD,wBAAsB,gBAAgB,CACrC,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,MAAM,EAAE,GACpB,OAAO,CAAC;IACV,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC;IAC1B,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC;CAClC,CAAC,CA4CD;AAED,wBAAgB,gBAAgB,CAC/B,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAID,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAe5E;AAED,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAqB1C;AAED,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,EAC7C,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAuB1C;AAED,wBAAsB,iBAAiB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,eAAO,MAAM,cAAc,0GAQjB,CAAC"}
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,OAAO,GACtB,MAAM,CAKR;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACrD,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC;IAC1B,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACb,CAgCA;AAED,eAAO,MAAM,aAAa,QAAqB,CAAC;AAChD,eAAO,MAAM,eAAe,QAAwB,CAAC;AACrD,wBAAsB,gBAAgB,CACrC,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,MAAM,EAAE,GACpB,OAAO,CAAC;IACV,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC;IAC1B,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC;CAClC,CAAC,CA4CD;AAED,wBAAgB,gBAAgB,CAC/B,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAID,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAe5E;AAED,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAqB1C;AAED,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,EAC7C,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAuB1C;AAED,wBAAsB,iBAAiB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,MAAM,EAAE,GACnB,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,eAAO,MAAM,cAAc,0GAQjB,CAAC;AAkDX,wBAAgB,UAAU,CACzB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GACxC,GAAG,CAML"}
|
package/package.json
CHANGED
package/src/client.ts
CHANGED
@@ -11,7 +11,8 @@ import {
|
|
11
11
|
set_space_hardware,
|
12
12
|
set_space_timeout,
|
13
13
|
hardware_types,
|
14
|
-
resolve_root
|
14
|
+
resolve_root,
|
15
|
+
apply_diff
|
15
16
|
} from "./utils.js";
|
16
17
|
|
17
18
|
import type {
|
@@ -288,6 +289,7 @@ export function api_factory(
|
|
288
289
|
const last_status: Record<string, Status["stage"]> = {};
|
289
290
|
let stream_open = false;
|
290
291
|
let pending_stream_messages: Record<string, any[]> = {}; // Event messages may be received by the SSE stream before the initial data POST request is complete. To resolve this race condition, we store the messages in a dictionary and process them when the POST request is complete.
|
292
|
+
let pending_diff_streams: Record<string, any[][]> = {};
|
291
293
|
let event_stream: EventSource | null = null;
|
292
294
|
const event_callbacks: Record<string, () => Promise<void>> = {};
|
293
295
|
const unclosed_events: Set<string> = new Set();
|
@@ -774,7 +776,8 @@ export function api_factory(
|
|
774
776
|
}
|
775
777
|
}
|
776
778
|
};
|
777
|
-
} else if (protocol == "sse_v1") {
|
779
|
+
} else if (protocol == "sse_v1" || protocol == "sse_v2") {
|
780
|
+
// latest API format. v2 introduces sending diffs for intermediate outputs in generative functions, which makes payloads lighter.
|
778
781
|
fire_event({
|
779
782
|
type: "status",
|
780
783
|
stage: "pending",
|
@@ -867,6 +870,9 @@ export function api_factory(
|
|
867
870
|
endpoint: _endpoint,
|
868
871
|
fn_index
|
869
872
|
});
|
873
|
+
if (data && protocol === "sse_v2") {
|
874
|
+
apply_diff_stream(event_id!, data);
|
875
|
+
}
|
870
876
|
}
|
871
877
|
if (data) {
|
872
878
|
fire_event({
|
@@ -904,6 +910,9 @@ export function api_factory(
|
|
904
910
|
if (event_callbacks[event_id]) {
|
905
911
|
delete event_callbacks[event_id];
|
906
912
|
}
|
913
|
+
if (event_id in pending_diff_streams) {
|
914
|
+
delete pending_diff_streams[event_id];
|
915
|
+
}
|
907
916
|
}
|
908
917
|
} catch (e) {
|
909
918
|
console.error("Unexpected client exception", e);
|
@@ -936,6 +945,25 @@ export function api_factory(
|
|
936
945
|
}
|
937
946
|
);
|
938
947
|
|
948
|
+
function apply_diff_stream(event_id: string, data: any): void {
|
949
|
+
let is_first_generation = !pending_diff_streams[event_id];
|
950
|
+
if (is_first_generation) {
|
951
|
+
pending_diff_streams[event_id] = [];
|
952
|
+
data.data.forEach((value: any, i: number) => {
|
953
|
+
pending_diff_streams[event_id][i] = value;
|
954
|
+
});
|
955
|
+
} else {
|
956
|
+
data.data.forEach((value: any, i: number) => {
|
957
|
+
let new_data = apply_diff(
|
958
|
+
pending_diff_streams[event_id][i],
|
959
|
+
value
|
960
|
+
);
|
961
|
+
pending_diff_streams[event_id][i] = new_data;
|
962
|
+
data.data[i] = new_data;
|
963
|
+
});
|
964
|
+
}
|
965
|
+
}
|
966
|
+
|
939
967
|
function fire_event<K extends EventType>(event: Event<K>): void {
|
940
968
|
const narrowed_listener_map: ListenerMap<K> = listener_map;
|
941
969
|
const listeners = narrowed_listener_map[event.type] || [];
|
package/src/types.ts
CHANGED
package/src/utils.ts
CHANGED
@@ -239,3 +239,62 @@ export const hardware_types = [
|
|
239
239
|
"a10g-large",
|
240
240
|
"a100-large"
|
241
241
|
] as const;
|
242
|
+
|
243
|
+
function apply_edit(
|
244
|
+
target: any,
|
245
|
+
path: (number | string)[],
|
246
|
+
action: string,
|
247
|
+
value: any
|
248
|
+
): any {
|
249
|
+
if (path.length === 0) {
|
250
|
+
if (action === "replace") {
|
251
|
+
return value;
|
252
|
+
} else if (action === "append") {
|
253
|
+
return target + value;
|
254
|
+
}
|
255
|
+
throw new Error(`Unsupported action: ${action}`);
|
256
|
+
}
|
257
|
+
|
258
|
+
let current = target;
|
259
|
+
for (let i = 0; i < path.length - 1; i++) {
|
260
|
+
current = current[path[i]];
|
261
|
+
}
|
262
|
+
|
263
|
+
const last_path = path[path.length - 1];
|
264
|
+
switch (action) {
|
265
|
+
case "replace":
|
266
|
+
current[last_path] = value;
|
267
|
+
break;
|
268
|
+
case "append":
|
269
|
+
current[last_path] += value;
|
270
|
+
break;
|
271
|
+
case "add":
|
272
|
+
if (Array.isArray(current)) {
|
273
|
+
current.splice(Number(last_path), 0, value);
|
274
|
+
} else {
|
275
|
+
current[last_path] = value;
|
276
|
+
}
|
277
|
+
break;
|
278
|
+
case "delete":
|
279
|
+
if (Array.isArray(current)) {
|
280
|
+
current.splice(Number(last_path), 1);
|
281
|
+
} else {
|
282
|
+
delete current[last_path];
|
283
|
+
}
|
284
|
+
break;
|
285
|
+
default:
|
286
|
+
throw new Error(`Unknown action: ${action}`);
|
287
|
+
}
|
288
|
+
return target;
|
289
|
+
}
|
290
|
+
|
291
|
+
export function apply_diff(
|
292
|
+
obj: any,
|
293
|
+
diff: [string, (number | string)[], any][]
|
294
|
+
): any {
|
295
|
+
diff.forEach(([action, path, value]) => {
|
296
|
+
obj = apply_edit(obj, path, action, value);
|
297
|
+
});
|
298
|
+
|
299
|
+
return obj;
|
300
|
+
}
|