Gerenciamento de Tópicos
Use o gerenciamento de tópicos no OCI Generative AI Guardrails para verificar o texto em relação aos tópicos que você define para seu aplicativo.
O gerenciamento de tópicos classifica o texto em relação aos tópicos que você define para seu aplicativo, como empréstimos para exposições ou solicitações para visitar um museu fora do horário de funcionamento.
A partir do sistema Guardrails versão 1.2.0, você pode usar a API ApplyGuardrails para avaliar o texto em relação aos tópicos que você define.
Você envia nomes de tópicos, descrições opcionais e exemplos opcionais rotulados com cada solicitação ApplyGuardrails. O serviço avalia o texto em relação a cada tópico e retorna uma correspondência ou resultado sem correspondência para cada um. Seu aplicativo usa esses resultados para decidir como lidar com o conteúdo.
Para usar o gerenciamento de tópicos, inclua
topicConfig em cada solicitação do ApplyGuardrails. Não é possível selecionar o gerenciamento de tópicos como um guardrail ao criar ou atualizar um ponto final de modelo na Console. O gerenciamento de tópicos não está disponível por meio do caminho API compatível com OpenAI.As definições de tópico se aplicam à solicitação atual. O serviço não os cria nem os armazena como recursos de tópico reutilizáveis. Para reutilizar uma configuração de tópico, mantenha-a em seu aplicativo e inclua-a em cada solicitação. Para alterar os tópicos avaliados, altere a configuração em solicitações subsequentes.
Como Funciona o Gerenciamento de Tópicos
- Defina seus tópicos. Dê um nome a cada tópico. Adicione uma descrição para esclarecer seu escopo e exemplos rotulados para ilustrar o texto que corresponde ou não.
- Envie a configuração de texto e tópico. Inclua o texto em
multimodalInput, adicioneguardrailConfigs.topicConfige selecione uma versão do sistema Guardrails suportada. - Leia os resultados. Use
results.topicModeration.topicspara localizar o resultado de cada tópico configurado. Mais de um tópico pode corresponder ao mesmo texto. - Aplique a política do seu aplicativo. Por exemplo, seu aplicativo pode permitir a interação, redirecionar o usuário para um assunto suportado ou impedir que o conteúdo seja transmitido a um modelo ou mostrado a um usuário.
Para avaliar uma entrada do usuário, envie-a antes de enviá-la ao modelo. Para avaliar uma saída de modelo, submeta essa saída como texto em uma solicitação ApplyGuardrails separada antes de exibi-la.
Uma correspondência de tópico identifica o assunto do texto. Isso não significa que o texto não seja seguro e que o resultado não bloqueie automaticamente uma solicitação de inferência. Seu aplicativo decide quais tópicos exigem uma ação.
Solicitar Requisitos
Envie solicitações ao ponto final existente:
POST /20231130/actions/applyGuardrailsPara assinar a solicitação e o contrato completo da API, consulte ApplyGuardrails.
- Defina
guardrailVersionConfig.guardrailVersioncomo1.2.0ou uma versão mais recente suportada. O gerenciamento de tópicos requer uma seleção de versão explícita. Use ListGuardrailVersions para verificar as versões, descrições e estados de ciclo de vida disponíveis. Consulte Workflow de Seleção de Versão para listar requisitos e seleção de versão PATCH. A versão do sistema Guardrails é separada da versão da API no caminho do ponto final e na versão do SDK. - Inclua exatamente um item
TEXTnomultimodalInpute coloque o texto para classificar nocontent. O campolanguageCodeé opcional. Se você fornecê-lo, useenou uma variante regional em inglês, comoen-US. - Omita
input. QuandotopicConfigé fornecido, a inclusão deinputresulta em HTTP 400, mesmo quemultimodalInputtambém seja fornecido. - Adicione
topicConfigemguardrailConfigs. Forneça pelo menos um tópico emtopicConfig.topics. - Informe o OCID do seu compartimento em
compartmentId.
O gerenciamento de tópicos avalia apenas o texto em inglês. Se a solicitação também contiver imagens, a classificação do tópico as ignorará. Não há suporte para solicitações somente de imagem, vários itens de texto e códigos de idioma inválidos ou não em inglês para classificação de tópico. Omitindo languageCode é permitido.
Você pode incluir moderação de conteúdo, detecção de injeção de prompt e configurações de detecção de PII na mesma solicitação. Adicionar o gerenciamento de tópicos não altera essas proteções. Se você omitir topicConfig, o comportamento da solicitação existente será preservado e a resposta não incluirá results.topicModeration.
Definindo Tópicos e Exemplos
Defina tópicos em guardrailConfigs.topicConfig.topics. Opcionalmente, adicione exemplos rotulados em guardrailConfigs.topicConfig.fewShotExamples.
| Campo | Obrigatório | Requisitos |
|---|---|---|
topics | Sim | Inclua de 1 a 25 tópicos por solicitação. |
topics[].name | Sim | Use de 1 a 100 caracteres, incluindo pelo menos um caractere que não seja de espaço em branco. Os nomes devem ser exclusivos após o corte de espaços em branco à esquerda e à direita e a comparação sem levar em conta letras maiúsculas e minúsculas. |
topics[].description | Não | Descreva o tópico em até 1.000 caracteres. |
fewShotExamples | Não | Inclua até 15 exemplos rotulados. |
fewShotExamples[].userText | Sim, para cada exemplo | Forneça um texto de exemplo de 1 a 1.000 caracteres. |
fewShotExamples[].classification | Sim, para cada exemplo | Inclua uma entrada para cada tópico na solicitação. Cada chave deve corresponder exatamente a um nome de tópico enviado, incluindo letras maiúsculas e minúsculas. Use a string "true" se o tópico se aplicar ao exemplo e "false" se não o fizer. Os valores devem ser strings em minúsculas, não valores boolianos JSON. Não omita tópicos ou inclua chaves adicionais. |
Por exemplo, se seus tópicos forem Exhibit Loans e After-Hours Access, cada exemplo deverá conter ambas as chaves em seu objeto classification, mesmo quando apenas um tópico se aplica.
Os labels de exemplo em
classification e o campo isMatched na resposta usam as strings em letras minúsculas "true" e "false".A validação de nome duplicado compara os nomes dos tópicos. Não rejeita tópicos apenas porque seus significados se sobrepõem. Por exemplo, nomes que diferem apenas em letras maiúsculas e minúsculas são duplicados, mas nomes diferentes com significados semelhantes não são duplicados automaticamente.
Para tornar suas definições claras:
- Use nomes e descrições de tópicos específicos. Por exemplo,
Empréstimos de Exposição
é mais específico do queExposições
se você quiser detectar solicitações para emprestar objetos de museu para exibição em outro local. - Use descrições para explicar o escopo pretendido e distinguir tópicos relacionados.
- Forneça exemplos representativos com rótulos consistentes. Rotule cada tópico para cada exemplo.
- Teste com texto correspondente, texto não correspondente e texto que pode corresponder a mais de um tópico. Refine descrições e exemplos com base nos resultados.
Os exemplos orientam a classificação da solicitação atual. Para avaliar uma definição revisada, envie outra solicitação com a configuração do tópico revisado.
Exemplo de Solicitação de Gerenciamento de Tópicos
Este exemplo verifica uma mensagem para um assistente de museu fictício para exibir empréstimos e acesso fora do horário de funcionamento. O aplicativo pode usar qualquer uma das correspondências para encaminhar a solicitação à equipe do museu. Substitua <your-compartment-ocid> pelo OCID do compartimento.
{
"multimodalInput": [
{
"type": "TEXT",
"content": "Could our community center borrow the clock exhibit for a local exhibition and collect it after the museum closes?",
"languageCode": "en"
}
],
"guardrailConfigs": {
"topicConfig": {
"topics": [
{
"name": "Exhibit Loans",
"description": "Requests to temporarily borrow museum objects for display at another venue."
},
{
"name": "After-Hours Access",
"description": "Requests to enter museum spaces or collect items outside normal opening hours."
}
],
"fewShotExamples": [
{
"userText": "Can our community center borrow the navigation instruments for a school exhibition?",
"classification": {
"Exhibit Loans": "true",
"After-Hours Access": "false"
}
},
{
"userText": "May the photography club enter the gallery after closing time?",
"classification": {
"Exhibit Loans": "false",
"After-Hours Access": "true"
}
},
{
"userText": "Which gallery displays the restored clock?",
"classification": {
"Exhibit Loans": "false",
"After-Hours Access": "false"
}
}
]
}
},
"guardrailVersionConfig": {
"guardrailVersion": "1.2.0"
},
"compartmentId": "<your-compartment-ocid>"
}Esta solicitação só ativa a classificação de tópicos. Para avaliar o mesmo texto com outras proteções, adicione seus objetos de configuração ao lado de topicConfig. Consulte Usando a API ApplyGuardrails.
Noções Básicas Sobre Resultados do Tópico
Quando a classificação do tópico é bem-sucedida, results.topicModeration.topics contém um resultado para cada tópico configurado, na mesma ordem da solicitação. Tópicos que não correspondem são incluídos.
| Campo | Significado |
|---|---|
name | O nome do tópico exatamente como fornecido na solicitação. |
isMatched | A string "true" quando o tópico se aplica ao texto ou "false" quando não se aplica. |
score | 1.0 quando isMatched for "true" ou 0.0 quando for "false". Nenhuma pontuação fracionária é retornada. |
A pontuação é um resultado de classificação binária, não uma pontuação de confiança graduada. O resultado classifica o texto geral e não retorna texto, compensações ou comprimentos correspondentes.
A seguinte resposta ilustrativa mostra os dois tópicos que correspondem à mensagem de exemplo:
{
"results": {
"topicModeration": {
"topics": [
{
"name": "Exhibit Loans",
"score": 1.0,
"isMatched": "true"
},
{
"name": "After-Hours Access",
"score": 1.0,
"isMatched": "true"
}
]
}
},
"guardrailVersion": {
"version": "1.2.0"
}
}Seu aplicativo pode agir em qualquer partida de acordo com sua política. Para um tópico que não corresponde, a resposta ainda inclui seu nome com score: 0.0 e isMatched: "false".
Validação e Solução de Problemas
Verifique se sua solicitação inclui uma versão suportada do sistema Guardrails e atende aos requisitos de tópico e entrada. Fornecer input, uma solicitação somente para imagem, vários itens de texto, um código de idioma inválido ou não em inglês ou uma versão de guardrail não suportada resulta em HTTP 400. Você pode omitir languageCode.
| Erro de Validação | O que verificar |
|---|---|
INVALID_TOPIC | Verifique se cada tópico tem um nome em branco e se os nomes e as descrições atendem aos requisitos de tamanho. |
DUPLICATE_TOPIC | Verifique se há nomes que se tornam idênticos após remover o espaço em branco adjacente e compare sem levar em consideração letras maiúsculas e minúsculas. |
TOPIC_LIMIT_EXCEEDED | Não envie mais de 25 tópicos em uma solicitação. |
INVALID_TOPIC_EXAMPLE | Verifique o número e a extensão dos exemplos. Cada mapa de classificação deve conter exatamente os nomes de tópico enviados, com a string "true" ou "false" para cada nome. Valores boolianos JSON e outras strings não são aceitos. |
UNSUPPORTED_LANGUAGE | Se você fornecer languageCode, use en ou uma variante regional em inglês. Você também pode omitir o campo. |
UNSUPPORTED_TOPIC_INPUT | Use multimodalInput com exatamente um item TEXT. Omita input e não envie uma solicitação somente para imagem para classificação de tópico. |
Se os resultados não refletirem os tópicos pretendidos, revise as descrições dos tópicos e os rótulos de exemplo. Teste as definições revisadas com texto de aplicativo representativo antes de usar os resultados para impor sua política.