Skip to content

Commit 1415512

Browse files
committed
Add metadata propagation from source streams
1 parent 462ce8b commit 1415512

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

src/ai-bundle/src/Profiler/TraceablePlatform.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ public function invoke(string $model, array|string|object $input, array $options
5656
}
5757

5858
if ($options['stream'] ?? false) {
59-
$originalStream = $deferredResult->asStream();
60-
$deferredResult = new DeferredResult(new PlainConverter($this->createTraceableStreamResult($originalStream)), $deferredResult->getRawResult(), $options);
59+
$deferredResult = new DeferredResult(new PlainConverter($this->createTraceableStreamResult($deferredResult)), $deferredResult->getRawResult(), $options);
6160
}
6261

6362
$this->calls[] = [
@@ -75,16 +74,20 @@ public function getModelCatalog(): ModelCatalogInterface
7574
return $this->platform->getModelCatalog();
7675
}
7776

78-
private function createTraceableStreamResult(\Generator $originalStream): StreamResult
77+
private function createTraceableStreamResult(DeferredResult $sourceResult): StreamResult
7978
{
80-
return $result = new StreamResult((function () use (&$result, $originalStream) {
79+
return $result = new StreamResult((function () use (&$result, $sourceResult) {
8180
$this->resultCache[$result] = '';
82-
foreach ($originalStream as $chunk) {
81+
foreach ($sourceResult->asStream() as $chunk) {
8382
yield $chunk;
8483
if (\is_string($chunk)) {
8584
$this->resultCache[$result] .= $chunk;
8685
}
8786
}
87+
88+
foreach ($sourceResult->getResult()->getMetadata() as $key => $value) {
89+
$result->getMetadata()->add($key, $value);
90+
}
8891
})());
8992
}
9093
}

src/platform/src/Result/DeferredResult.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,13 @@ public function asVectors(): array
119119
*/
120120
public function asStream(): \Generator
121121
{
122-
yield from $this->as(StreamResult::class)->getContent();
122+
$streamResult = $this->as(StreamResult::class);
123+
124+
yield from $streamResult->getContent();
125+
126+
foreach ($streamResult->getMetadata() as $key => $value) {
127+
$this->getResult()->getMetadata()->add($key, $value);
128+
}
123129
}
124130

125131
/**

0 commit comments

Comments
 (0)