Skip to content
Snippets Groups Projects

Issue #3478167: Add a global JSON decoder for both streaming and none streaming responses

Merged Issue #3478167: Add a global JSON decoder for both streaming and none streaming responses

Files

+ 41
0
<?php
    • This is a mock iterator file, since we use simple generators they are consumed on usage, so we need to "virtually" replay them by adding the text we picked out so far.

Please register or sign in to reply
namespace Drupal\ai\OperationType\Chat;
/**
* Assistant Replay Stream message iterator.
*/
class ReplayedChatMessageIterator extends StreamedChatMessageIterator {
/**
* The first message to append.
*/
private string $firstMessage;
/**
* {@inheritdoc}
*/
public function getIterator(): \Generator {
$i = 0;
foreach ($this->iterator->getIterator() as $data) {
$text = $i ? $data->getText() : $this->firstMessage . $data->getText();
$i++;
yield new StreamedChatMessage(
$data->getRole() ?? '',
$text ?? '',
$data->getMetadata() ?? []
);
}
}
/**
* Set the first message.
*
* @param string $message
* The message.
*/
public function setFirstMessage(string $message) {
$this->firstMessage = $message;
}
}
Loading