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

inspector-apm/neuron-ai

Neuron is a PHP framework for building agentic AI apps: define and orchestrate AI agents, connect to LLM providers, load data, use tools, coordinate multiple agents, and monitor/debug runs. Works with Laravel or Symfony and supports end-to-end agent workflows.

View on GitHub
Deep Wiki
Context7
3.16.1
  • Fix workflow DatabasePersistence to work with Postgre and SQLite
  • Add --autoload-file option to neuron cli - PR #632 by @bytestream
  • Allow JSON-safe metadata types in RAG Document - PR #631 by @bytestream
3.16.0

Parallel Evaluations

This release ships the support or running your evaluations suite in parallel.

vendor/bin/neuron evaluations --concurrency=3 --path=evaluators

You only have to take care o how many concurrent connections your providers allows you to run.

3.15.30

Code fixes and performance improvements by @Denitz

  • #617
  • #618
  • #619
  • #620
  • #621
  • #623
  • #624
  • #625
  • #626
  • #627
3.15.29

Fix OpenAI providers on structured output strict mode

3.15.28

Fix rerankers to get a string query.

3.15.27

New AnthropicVertex provider

The new AnthropicVertex provider allows you to interact with Anthropic models on Google Vertex model garden.

Inspired by @specialtactics in discussion #569

class MyAgent extends Agent
{
    protected function provider(): AIProviderInterface
    {
        return new AnthropicVertex(
            pathJsonCredentials: 'GOOGLE_FILE_CREDENTIALS_PATH',
            location: 'GOOGLE_LOCATION',
            projectId: 'GOOGLE_PROJECT_ID',
            model: 'ANTHROPIC_MODEL',
            parameters: [], // Add custom params (temperature, logprobs, etc)
        );
    }
}

Documentation

3.15.26

Fix support for AG-UI protocol in AGUiAdapter - PR #607 by @lussoluca

3.15.24

Supporting topN argument in ToolSearchMiddleware.

3.15.23
  • Fix AWS Bedrock streaming - PR #601 by @campbellking
  • Fix Anthropic stream without system prompt - PR #602 by @campbellking
  • Fix OpenAIResponses to merge raw tool parameters - PR #603 by @AhVSag
  • Add custom filtering options for Qdrant and Meilisearch vector stores - PR #604 by @bytestream
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...']
        ]);
    }
}
3.2.11

Fix toolkit guidelines in instructions - PR #521 by @tryvin

3.2.10

Fix message mapper for single block - PR #518 by @qwertyquest

2.14.1

Fix OpenAI tool call message map

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.
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor
spatie/laravel-javascript-views