O otimizador sem disparos permite refinar e melhorar automaticamente os comandos escritos pelos usuários. Muitas vezes, um comando não produz a resposta do modelo que você quer devido a linguagem ambígua, falta de contexto ou inclusão de informações irrelevantes. Ele analisa e reescreve um comando para que ele seja mais claro, eficaz e alinhado aos recursos do modelo, resultando em respostas de maior qualidade.
O otimizador zero-shot é especialmente útil para:
Adaptação às atualizações de modelo:quando você faz upgrade para uma versão mais recente de um modelo, os comandos atuais podem não funcionar mais da melhor forma.
Melhoria da compreensão de comandos:quando a frase de um comando é complexa ou pode ser mal interpretada, a ferramenta pode reformulá-la para máxima clareza e precisão, reduzindo a chance de um resultado indesejado.
Há duas maneiras de usar o otimizador:
Geração de instruções: em vez de escrever instruções complexas do sistema do zero, você pode descrever sua meta ou tarefa em linguagem simples. Em seguida, o otimizador vai gerar um conjunto completo e bem estruturado de instruções do sistema projetadas para atingir seu objetivo.
Refinamento de comandos: você tem um comando funcional, mas a saída do modelo é inconsistente, um pouco fora do assunto ou não tem os detalhes que você quer. O otimizador pode ajudar a melhorar o comando para uma saída melhor.
O otimizador é compatível com a otimização de comandos em todos os idiomas disponíveis no Gemini e está disponível no SDK da Vertex AI, conforme mostrado neste exemplo:
# Import libraries
import vertexai
import logging
# Google Colab authentication
from google.colab import auth
PROJECT_NAME = "PROJECT"
auth.authenticate_user(project_id=PROJECT_NAME)
# Initialize the Vertex AI client
client = vertexai.Client(project=PROJECT_NAME, location='us-central1')
# Input original prompt to optimize
prompt = """You are a professional chef. Your goal is teaching how to cook healthy cooking recipes to your apprentice.
Given a question from your apprentice and some context, provide the correct answer to the question.
Use the context to return a single and correct answer with some explanation.
"""
# Optimize prompt
output = client.prompt_optimizer.optimize_prompt(prompt=prompt)
Esse objeto output
é do tipo OptimizeResponse
e fornece informações
sobre o processo de otimização. A parte mais importante é o
suggested_prompt
, que contém o comando otimizado que você pode usar para ter
melhores resultados com seu modelo. Os outros campos, especialmente applicable_guidelines
, são úteis para entender por que e como seu comando foi melhorado, o que pode ajudar você a escrever comandos melhores no futuro. Confira um exemplo da saída:
{
"optimization_mode": "zero_shot",
"applicable_guidelines": [
{
"applicable_guideline": "Structure",
"suggested_improvement": "Add role definition.",
"text_before_change": "...",
"text_after_change": "Role: You are an AI assistant...\n\nTask Context:\n..."
},
{
"applicable_guideline": "RedundancyInstructions",
"suggested_improvement": "Remove redundant explanation.",
"text_before_change": "...",
"text_after_change": ""
}
],
"original_prompt": "...",
"suggested_prompt": "Role: You are an AI assistant...\n\nTask Context:\n..."
}