INDEX
Stream
VSlim\Stream 是安装了 vslim.so 之后可直接使用的扩展流式命名空间。
推荐这样理解:
VSlim\Stream\Response流式响应对象;和VSlim\Response并列VSlim\Stream\Factory更短的 text/sse/ollama 快捷入口VSlim\Stream\OllamaClientOllama 协议对接层VSlim\Stream\NdjsonDecoderNDJSON 解码VSlim\Stream\SseEncoderSSE 事件编码
最简单的 text stream
<?php
$app = new VSlim\App();
$app->get('/text', function () {
return VSlim\Stream\Factory::text((function (): iterable {
yield "hello\n";
yield "world\n";
})());
});
最简单的 SSE stream
<?php
$app = new VSlim\App();
$app->get('/events', function () {
return VSlim\Stream\Factory::sse((function (): iterable {
yield [
'event' => 'token',
'data' => '{"token":"hello"}',
];
yield [
'event' => 'done',
'data' => '{"done":true}',
];
})());
});
Ollama 快捷入口
<?php
$app->map(['GET', 'POST'], '/ollama/text', function (VSlim\Request $req) {
return VSlim\Stream\Factory::ollama_text($req);
});
$app->map(['GET', 'POST'], '/ollama/sse', function (VSlim\Request $req) {
return VSlim\Stream\Factory::ollama_sse($req);
});
默认读取这些环境变量:
OLLAMA_CHAT_URLOLLAMA_MODELOLLAMA_API_KEYOLLAMA_STREAM_FIXTURE
和 PHP package 的关系
如果安装了 vslim.so,优先使用:
VSlim\Stream\ResponseVSlim\Stream\FactoryVSlim\Stream\OllamaClientVSlim\Stream\NdjsonDecoderVSlim\Stream\SseEncoder
如果是不装扩展、只走 PHP package 的场景,再使用:
VPhp\VSlim\Stream\ResponseVPhp\VSlim\Stream\FactoryVPhp\VSlim\Stream\OllamaClientVPhp\VSlim\Stream\NdjsonDecoderVPhp\VSlim\Stream\SseEncoder
也就是说:
vslim/目录下的 demo、测试、文档,默认按扩展模式写vhttpd/php/package/目录下的类,才是纯 PHP package 模式