Skip to content

Ferramentas

O LabsLLM permite que os modelos chamem funções em seu código PHP, possibilitando integrações poderosas entre IA e a lógica de negócios da sua aplicação. Essas ferramentas podem realizar ações, recuperar dados ou interagir com outros sistemas.

Usando Ferramentas/Funções

Você pode definir ferramentas para o modelo usar de várias maneiras, desde funções simples sem parâmetros até funções complexas com vários tipos de parâmetros.

Função Simples Sem Parâmetros

A maneira mais simples de definir uma função é sem nenhum parâmetro:

php
// Definir uma função sem parâmetros
$dateFunction = FunctionHelper::create('getDate', 'Obter a data atual')
    ->callable(function() {
        return 'Hoje é ' . date('Y-m-d');
    });

// Executar com a ferramenta disponível
$execute = LabsLLM::text()
    ->addTool($dateFunction)
    ->withMaxSteps(1)
    ->using(new OpenAI('sua-chave-api', 'gpt-4o'))
    ->executePrompt('Qual é a data de hoje?');

$response = $execute->getResponseData();

echo "Resposta de texto: " . $response->response . PHP_EOL;

Função Com Parâmetros

Para casos de uso mais complexos, você pode definir funções com parâmetros:

php
// Definir uma função com parâmetros
$dateTimeFunction = FunctionHelper::create('getDateOrTime', 'Obter data ou hora do dia')
    ->withParameter([
        new StringParameter('type', 'O tipo de dado a obter')
    ], ['type']) // O segundo array define parâmetros obrigatórios
    ->callable(function($type) {
        if ($type === 'date') {
            return 'A data de hoje é ' . date('Y-m-d');
        } else if ($type === 'time') {
            return 'A hora atual é ' . date('H:i:s');
        }
        return 'Tipo inválido solicitado';
    });

// Executar com a ferramenta disponível
$execute = LabsLLM::text()
    ->addTool($dateTimeFunction)
    ->withMaxSteps(2)
    ->using(new OpenAI('sua-chave-api', 'gpt-4o'))
    ->executePrompt('Que horas são agora?');

$response = $execute->getResponseData();

// Acessar os dados completos da resposta
echo "Resposta de texto: " . $response->response . PHP_EOL;
echo "Ferramentas chamadas: " . count($response->called_tools) . PHP_EOL;

// Você pode inspecionar quais ferramentas foram chamadas e suas respostas
foreach ($response->called_tools as $tool) {
    echo "Chamada: " . $tool['name'] . " com argumento tipo: " . $tool['arguments']['type'] . PHP_EOL;
    echo "Resposta da ferramenta: " . $tool['response']['response'] . PHP_EOL;
}

Examinando a Execução de Ferramentas

Quando uma ferramenta é chamada, você pode acessar informações sobre a chamada e seus resultados através do objeto de resposta:

php
$response = $execute->getResponseData();

// Verificar se alguma ferramenta foi chamada
if (!empty($response->called_tools)) {
    foreach ($response->called_tools as $tool) {
        echo "Nome da Ferramenta: " . $tool['name'] . PHP_EOL;
        echo "Argumentos: " . json_encode($tool['arguments']) . PHP_EOL;
        echo "Resposta: " . $tool['response']['response'] . PHP_EOL;
    }
}

Entendendo maxSteps

O parâmetro maxSteps controla quantas interações de ida e volta podem ocorrer com as ferramentas:

php
// Permitir até 3 chamadas de ferramentas em sequência
$execute = LabsLLM::text()
    ->addTool($myFunction)
    ->withMaxSteps(3)
    ->using(new OpenAI('sua-chave-api', 'gpt-4o'))
    ->executePrompt('Execute a tarefa.');

Por padrão, maxSteps é definido como 1, o que significa:

  1. O modelo gerará uma resposta ou chamará uma ferramenta
  2. Se uma ferramenta for chamada, ela será executada
  3. A execução para após a ferramenta responder

Quando maxSteps é definido como 1 (padrão):

  • Se o modelo chamar uma ferramenta, $response->response estará vazio
  • $response->called_tools conterá a ferramenta que foi executada e sua resposta
  • A resposta da ferramenta não será enviada de volta ao modelo

Quando maxSteps é maior que 1:

  • Depois que uma ferramenta é executada, seu resultado é enviado de volta ao modelo
  • O modelo pode então gerar uma resposta de texto baseada no resultado da ferramenta
  • Ou pode chamar outra ferramenta (chamadas de ferramentas encadeadas)
  • Isso continua até que maxSteps seja atingido ou o modelo forneça uma resposta de texto

Para mais informações sobre como criar ferramentas com parâmetros, consulte as seções FunctionHelper e Parâmetros.

Lançado sob a Licença MIT.