Skip to content

Commit 95113a2

Browse files
committed
bug #207 [Agent] Keep the rawResponse and metadata when parsing structured output (Renrhaf)
This PR was squashed before being merged into the main branch. Discussion ---------- [Agent] Keep the rawResponse and metadata when parsing structured output | Q | A | ------------- | --- | Bug fix? | yes | New feature? | no | Docs? | no | Issues | Fix #206 | License | MIT Keep the rawResponse and metadata when parsing structured output Commits ------- 1820a34 [Agent] Keep the rawResponse and metadata when parsing structured output
2 parents 7921e0e + 1820a34 commit 95113a2

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

src/agent/src/StructuredOutput/AgentProcessor.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,17 @@ public function processOutput(Output $output): void
9191
return;
9292
}
9393

94+
$originalResult = $output->result;
9495
$output->result = new ObjectResult(
9596
$this->serializer->deserialize($output->result->getContent(), $this->outputStructure, 'json')
9697
);
98+
99+
if ($originalResult->getMetadata()->count() > 0) {
100+
$output->result->getMetadata()->set($originalResult->getMetadata()->all());
101+
}
102+
103+
if (!empty($originalResult->getRawResult())) {
104+
$output->result->setRawResult($originalResult->getRawResult());
105+
}
97106
}
98107
}

src/agent/tests/StructuredOutput/AgentProcessorTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use Symfony\AI\Platform\Message\MessageBag;
2727
use Symfony\AI\Platform\Model;
2828
use Symfony\AI\Platform\Result\Choice;
29+
use Symfony\AI\Platform\Result\Metadata\Metadata;
2930
use Symfony\AI\Platform\Result\ObjectResult;
3031
use Symfony\AI\Platform\Result\TextResult;
3132
use Symfony\Component\Serializer\SerializerInterface;
@@ -98,6 +99,8 @@ public function processOutputWithResponseFormat(): void
9899

99100
$this->assertInstanceOf(ObjectResult::class, $output->result);
100101
$this->assertInstanceOf(SomeStructure::class, $output->result->getContent());
102+
$this->assertInstanceOf(Metadata::class, $output->result->getMetadata());
103+
$this->assertNull($output->result->getRawResult());
101104
$this->assertSame('data', $output->result->getContent()->some);
102105
}
103106

@@ -145,6 +148,8 @@ public function processOutputWithComplexResponseFormat(): void
145148

146149
$this->assertInstanceOf(ObjectResult::class, $output->result);
147150
$this->assertInstanceOf(MathReasoning::class, $structure = $output->result->getContent());
151+
$this->assertInstanceOf(Metadata::class, $output->result->getMetadata());
152+
$this->assertNull($output->result->getRawResult());
148153
$this->assertCount(5, $structure->steps);
149154
$this->assertInstanceOf(Step::class, $structure->steps[0]);
150155
$this->assertInstanceOf(Step::class, $structure->steps[1]);

0 commit comments

Comments
 (0)