Neuron Akış Adımı
Bu örnek net bir ayrım gösterir. Neuron aracı yanıtını parça parça akış olarak sunarken, Queuety her parçayı StreamingStep üzerinden kalıcı olarak kaydeder. Böylece iş akışı çalışan süreç çökmelerine veya yeniden denemelere rağmen devam ederken UI canlı bir taslak alabilir.
Bu kalıp ne zaman kullanışlıdır
Bir taslak veya yanıt canlı akışla sunulacak kadar uzunsa, çalışan süreç sonlanırsa kısmi çıktıyı kaybetmek istemiyorsanız ve akış tamamlandıktan sonra son yapının iş akışı durumuna eklenmesi gerekiyorsa bu kalıbı kullanın.
Neuron aracısı
namespace App\Neuron;
use NeuronAI\Agent\Agent;
use NeuronAI\Providers\AIProviderInterface;
use NeuronAI\Providers\OpenAI\Responses\OpenAIResponses;
use NeuronAI\SystemPrompt;
final class DraftMemoAgent extends Agent
{
protected function provider(): AIProviderInterface
{
return new OpenAIResponses(
key: $_ENV['OPENAI_API_KEY'],
model: $_ENV['OPENAI_MODEL'],
);
}
public function instructions(): string
{
return (string) new SystemPrompt(
background: [
'You write crisp internal strategy memos.',
'Prefer short sections and operationally useful language.',
],
);
}
}
Queuety akış adımı
namespace App\Workflow\Steps;
use App\Neuron\DraftMemoAgent;
use NeuronAI\Chat\Messages\UserMessage;
use Queuety\Contracts\StreamingStep;
use Queuety\Heartbeat;
final class StreamMemoDraftStep implements StreamingStep
{
public function stream(array $state, array $existing_chunks = []): \Generator
{
if (! empty($existing_chunks)) {
return;
}
$handler = (new DraftMemoAgent())->stream(
new UserMessage(sprintf(
"Write a strategy memo about %s for account %d.",
$state['topic'],
$state['account_id'],
))
);
foreach ($handler->events() as $i => $chunk) {
Heartbeat::beat(['chunks' => $i + 1]);
// This example assumes the agent has no tools attached, so
// Neuron will stream text/reasoning chunks only.
yield $chunk->content;
}
}
public function on_complete(array $chunks, array $state): array
{
return [
'draft_markdown' => implode('', $chunks),
];
}
public function config(): array
{
return [
'max_attempts' => 3,
];
}
}
İş akışında kullanımı
use Queuety\Queuety;
Queuety::workflow('memo_drafting')
->then(BuildDraftBriefStep::class)
->then(StreamMemoDraftStep::class)
->then(StoreMemoStep::class)
->dispatch([
'account_id' => 10,
'topic' => 'pricing changes for enterprise accounts',
]);
Tek başına Neuron akış bağdaştırıcıları yerine neden Queuety kullanmalı
Neuron akış bağdaştırıcıları ön yüz protokolleri ve aktarımları için kullanışlıdır. Queuety farklı bir özellik ekler: üretilen her parça kalıcı olarak kaydedilir, yeniden denemeler daha önce kaydedilmiş parçalarla devam edebilir, tamamlanan taslak iş akışı durumuna geri eklenir ve akış daha büyük bir orkestrasyonun kalıcı bir adımı hâline gelir.
Bu, akış yalnızca bir istek/yanıt UI öğesi değil, çok adımlı bir iş sürecinin parçası olduğunda bu kalıbı uygun kılar.
Bir uyarı
Neuron aracınız akış sırasında araçlar kullanıyorsa, akış hâlindeki parça türlerini açıkça işleyin. Neuron akış belgelerinin mevcut sürümü TextChunk, ReasoningChunk, ToolCallChunk ve ToolResultChunk öğelerini açıklar. Arka planda taslak hazırlama iş akışı için genellikle en basit yaklaşım, akış aracısının yalnızca metin üretmesini sağlamaktır.