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:
// 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:
// 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:
$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:
// 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:
- O modelo gerará uma resposta ou chamará uma ferramenta
- Se uma ferramenta for chamada, ela será executada
- 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.