Skip to content

Commit c486b5b

Browse files
committed
Merge prism-php#949 — feat(zai): add streaming support
2 parents 7364ddf + adfef17 commit c486b5b

12 files changed

Lines changed: 1164 additions & 0 deletions

src/Providers/Z/Handlers/Stream.php

Lines changed: 417 additions & 0 deletions
Large diffs are not rendered by default.

src/Providers/Z/Z.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,14 @@
44

55
namespace Prism\Prism\Providers\Z;
66

7+
use Generator;
8+
use Illuminate\Http\Client\ConnectionException;
79
use Illuminate\Http\Client\PendingRequest;
810
use Prism\Prism\Concerns\InitializesClient;
911
use Prism\Prism\Exceptions\PrismException;
12+
use Prism\Prism\Exceptions\PrismStreamDecodeException;
1013
use Prism\Prism\Providers\Provider;
14+
use Prism\Prism\Providers\Z\Handlers\Stream;
1115
use Prism\Prism\Structured\Request as StructuredRequest;
1216
use Prism\Prism\Structured\Response as StructuredResponse;
1317
use Prism\Prism\Text\Request as TextRequest;
@@ -45,6 +49,21 @@ public function structured(StructuredRequest $request): StructuredResponse
4549
return $handler->handle($request);
4650
}
4751

52+
/**
53+
* @throws PrismStreamDecodeException
54+
* @throws PrismException
55+
* @throws ConnectionException
56+
*/
57+
public function stream(TextRequest $request): Generator
58+
{
59+
$handler = new Stream($this->client(
60+
$request->clientOptions(),
61+
$request->clientRetry()
62+
));
63+
64+
return $handler->handle($request);
65+
}
66+
4867
/**
4968
* @param array<string, mixed> $options
5069
* @param array<mixed> $retry
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}
2+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":"I"}}]}
3+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":"'m"}}]}
4+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" a"}}]}
5+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" Z"}}]}
6+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" AI"}}]}
7+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" assistant"}}]}
8+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" created"}}]}
9+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" by"}}]}
10+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" Z"}}]}
11+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":"."}}]}
12+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" My"}}]}
13+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" goal"}}]}
14+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" is"}}]}
15+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" to"}}]}
16+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" provide"}}]}
17+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" helpful"}}]}
18+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":","}}]}
19+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" accurate"}}]}
20+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":","}}]}
21+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" and"}}]}
22+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" engaging"}}]}
23+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" answers"}}]}
24+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" to"}}]}
25+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" your"}}]}
26+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" questions"}}]}
27+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":"."}}]}
28+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" How"}}]}
29+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" can"}}]}
30+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" I"}}]}
31+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" help"}}]}
32+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" you"}}]}
33+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" today"}}]}
34+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":"?"}}]}
35+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"finish_reason":"stop"}],"usage":{"prompt_tokens":7,"completion_tokens":163,"total_tokens":170}}
36+
data: [DONE]
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}
2+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":"This"}}]}
3+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" is"}}]}
4+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" a"}}]}
5+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" truncated"}}]}
6+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" response"}}]}
7+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" due"}}]}
8+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" to"}}]}
9+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" max"}}]}
10+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" tokens"}}]}
11+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" limit"}}]}
12+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":"."}}]}
13+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"finish_reason":"length"}],"usage":{"prompt_tokens":50,"completion_tokens":10,"total_tokens":60}}
14+
data: [DONE]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}
2+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":"I"}}]}
3+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":"'m"}}]}
4+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" here"}}]}
5+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" to"}}]}
6+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" help"}}]}
7+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" you"}}]}
8+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" with"}}]}
9+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" your"}}]}
10+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":" request"}}]}
11+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"delta":{"content":"!"}}]}
12+
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1752805596,"model":"glm-5","choices":[{"index":0,"finish_reason":"stop"}],"usage":{"prompt_tokens":29,"completion_tokens":10,"total_tokens":39,"prompt_tokens_details":{"cached_tokens":27}}}
13+
data: [DONE]

0 commit comments

Comments
 (0)