Optimizador de instrucciones con ejemplos limitados

El optimizador de instrucciones con ejemplos limitados te ayuda a definir mejor las instrucciones del sistema analizando ejemplos en los que la respuesta de un modelo no cumplió con las expectativas. Proporcionas ejemplos específicos de instrucciones, respuestas del modelo y comentarios sobre esas respuestas, y el optimizador mejora las instrucciones del sistema. Puedes proporcionar comentarios de dos maneras: con rúbricas y evaluaciones basadas en rúbricas, o con respuestas objetivo.

La optimización con pocos ejemplos requiere que proporciones ejemplos en un DataFrame de Pandas y está disponible a través del SDK de Vertex AI.

Optimiza con la evaluación basada en rúbricas

Este método es para situaciones en las que tienes rúbricas (también conocidas como criterios de calificación) para cada ejemplo y un registro de si el modelo cumplió con esos criterios. Tu DataFrame debe contener las siguientes cuatro columnas:

  • prompt: Es la instrucción original del usuario.
  • model_response: Es el resultado real que genera el modelo.
  • rubrics: Es una lista de criterios específicos para ese ejemplo, como una representación de cadena de una lista de cadenas.
  • rubrics_evaluations: Es una lista de valores booleanos que indica si se cumplió con cada rúbrica, como una representación de cadena de una lista de valores booleanos.

Las rúbricas pueden ser coherentes en todas las filas o adaptarse a cada ejemplo.

import pandas as pd
import vertexai
from vertexai import types

PROJECT_NAME = "YOUR_PROJECT_NAME"
LOCATION = "YOUR_LOCATION" # e.g. "us-central1"
client = vertexai.Client(project=PROJECT_NAME, location=LOCATION)

system_instructions = "You are an AI assistant skilled in analyzing articles. Your task is to extract key arguments, evaluate evidence quality, identify potential biases, and summarize core findings into a concise, actionable, and objective report. Make sure the response is less than 50 words"
df = pd.DataFrame(
    [
        {
            "prompt": "prompt1",
            "model_response": "response1",
            "rubrics": "['Response is in English', 'Under 50 words']",
            "rubrics_evaluations": "[True, True]",
        },
        {
            "prompt": "prompt2",
            "model_response": "response2",
            "rubrics": "['Response is in English', 'Under 50 words']",
            "rubrics_evaluations": "[True, False]",
        },
    ]
)

config = vertexai.types.OptimizeConfig(
    optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_FEW_SHOT_RUBRICS,
    examples_dataframe=df,
)

response = client.prompts.optimize(prompt=system_instructions, config=config)

print(response.parsed_response.suggested_prompt)

Optimiza con respuestas objetivo

Si no tienes rúbricas específicas, pero sí una respuesta ideal o de "estándar de oro" para cada instrucción, puedes usar la optimización basada en respuestas objetivo. El optimizador compara el resultado del modelo con el resultado ideal y ajusta las instrucciones para cerrar la brecha.

Tu DataFrame debe incluir estas tres columnas:

  • prompt: Es la instrucción original del usuario.
  • model_response: Es el resultado actual del modelo que necesita mejoras.
  • target_response: Es la respuesta ideal que quieres que genere el modelo.
import pandas as pd
import vertexai
from vertexai import types

PROJECT_NAME = "PROJECT"
LOCATION = "YOUR_LOCATION" # e.g. "us-central1"
client = vertexai.Client(project=YOUR_PROJECT_NAME, location=LOCATION)

system_instructions = "You are an AI assistant skilled in analyzing articles. Your task is to extract key arguments, evaluate evidence quality, identify potential biases, and summarize core findings into a concise, actionable, and objective report. Make sure the response is less than 50 words"
df = pd.DataFrame(
    {
        "prompt": ["prompt1", "prompt2"],
        "model_response": ["response1", "response2"],
        "target_response": ["target1", "target2"],
    }
)
config = vertexai.types.OptimizeConfig(
    optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_FEW_SHOT_TARGET_RESPONSE,
    examples_dataframe=df,
)
response = client.prompts.optimize(
    prompt=system_instructions,
    config=config,
)

print(response.parsed_response.suggested_prompt)