DEV Community

Cover image for Neuron AI: O Framework PHP de Inteligência Artificial 🐘
Raziel Rodrigues
Raziel Rodrigues

Posted on

Neuron AI: O Framework PHP de Inteligência Artificial 🐘

Neuron AI é um framework para lidar com IA usando PHP puro ou seus diversos frameworks como o Laravel ou Symfony. Neuron AI foi criado por Valerio Barbera https://www.linkedin.com/in/valeriobarbera/ da equipe do software inspector.dev, uma ferramenta de observabilidade PHP. Com este framework é possível trabalhar com AI de uma maneira muito flexível e prática usando PHP. Neste repositório, estou abordando os aspectos mais importantes do framework e do mundo da IA, onde é possível fazer tudo o que fazemos em outras linguagens de programação, como Node, Python ou Go, mas tudo usando o glorioso PHP em sua melhor forma.

Para isso, eu irei usar o PHP puro, pois assim acredito que conseguimos realizar os testes de forma mais simples e sem acoplamento de muitas coisas. Então será necessário que você tenha o PHP rodando na sua versão 8+ e o Composer para assim começarmos a trabalhar com o projeto. Outros requerimentos serão o Ollama para rodarmos o nosso LLM de forma local sem gastar dinheiro com serviços de nuvem (mas isso não te impede de usar uma outra API como o ChatGPT ou Claude).

Introdução

Cara, eu estou realmente muito empolgado escrevendo esse artigo porque eu sei como isso é importante para a comunidade do PHP. Sabendo que agora temos um framework que é tão flexível e desacoplado, eu consigo ver um futuro enorme para a nossa linguagem preferida e a forma como usamos ela para trabalhar com AI. É importante ressaltar que o PHP já possui alguns frameworks para trabalhar com AI como: LLPhant, PHP-ML, TensorFlow PHP e Rubix ML.

Mas eu realmente acho que o Neuron AI, dentro do que eu vi dos outros frameworks, sai na frente em questão de flexibilidade e pouca dependência. Portanto, é um novo projeto open source e eu convido vocês a irem ao GitHub dessa maravilha e já deixar uma estrela ou mesmo ajudar a contribuir. O que mais me faz acreditar nesse projeto é que foi algo criado por pessoas que já têm um histórico sólido e profissional com PHP e na comunidade open source. Segue o link do repositório Neuron AI: https://github.com/inspector-apm/neuron-ai

Então aqui nesse artigo eu vou criar com vocês uma mini aplicação de AI que vai contar piadas e vai retornar também o tipo da piada. Massa demais, né?

Posteriormente, irei escrever mais artigos explicando como funcionam os Agentes MCP, RAG, Vector Store, Chat e muito mais! Será um conteúdo denso, então eu pretendo escrever uma série de artigos sobre o tema.

Sem mais delongas, vamos começar a parte DIVERTIDA!

Sumário

  • Conceitos chave e instalação dos pacotes
  • Agentes de AI com PHP
  • Ferramentas e chamadas de funções
  • Saída de dados estruturadas

Conceitos chave e instalação

Basicamente, o Neuron AI funciona com Agentes. Essa é uma das classes principais que utilizamos para criar um agente de inteligência artificial. Então, após criar a sua classe e implementar o seu agente, é possível configurar ele e dar a ele uma "personalidade" e "funções", assim como damos um contexto quando criamos uma janela no ChatGPT. Mas, nesse caso, é você que define e deixa isso chumbado no código, abrindo a possibilidade de podermos criar diversos agentes para regras de negócio específicas.

Nesse caso, será necessário ter o Ollama rodando no seu computador. Para isso, eu te convido a ler esse primeiro artigo de minha autoria. Nesse artigo, eu ensino como instalar e usar o Ollama, que é praticamente o mesmo processo para usarmos com o NeuronAI:

Tutorial | Usando Deepseek no Visual Studio Code de graça 💸

https://dev.to/razielrodrigues/usando-deepseek-no-visual-studio-code-de-graca-2764

Após ter o Ollama instalado, será necessário rodar esse comando:

composer require inspector-apm/neuron-ai

Agente de AI

Vamos criar um agente de AI que vai ajudar a gente a fazer umas piadas, sabe? No estilo tiosão de churrasco. Crie agora um arquivo chamado AgenteComediante.php dentro de uma pasta src e copie e cole o seguinte código:

<?php

namespace src;

require_once __DIR__ . '/../vendor/autoload.php';

use NeuronAI\Agent;
use NeuronAI\SystemPrompt;
use NeuronAI\Providers\Ollama\Ollama;
use NeuronAI\Chat\Messages\UserMessage;
use NeuronAI\Providers\AIProviderInterface;

class AgenteComediante extends Agent
{
    public function provider(): AIProviderInterface
    {
        return new Ollama(
            url: 'http://localhost:11434/api/',
            model: 'qwen3:1.7b', # adicione aqui o modelo que baixou
        );
    }

    public function instructions(): string
    {
        return new SystemPrompt(
            background: [
                'Você deve agir como um comediante Brasileiro',
            ],
            steps: [
                'Você usa a linguagem Português Brasileiro',
            ],
            output: [
                'A sua piada tem um texto bem divertido para dar contexto'
            ]
        );
    }
}

$response = AgenteComediante::make()->chat(
    new UserMessage("Olá, me conte uma piada!")
);

var_dump($response->getContent());
Enter fullscreen mode Exit fullscreen mode

Ferramentas ou chamada de funções

Após rodar o código, será possível ver o seu agente de AI agindo como um tiosão e fazendo uma piada que pode ser boa ou ruim hahaha. Isso vai depender de muitas coisas, mas principalmente do tanto de parâmetro que a sua AI tem. Caso ela tenha mais parâmetros, é possível que a piada saia mais engraçada.

Mas para resolver essa limitação, o Neuron Framework conta com uma feature muito boa que são as chamadas "Tools" ou também "Function Call". Isso é basicamente uma forma de pegar dados de outro lugar ou respostas e adicionar à sua AI, dando assim a ela mais "poderes" e possibilitando uma resposta mais inteligente e com um contexto maior. Então vamos adicionar um novo método na nossa classe. Copie e cole essas linhas de código:

protected function tools(): array
{
    return [
        Tool::make(
            'pegar_piadas',
            'Recuperar as piadas',
        )->setCallable(
            new BuscarPiada()
        )
    ];
}
Enter fullscreen mode Exit fullscreen mode

E adicione isso no steps para garantir que vai usar a tool:

steps: [
    'Você usa a ferramenta disponível',
    'Você usa a linguagem Português Brasileiro'
],
Enter fullscreen mode Exit fullscreen mode

Crie um novo arquivo chamado BuscarPiada.php, copie e cole, e não se esqueça de importar a nova classe dentro do agente:

<?php

namespace src;

use GuzzleHttp\Client;

require_once __DIR__ . '/../vendor/autoload.php';

class BuscarPiada
{
    protected Client $client;

    public function __construct()
    {
        $this->client = new Client([
            'base_uri' => 'https://official-joke-api.appspot.com',
            'headers' => [
                'accept' => 'application/json',
            ]
        ]);
    }

    public function __invoke()
    {
        $resposta = $this->client->get('/random_joke');

        if ($resposta->getStatusCode() !== 200) {
            return 'Error :(';
        }

        $resposta = json_decode($resposta->getBody()->getContents(), true);

        $piada = '';
        $piada .= 'tipo: ' . $resposta['type'] . PHP_EOL;
        $piada .= 'setup: ' . $resposta['setup'] . PHP_EOL;
        $piada .= 'punchline:' . $resposta['punchline'] . PHP_EOL;

        return $piada;
    }
}
Enter fullscreen mode Exit fullscreen mode

Respostas estruturadas

Após adicionar as tools, é possível ver que realmente o nosso código já retorna algo bem interessante, pois pega o que vem da API em inglês, traduz para português e depois gera a nossa piada. Mas ainda podemos reparar que as respostas não têm padrão, gerando assim uma string muito confusa e sem sentido. Além disso, a gente ainda fica vendo os pensamentos da AI e isso não é nada user-friendly. Para resolver isso, o Neuron tem um conceito chamado resposta estruturada, que são schemas e são mapeados via classe. Então vamos implementar isso e deixar a resposta formatada e sempre legível.

Crie um arquivo chamado Piada.php e copie e cole. Não se esqueça de importar a classe dentro do agente:

<?php

namespace src;

use NeuronAI\StructuredOutput\SchemaProperty;

require_once __DIR__ . '/../vendor/autoload.php';

class Piada
{
    #[SchemaProperty(description: 'Contexto da piada', required: true)]
    public string $tipo;

    #[SchemaProperty(description: 'Questionamento da piada', required: true)]
    public string $setup;

    #[SchemaProperty(description: 'Porque de ser engraçado', required: true)]
    public string $punchline;
}
Enter fullscreen mode Exit fullscreen mode

Adicione este método dentro do agente:

protected function getOutputClass() : string
{
    return Piada::class;
}
Enter fullscreen mode Exit fullscreen mode

E altere a resposta para:

$piada = AgenteComediante::make()->structured(
    new UserMessage("Olá, me conte uma piada!")
);

echo 'Aqui está a sua Piada :D' . PHP_EOL;
echo 'Tipo: ' . $piada->tipo . PHP_EOL;
echo 'Introdução: ' . $piada->setup . PHP_EOL;
echo 'Punchline: ' . $piada->punchline . PHP_EOL;
Enter fullscreen mode Exit fullscreen mode

Conclusão

Esse é um exemplo do que pode ser feito com a AI. Nos próximos artigos vamos explorar o RAG, MCP Server e, para fechar com chave de ouro, Chat e Embeddings. Com o Neuron AI vai ser possível criarmos aplicações totalmente funcionais com AI, e tudo isso usando PHP, seja com frameworks ou de forma pura. Fique ligado para os próximos artigos onde vamos nos aprofundar mais e mais e vamos criar uma AI cada vez mais funcional e com diversas funcionalidades incríveis.

Aqui está o código do projeto e outros códigos que fiz sobre AI:

https://github.com/RazielRodrigues/ai-projects

Referência

[https://docs.neuron-ai.dev/]

Top comments (0)