Saída Estruturada
O LabsLLM permite definir esquemas de saída estruturados para seus prompts, garantindo que a resposta do modelo siga um formato específico.
Definindo Esquema de Saída
Você pode definir um esquema de saída usando os mesmos tipos de parâmetros usados para definições de funções:
php
use LabsLLM\Parameters\ObjectParameter;
use LabsLLM\Parameters\StringParameter;
use LabsLLM\Parameters\NumberParameter;
use LabsLLM\Parameters\ArrayParameter;
use LabsLLM\Parameters\BooleanParameter;
// Define uma saída estruturada simples para uma avaliação de produto
$structureObject = new ObjectParameter('review', 'Dados da avaliação do produto', [
new StringParameter('title', 'Título da avaliação'),
new NumberParameter('rating', 'Avaliação de 1 a 5'),
new StringParameter('comment', 'Comentário detalhado da avaliação'),
new ArrayParameter('tags', 'Tags da avaliação',
new StringParameter('tag', 'Uma única tag')
),
new BooleanParameter('recommended', 'Se o produto é recomendado')
], ['title', 'rating', 'comment']);
// Use o esquema em seu prompt
$execute = LabsLLM::text()
->using(new OpenAI('sua-chave-api', 'gpt-4'))
->withOutputSchema($structureObject)
->executePrompt('Escreva uma avaliação para o último modelo de iPhone');
$response = $execute->getResponseData();
Formato da Resposta
Ao usar saída estruturada, você pode obter a resposta estruturada usando getStructureResponse()
:
php
// Obter o objeto de resposta estruturada
$reviewData = $response->getStructureResponse();
echo $reviewData->title; // "Experiência Incrível com iPhone"
echo $reviewData->rating; // 5
echo $reviewData->comment; // "O novo iPhone superou todas as minhas expectativas..."
// Acessando propriedades de array
foreach ($reviewData->tags as $tag) {
echo $tag->tag; // "bateria", "câmera", etc.
}
// Acessando propriedades booleanas
if ($reviewData->recommended) {
echo "Este produto é recomendado!";
}
Melhores Práticas
- Mantenha os esquemas simples: Comece com estruturas básicas e adicione complexidade conforme necessário
- Use nomes de campos claros: Escolha nomes descritivos que indiquem claramente o propósito de cada campo
- Valide as respostas: Sempre valide se a resposta JSON corresponde à estrutura esperada
- Trate erros: Esteja preparado para lidar com casos em que o modelo pode não seguir exatamente o esquema
Importante: Embora o modelo tente seguir seu esquema, é importante validar a resposta, pois o modelo pode ocasionalmente desviar da estrutura exata que você definiu.