Как мне отобразить все мысли во внешнем интерфейсе, используя SSE с Laravel и Vue.js?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как мне отобразить все мысли во внешнем интерфейсе, используя SSE с Laravel и Vue.js?

Сообщение Anonymous »

Я работаю над проектом, в котором пытаюсь реализовать сервер протокола контекста модели для моего LLM, который будет использовать так называемое серверное последовательное мышление. У меня есть область чата, где пользователь может ввести подсказку, и LLM, который я использую, будет использовать инструменты сервера для предоставления подробного ответа, однако мой интерфейс отображает только первую мысль, а затем завершает ее. Я добавил console.log() во внешний интерфейс и подтвердил, что получена только первая мысль.
Это мой внутренний код Laravel:

Код: Выделить всё

return response()->stream(function () use ($conversation) {
$stream = Prism::text()
->using(Provider::Anthropic, 'claude-3-7-sonnet-latest')
->withMessages($conversation)
->withTools([
...Relay::tools('sequential-thinking'),
])
->asStream();

foreach ($stream as $response) {
if($response->chunkType === ChunkType::ToolCall){
echo "event: toolcall\n";
echo "data: " . json_encode($response->toolCalls, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . "\n\n";
}
elseif($response->chunkType === ChunkType::ToolResult){
echo "event: toolresult\n";
echo "data: " . json_encode($response->toolResults, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . "\n\n";
}
elseif($response->chunkType === ChunkType::Text){
echo "data: " . str_replace("\n", "\\n", $response->text) . "\n\n";
}
ob_flush();
flush();
}

echo "data: complete\n\n";
ob_flush();
flush();
}, 200, [
'Content-Type' => 'text/event-stream',
'Cache-Control' => 'no-cache',
'Connection' => 'keep-alive',
'X-Accel-Buffering' => 'no',
]);

Это интерфейс, в котором я реализовал прослушиватель событий:

Код: Выделить всё

source.addEventListener('toolresult', (e)=>{
const toolResult = JSON.parse(e.data);
const [{args: {thought, thoughtNumber, totalThoughts}}] = toolResult;
console.log(`Thought: ${thought}\nThought Number: ${thoughtNumber}\nTotal Thoughts: ${totalThoughts}`);
prismText.value += thought;
console.log("Tool result: ",toolResult)
})
Вот как выглядит консоль браузера, когда я запрашиваю подсказку.
Я использую Prism Relay для добавления сервера MCP.
Как мне правильно отображать все мысли во внешнем интерфейсе?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... and-vue-js
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»