-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchat-stream.php
More file actions
44 lines (36 loc) · 1.28 KB
/
chat-stream.php
File metadata and controls
44 lines (36 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
declare(strict_types=1);
/*
* This file is part of the Modelflow AI package.
*
* (c) Johannes Wachter <johannes@sulu.io>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App;
use ModelflowAi\Chat\AIChatRequestHandlerInterface;
use ModelflowAi\Chat\Request\Message\AIChatMessage;
use ModelflowAi\Chat\Request\Message\AIChatMessageRoleEnum;
use ModelflowAi\Chat\Response\AIChatResponseStream;
use ModelflowAi\DecisionTree\Criteria\CapabilityCriteria;
use ModelflowAi\PromptTemplate\ChatPromptTemplate;
/** @var AIChatRequestHandlerInterface $handler */
$handler = require_once __DIR__ . '/bootstrap.php';
/** @var AIChatResponseStream $response */
$response = $handler->createRequest(
...ChatPromptTemplate::create(
new AIChatMessage(AIChatMessageRoleEnum::SYSTEM, 'You are an {feeling} bot'),
new AIChatMessage(AIChatMessageRoleEnum::USER, 'Hello {where}!'),
)->format(['where' => 'world', 'feeling' => 'angry']),
)
->addCriteria(CapabilityCriteria::BASIC)
->streamed()
->build()
->execute();
foreach ($response->getMessageStream() as $index => $message) {
if (0 === $index) {
echo $message->role->value . ': ';
}
echo $message->content;
}