Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Neuron Ai Laravel Package

neuron-core/neuron-ai

Neuron is a PHP framework for building agentic apps: create and orchestrate AI agents, integrate LLM providers, load data, run multi-agent workflows, and monitor/debug behavior. Works well with Laravel and Symfony.

View on GitHub
Deep Wiki
Context7
3.15.22

Support OpenAILikeEmbeddings custom http client - PR #599 by @pcastellazzi

3.15.21

Support Gemini citations when streaming

3.15.20

Support mistral image content block for base64 format - Fix #596

3.15.19

Introducing the Regex validation rule for structured output:

namespace App\Neuron\Output;

use NeuronAI\StructuredOutput\Validation\Rules\Regex;

class Coupon
{
    #[Regex('/^[A-Z]{2}\d{4}$/')]
    public string $code;
}

Check it out in the documentation: https://docs.neuron-ai.dev/agent/structured-output#regex

3.15.18

improve doc-block in agent class

3.15.17
  • Ensure ToolResultMessage uses indexed tools array - PR #594 by @Tinywan
3.15.16

Make Gemini baseUri customizable

3.15.15

Make zai url customizable - PR #589 by @rafaelchavesfreitas

3.15.14

Deprecate the InspectorObserver, use the new observer from the Inspector PHP package - Inspector/Neuron/InspectorObserver

https://docs.inspector.dev/guides/neuron-ai

3.15.13

Fix MeilisearchVectorStore - PR #590 by @bytestream

3.15.12

Fix AGUIAdapter event format

3.15.11

Collect Cached Input Tokens, Reasoning Tokens across providers - PR #572 by @mattmilesi

3.15.10
  • Support nullable for Enum validation rule in structured output - PR #587 by @bytestream
3.15.9
  • Fix Gemini structured output collision with DTO properties named "$type" - by @ilvalerione
3.15.8
  • Fix AzureOpenAI usl format
3.15.7
  • Fix typo in README - by @meichuanyi
  • Extend NeuronException in HttpException - by @bytestream
  • Set response in HttpException when available - by @bytestream
  • Restore original parameters in AI Providers after structured output - by @ilvalerione
3.15.6
  • Make the LogObserver easy to extends - PR #582 by @bytestream
  • Docker configuration for local development and test
3.15.5

Fix Qdrant async ops

3.15.4

Improve streaming performance for Guzzle and Amp stream adapters

3.15.3

Improve streaming performance for Guzzle and Amp stream adapters

3.15.2

Improve streaming performance

3.15.1

Fix tracking request ID on MCP tool call

3.15.0

HttpClient & MCP Transport - Security & Performance Fixes

Security

  • Fixed: Null pointer dereference in HttpException::networkError()
  • Fixed: SSRF via MCP server endpoint redirect in SseHttpTransport
  • Fixed: CRLF header injection in SseHttpTransport::buildHeaderString()
  • Fixed: Unvalidated URIs in HttpRequest

Performance

  • Fixed: Guzzle Client recreated on every request
  • Fixed: Amp HTTP Client rebuilt on every request
  • Optimized: Byte-by-byte readLine() in stream adapters

Reliability

  • Fixed: Unbounded SSE buffer in SseHttpTransport
  • Fixed: Missing timeouts in AmpHttpClient multipart path
  • Removed: Dead catch block in AmpStream::readLine()
3.14.6

Optimize and secure RAG components (Vector similarity, text splitters)

3.14.5
  • Improve MCP components lifecycle - PR #575 by @tw2066
  • restrict to read permission on github actions
3.14.4

Fix tool array in ToolCallMessage

2.14.3
3.4.13

More efficient tool search with fuzzy and tokenized keywords

3.4.12

Tool search inject system prompt to ensure the agent behave as expected

3.4.11

Introducing Tool Search

By default every time the provider is invoked all tools are loaded and transmitted to the backend LLM. Complex production agents connected to email, calendar, drive, CRM, and and multiple MCP servers can easily reach hundreds of tools, each carrying its name, description, parameter schema, and usage hints.

This release introduces the global middleware ToolSearchMiddleware that you can attach to your agent:

class MyAgent extends Agennt
{
    ...
    
    /**
     * Define the global middleware.
     */
    protected function globalMiddleware(): array
    {
        return [
            new ToolSearchMiddleware([
                MyCustomTool::make(),
                ...CalculatorToolkit::make()->tools()
                ...MCPConnector::make([...])->tools()
            ]),
        ];
    }
    
    /**
     * Provide core tools to the agent.
     */
    protected function tools(): array
    {
        return [
            // A list of core tools that the model always has available
            TavilySearchTool::make(...),
        ];
    }
}

Here is the full documentation: https://docs.neuron-ai.dev/agent/middleware#tool-search

2.14.2
  • Fix OpenSearch vector store
  • Add gemoni models that support structured output with tool calls - PR #576 by @tecbay
3.4.9

Added new Gemini models with support for structured output with tools

3.4.8

support reasoning content in Deepseek and Alibaba providers - PR #573 - by @tw2066

3.4.7

fix Gemini function call with custom tools - PR #574 by @marceloandrader

3.4.6

Custom Tool Call Tracking for Max Runs - PR #566 by @tryvin

class MyCustomTool extends Tool implements HasRunKey
{
    ...

    public function getRunKey(): string
    {
        return $this->name . ':' . json_encode($this->inputs);
    }
}
3.4.3

Add Alibaba dash scope model platform provider - PR #560 by @tw2066

3.4.2

Improve the Workflow Executor design

3.4.1
3.4.0

Introducing Parallel Branches

This release introduce the ability of the workflow component to run parallel branches: https://docs.neuron-ai.dev/workflow/loops-and-branches#parallel-branches

When you want to call the execution of multiple branches in parallel, you need to return the special event ParallelEvent from your node.

use NeuronAI\Workflow\Events\ParallelEvent;

class DocumentProcessing extends Node
{
    public function __invoke(StartEvent $event, WorkflowState $state): ParallelEvent
    {
        // Node logic here...
	
        // Finally return a ParallelEvent
        return new ParallelEvent([
            'text' => new TextProcessEvent(),
            'image' => new ImageProcessEvent(),
        ]);
    }
}
3.3.14

Several improvements and fixes to the AWS Bedrock provider - PR #562 by @vitaliiivanovspryker

3.3.13

Make Http clients implementations ready for extension - Fix #557 #558

3.3.12
  • Fix Typesense vector store - #552
  • Fix OpenAI Responses message mapper - Fix #556 merging PR #559 by @iztok
3.3.11

Fix Tavily search tool - PR #561 by @AlexTr

3.3.10

Fix #554

3.3.9

Fix tool content deserialization in chat history - Fix #550 Add options argument to GuzzleHttpClient - Fix #551

3.3.8

Improve components serialization to better support workflow interruption - PR #543 by @tryvin

3.3.7

Merged:

3.3.6

Fix #544 - get schema in SQL Tools

3.3.5
  • Support Anthropic image as a file ID
  • Fix Ollama usage reporting when streaming
3.3.4

Fix Mistral token usage reporting

3.3.3

fix eloquent chat history

3.3.2
  • New Cohere embeddings provider
  • Support OpenSearch 3.6.0 or higher
3.3.1
  • Fix error handler in case MissingCallbackParameter
  • Improve chat history trim for better performance
3.3.0

Chat History improvements

In the process of fixing a bug ( #523 ) we worked on a more efficient algorithm to manage the cut of the message history if it goes out of the context window. The intent was to minimize the context loss when cutting.

The context window cut must be considered the last resort to prevent fatal errors with provider APIs. Before reaching the limit of the context window you should use summarization to compact the context into a single message as a new starting point.

In order to handle all edge cases, the internal trimmer can identify a cutting point slightly less aggressive than the initially identified. To make sure the agent conversation stays in the limit, you should configure the context window limit in the agent chat history with a margin of 5%-10% from the actual limit of the underlying model.

If your model works with a 200K context window, you should instantiate your chat history with 190K for example.

Evaluation improvements

We introduced a couple of built-in rules for Ai as a judge assertions:

https://docs.neuron-ai.dev/agent/evaluation#ai-as-a-judge

3.2.13

Evaluation score tracking

3.2.12

Support Anthropic prompt cache

PR #482 by @hudhaifas

class MyAgent extends Agent
{
    protected function provider(): AIProviderInterface
    {
        return new Anthropic(
            key: 'ANTHROPIC_KEY',
            model: 'ANTHROPIC_MODEL'
        )->systemPromptBlocks([
            ['type' => 'text', 'text' => 'Static instructions...', 'cache_control' => ['type' => 'ephemeral']],
            ['type' => 'text', 'text' => 'Dynamic context...']
        ]);
    }
}
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
bugban/symfony
beyonder-capi/workflow-extensions-bundle
beyonder-capi/job-queue-bundle
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin