|
18 | 18 | use Symfony\AI\Fixtures\Tool\ToolNoParams;
|
19 | 19 | use Symfony\AI\Fixtures\Tool\ToolRequiredParams;
|
20 | 20 | use Symfony\AI\Platform\Bridge\OpenAi\Gpt;
|
| 21 | +use Symfony\AI\Platform\Message\Content\File; |
21 | 22 | use Symfony\AI\Platform\Message\Message;
|
22 | 23 | use Symfony\AI\Platform\Message\MessageBag;
|
23 | 24 | use Symfony\AI\Platform\Message\SystemMessage;
|
@@ -221,6 +222,49 @@ public function testWithMissingTranslator()
|
221 | 222 | );
|
222 | 223 | }
|
223 | 224 |
|
| 225 | + public function testProcessInputWithFile() |
| 226 | + { |
| 227 | + $tempFile = tempnam(sys_get_temp_dir(), 'prompt_'); |
| 228 | + file_put_contents($tempFile, 'This is a system prompt from a file'); |
| 229 | + |
| 230 | + try { |
| 231 | + $file = File::fromFile($tempFile); |
| 232 | + $processor = new SystemPromptInputProcessor($file); |
| 233 | + |
| 234 | + $input = new Input(new Gpt('gpt-4o'), new MessageBag(Message::ofUser('This is a user message'))); |
| 235 | + $processor->processInput($input); |
| 236 | + |
| 237 | + $messages = $input->messages->getMessages(); |
| 238 | + $this->assertCount(2, $messages); |
| 239 | + $this->assertInstanceOf(SystemMessage::class, $messages[0]); |
| 240 | + $this->assertInstanceOf(UserMessage::class, $messages[1]); |
| 241 | + $this->assertSame('This is a system prompt from a file', $messages[0]->content); |
| 242 | + } finally { |
| 243 | + unlink($tempFile); |
| 244 | + } |
| 245 | + } |
| 246 | + |
| 247 | + public function testProcessInputWithMultilineFile() |
| 248 | + { |
| 249 | + $tempFile = tempnam(sys_get_temp_dir(), 'prompt_'); |
| 250 | + file_put_contents($tempFile, "Line 1\nLine 2\nLine 3"); |
| 251 | + |
| 252 | + try { |
| 253 | + $file = File::fromFile($tempFile); |
| 254 | + $processor = new SystemPromptInputProcessor($file); |
| 255 | + |
| 256 | + $input = new Input(new Gpt('gpt-4o'), new MessageBag(Message::ofUser('This is a user message'))); |
| 257 | + $processor->processInput($input); |
| 258 | + |
| 259 | + $messages = $input->messages->getMessages(); |
| 260 | + $this->assertCount(2, $messages); |
| 261 | + $this->assertInstanceOf(SystemMessage::class, $messages[0]); |
| 262 | + $this->assertSame("Line 1\nLine 2\nLine 3", $messages[0]->content); |
| 263 | + } finally { |
| 264 | + unlink($tempFile); |
| 265 | + } |
| 266 | + } |
| 267 | + |
224 | 268 | private function getTranslator(): TranslatorInterface
|
225 | 269 | {
|
226 | 270 | return new class implements TranslatorInterface {
|
|
0 commit comments