Skip to content

Commit bdaed00

Browse files
committed
zai transcription provider
1 parent a28a45c commit bdaed00

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

src/Providers/ZAI/Audio/ZAITranscription.php

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
use NeuronAI\Chat\Messages\AssistantMessage;
1010
use NeuronAI\Chat\Messages\ContentBlocks\AudioContent;
1111
use NeuronAI\Chat\Messages\Message;
12-
use NeuronAI\Chat\Messages\Stream\Chunks\AudioChunk;
12+
use NeuronAI\Chat\Messages\Stream\Chunks\TextChunk;
13+
use NeuronAI\Chat\Messages\Usage;
1314
use NeuronAI\Exceptions\HttpException;
1415
use NeuronAI\Exceptions\ProviderException;
1516
use NeuronAI\HttpClient\GuzzleHttpClient;
@@ -24,7 +25,6 @@
2425

2526
use function end;
2627
use function fopen;
27-
use function json_encode;
2828

2929
class ZAITranscription implements AIProviderInterface
3030
{
@@ -85,7 +85,14 @@ public function chat(Message ...$messages): Message
8585
)
8686
)->json();
8787

88-
return new AssistantMessage($response['text']);
88+
$message = new AssistantMessage($response['text']);
89+
$message->setUsage(
90+
new Usage(
91+
$response['usage']['prompt_tokens'] ?? 0,
92+
$response['usage']['completion_tokens'] ?? 0
93+
)
94+
);
95+
return $message;
8996
}
9097

9198
/**
@@ -114,21 +121,29 @@ public function stream(Message ...$messages): Generator
114121
)
115122
);
116123

124+
$content = '';
117125
$msgId = UniqueIdGenerator::generateId('msg_');
126+
$usage = new Usage(0, 0);
118127

119-
echo "\n";
120128
while (! $stream->eof()) {
121129
if (!$line = SSEParser::parseNextSSEEvent($stream)) {
122130
continue;
123131
}
124132

125-
yield new AudioChunk($msgId, '');
133+
if ($line['type'] === 'transcript.text.delta') {
134+
$content .= $line['delta'];
135+
yield new TextChunk($msgId, $line['delta']);
136+
}
126137

127-
echo "\n".json_encode($line);
138+
if ($line['type'] === 'transcript.text.done') {
139+
$usage->inputTokens = $line['usage']['prompt_tokens'] ?? 0;
140+
$usage->outputTokens = $line['usage']['completion_tokens'] ?? 0;
141+
}
128142
}
129-
echo "\n\n";
130143

131-
return new AssistantMessage('');
144+
$message = new AssistantMessage($content);
145+
$message->setUsage($usage);
146+
return $message;
132147
}
133148

134149
protected function addFile(array &$body, AudioContent $audio): void

0 commit comments

Comments
 (0)