O otimizador de zero disparos permite-lhe refinar e melhorar automaticamente os comandos escritos pelos utilizadores. Muitas vezes, um comando pode não produzir a resposta do modelo que pretende devido a linguagem ambígua, contexto em falta ou inclusão de informações irrelevantes. Este otimizador analisa e reescreve um comando existente para ser mais claro, mais eficaz e mais alinhado com as capacidades do modelo, o que, em última análise, gera respostas de maior qualidade.
O otimizador de zero exemplos é particularmente útil para:
Adaptação às atualizações de modelos: quando atualiza para uma versão mais recente de um modelo, os seus comandos existentes podem deixar de ter um desempenho ideal.
Melhorar a compreensão dos comandos: quando a formulação de um comando é complexa ou pode ser mal interpretada, a ferramenta pode reformulá-la para máxima clareza e precisão, reduzindo a probabilidade de um resultado indesejável.
Existem duas formas de usar o otimizador:
Geração de instruções: em vez de escrever instruções complexas do sistema desde o início, pode descrever o seu objetivo ou tarefa em linguagem simples. Em seguida, o otimizador gera um conjunto completo e bem estruturado de instruções do sistema concebidas para alcançar o seu objetivo.
Refinamento de comandos: tem um comando funcional, mas o resultado do modelo é inconsistente, ligeiramente fora do tópico ou não tem os detalhes que quer. O otimizador pode ajudar a melhorar o comando para um melhor resultado.
O otimizador suporta a otimização de comandos em todos os idiomas suportados pelo Gemini e está disponível através do SDK do Vertex AI
Antes de começar
Para garantir que a conta de serviço predefinida do Compute Engine tem as autorizações necessárias para otimizar os comandos, peça ao seu administrador para conceder à conta de serviço predefinida do Compute Engine as seguintes funções do IAM no projeto:
-
Utilizador do Vertex AI (
roles/aiplatform.user) -
Agente de serviço da Vertex AI (
roles/aiplatform.serviceAgent)
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
O administrador também pode conceder à conta de serviço predefinida do Compute Engine as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Otimize um comando
# 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)
# View optimized prompt
print(output.model_dump_json(indent=2))
Este objeto output é do tipo OptimizeResponse e fornece informações
acerca do processo de otimização. A parte mais importante é o
suggested_prompt, que contém o comando otimizado que pode usar para obter
melhores resultados do seu modelo. Os outros campos, especialmente o campo
applicable_guidelines, são úteis para compreender por que motivo e como o seu comando foi melhorado, o que pode ajudar a escrever comandos melhores no futuro. Segue-se um
exemplo do resultado:
{
"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..."
}
Otimizar para modelos mais pequenos
Os modelos mais pequenos, como o Gemma 3n E4B, têm capacidades de seguimento de instruções diferentes dos modelos maiores. Os comandos com bom desempenho para modelos grandes
podem não ser ideais para estes modelos mais pequenos. O otimizador de zero-shot oferece um modo gemini_nano para resolver este problema. O modo gemini_nano refina o seu comando para se alinhar especificamente com as caraterísticas dos modelos mais pequenos, o que ajuda a gerar comandos que se adequam melhor às capacidades dos modelos mais pequenos.
O exemplo seguinte mostra como otimizar um comando para modelos mais pequenos:
client = vertexai.Client(project=PROJECT_NAME, location='us-central1')
prompt = 'Generate system instructions for analyzing medical articles'
gemini_nano_config = vertexai.types.OptimizerConfig(
optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_GEMINI_NANO
)
response = client.prompt_optimizer.optimize_prompt(
prompt=prompt,
config=gemini_nano_config
)
# Or more simpler way to call the prompt optimizer
# response = client.prompt_optimizer.optimize_prompt(
# prompt=prompt,
# config={optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_GEMINI_NANO}
# )