API MedLM

MedLM es una familia de modelos básicos optimizados para el sector sanitario. Med-PaLM 2 es uno de los modelos basados en texto desarrollados por Google Research que impulsa MedLM. Fue el primer sistema de IA en alcanzar el nivel de un experto humano a la hora de responder preguntas similares a las del examen de licencia médica de Estados Unidos (USMLE). El desarrollo de estos modelos se ha basado en las necesidades específicas de los clientes, como responder a preguntas médicas y redactar resúmenes.

Tarjeta de modelo de MedLM

La tarjeta de modelo de MedLM describe los detalles del modelo, como el uso previsto de MedLM, un resumen de los datos y la información de seguridad. Haz clic en el siguiente enlace para descargar una versión PDF de la tarjeta del modelo MedLM:

Descargar la tarjeta de modelo de MedLM

Casos prácticos

  • Respuesta a preguntas: proporciona borradores de respuestas a preguntas relacionadas con la medicina en formato de texto.
  • Resumen: redacta una versión más breve de un documento (como un resumen posterior a la visita o una nota sobre el historial y la exploración física) que incluya información pertinente del texto original.

Para obtener más información sobre cómo diseñar peticiones de texto, consulta Descripción general de las estrategias de peticiones.

Solicitud HTTP

MedLM-medium (medlm-medium):

POST https://us-central1-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/us-central1/publishers/google/models/medlm-medium:predict

MedLM-large (medlm-large):

POST https://us-central1-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/us-central1/publishers/google/models/medlm-large:predict

Consulta el método predict para obtener más información.

Versiones del modelo

MedLM proporciona los siguientes modelos:

  • MedLM-medium (medlm-medium)
  • MedLM-large (medlm-large)

En la siguiente tabla se muestran las versiones estables del modelo disponibles:

Modelo medlm-medium Fecha de lanzamiento
medlm-medium 13 de diciembre del 2023
Modelo medlm-large Fecha de lanzamiento
medlm-large 13 de diciembre del 2023

MedLM-medium y MedLM-large tienen endpoints independientes y ofrecen a los clientes más flexibilidad para sus casos prácticos. MedLM-medium ofrece a los clientes mejores rendimientos e incluye datos más recientes. MedLM-large es el mismo modelo que en la fase de vista previa. Ambos modelos seguirán actualizándose durante el ciclo de vida del producto. En esta página, "MedLM" hace referencia a ambos modelos.

Para obtener más información, consulta Versiones y ciclo de vida de los modelos.

Filtros de seguridad y atributos de MedLM

El contenido procesado a través de la API MedLM se evalúa en función de una lista de atributos de seguridad, que incluye categorías dañinas y temas que pueden considerarse sensibles. Si ves una respuesta alternativa, como "No puedo ayudarte con eso, ya que solo soy un modelo de lenguaje", significa que la petición o la respuesta activan un filtro de seguridad.

Umbrales de seguridad

Cuando usas Vertex AI Studio, puedes usar un umbral de filtro de seguridad ajustable para determinar la probabilidad de que veas respuestas que puedan ser perjudiciales. Las respuestas del modelo se bloquean en función de la probabilidad de que contengan acoso, incitación al odio, contenido peligroso o contenido sexual explícito. El ajuste del filtro de seguridad se encuentra en la parte derecha del campo de petición de Vertex AI Studio. Puedes elegir entre tres opciones: block most, block some y block few.

Console-image

Probar los umbrales de confianza y gravedad

Puedes probar los filtros de seguridad de Google y definir los umbrales de confianza que mejor se adapten a tu empresa. Al usar estos umbrales, puede tomar medidas integrales para detectar contenido que infrinja las políticas de uso o los términos del servicio de Google y tomar las medidas oportunas.

Las puntuaciones de confianza son solo predicciones, por lo que no debes depender de ellas para determinar la fiabilidad o la precisión. Google no se hace responsable de interpretar ni de usar estas puntuaciones para tomar decisiones empresariales.

Para utilizar esta tecnología de forma segura y responsable, es importante tener en cuenta otros riesgos específicos de tu caso de uso, tus usuarios y tu contexto empresarial, además de las medidas de protección técnicas integradas.

Te recomendamos que sigas estos pasos:

  1. Evalúa los riesgos de seguridad de tu aplicación.
  2. Considera la posibilidad de hacer ajustes para mitigar los riesgos de seguridad.
  3. Realiza pruebas de seguridad adecuadas para tu caso práctico.
  4. Solicitar comentarios de los usuarios y monitorizar el contenido.

Para obtener más información, consulta las recomendaciones de Google sobre IA responsable.

Cuerpo de la solicitud

{
  "instances": [
    {
      "content": string
    }
  ],
  "parameters": {
    "temperature": number,
    "maxOutputTokens": integer,
    "topK": integer,
    "topP": number
  }
}

Usa los siguientes parámetros para los modelos medlm-medium y medlm-large. Para obtener más información, consulta Diseñar peticiones de texto.

Parámetro Descripción Valores aceptables

content

Entrada de texto para generar la respuesta del modelo. Las peticiones pueden incluir preámbulos, preguntas, sugerencias, instrucciones o ejemplos. Texto

temperature

La temperatura se usa para el muestreo durante la generación de respuestas, que se produce cuando se aplican topP y topK. La temperatura controla el grado de aleatoriedad en la selección de tokens. Las temperaturas más bajas son adecuadas para las peticiones que requieren una respuesta menos abierta o creativa, mientras que las temperaturas más altas pueden dar lugar a resultados más diversos o creativos. Una temperatura de 0 significa que siempre se seleccionan los tokens con la probabilidad más alta. En este caso, las respuestas a una petición determinada son mayormente deterministas, pero sigue siendo posible que haya una pequeña variación.

Si el modelo devuelve una respuesta demasiado genérica o demasiado corta, o bien una respuesta alternativa, prueba a aumentar la temperatura.

0.0–1.0

Default: 0.2

maxOutputTokens

Número máximo de tokens que se pueden generar en la respuesta. Un token tiene aproximadamente cuatro caracteres. 100 tokens corresponden aproximadamente a entre 60 y 80 palabras.

Especifica un valor inferior para las respuestas más cortas y un valor superior para las respuestas que puedan ser más largas.

1–8192 para medlm-medium

1–1024 para medlm-large

topK

Top-K cambia la forma en que el modelo selecciona los tokens de salida. Un valor de K superior de 1 significa que el siguiente token seleccionado es el más probable de todos los tokens del vocabulario del modelo (también llamado decodificación voraz), mientras que un valor de K superior de 3 significa que el siguiente token se selecciona de entre los tres tokens más probables mediante la temperatura.

En cada paso de selección de tokens, se muestrean los K tokens principales con las probabilidades más altas. Después, los tokens se filtran en función de la probabilidad P máxima y el token final se selecciona mediante un muestreo de temperatura.

Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias.

1–40

Default: 40

topP

Top-P cambia la forma en que el modelo selecciona los tokens de salida. Los tokens se seleccionan de más probable a menos probable hasta que la suma de sus probabilidades sea igual al valor de top-P. Por ejemplo, si los tokens A, B y C tienen una probabilidad de 0,3, 0,2 y 0,1, y el valor de top_p es 0.5, el modelo seleccionará A o B como el siguiente token usando la temperatura y excluirá C como candidato.

Especifica un valor más bajo para obtener respuestas menos aleatorias y un valor más alto para obtener respuestas más aleatorias.

0.0–1.0

Default: 0.8

Solicitud de ejemplo

Cuando se usa la API MedLM, es importante incorporar la ingeniería de peticiones. Por ejemplo, te recomendamos que proporciones instrucciones adecuadas y específicas para cada tarea al principio de cada petición. Para obtener más información, consulta Introducción a las peticiones.

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto.
  • MEDLM_MODEL: el modelo de MedLM, medlm-medium o medlm-large.

Método HTTP y URL:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MEDLM_MODEL:predict

Cuerpo JSON de la solicitud:

{
  "instances": [
    {
      "content": "Question: What causes you to get ringworm?"
    }
  ],
  "parameters": {
    "temperature": 0,
    "maxOutputTokens": 256,
    "topK": 40,
    "topP": 0.95
  }
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

cat > request.json << 'EOF'
{
  "instances": [
    {
      "content": "Question: What causes you to get ringworm?"
    }
  ],
  "parameters": {
    "temperature": 0,
    "maxOutputTokens": 256,
    "topK": 40,
    "topP": 0.95
  }
}
EOF

A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MEDLM_MODEL:predict"

PowerShell

Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:

@'
{
  "instances": [
    {
      "content": "Question: What causes you to get ringworm?"
    }
  ],
  "parameters": {
    "temperature": 0,
    "maxOutputTokens": 256,
    "topK": 40,
    "topP": 0.95
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

A continuación, ejecuta el siguiente comando para enviar tu solicitud REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MEDLM_MODEL:predict" | Select-Object -Expand Content
 

Cuerpo de la respuesta

{
  "predictions": [
    {
      "content": string,
      "citationMetadata": {
        "citations": [
          {
            "startIndex": integer,
            "endIndex": integer,
            "url": string,
            "title": string,
            "license": string,
            "publicationDate": string
          }
        ]
      },
      "logprobs": {
        "tokenLogProbs": [ float ],
        "tokens": [ string ],
        "topLogProbs": [ { map<string, float> } ]
      },
      "safetyAttributes": {
        "categories": [ string ],
        "blocked": boolean,
        "scores": [ float ],
        "errors": [ int ]
      }
    }
  ],
  "metadata": {
    "tokenMetadata": {
      "input_token_count": {
        "total_tokens": integer,
        "total_billable_characters": integer
      },
      "output_token_count": {
        "total_tokens": integer,
        "total_billable_characters": integer
      }
    }
  }
}
Elemento de respuesta Descripción
content El resultado generado a partir del texto de entrada.
categories Los nombres visibles de las categorías de atributos de seguridad asociadas al contenido generado. El orden coincide con las puntuaciones.
scores Las puntuaciones de confianza de cada categoría. Un valor más alto significa una mayor confianza.
blocked Marca que indica si se ha bloqueado la entrada o la salida del modelo.
errors Un código de error que identifica por qué se ha bloqueado la entrada o la salida. Para ver una lista de códigos de error, consulta Filtros y atributos de seguridad.
startIndex Índice de la salida de la predicción en la que empieza la cita (inclusive). Debe ser mayor o igual que 0 y menor que end_index.
endIndex Índice de la salida de predicción en la que termina la cita (exclusivo). Debe ser superior a start_index e inferior a len(output).
url URL asociada a esta cita. Si está presente, esta URL enlaza a la página web de la fuente de esta cita. Entre las URLs posibles se incluyen sitios web de noticias, repositorios de GitHub, etc.
title Título asociado a esta cita. Si está presente, se refiere al título de la fuente de esta cita. Por ejemplo, títulos de noticias o de libros.
license Licencia asociada a esta recitación. Si está presente, hace referencia a la licencia de la fuente de esta cita. Entre las licencias posibles se incluyen las licencias de código, como la licencia MIT.
publicationDate Fecha de publicación asociada a esta cita. Si está presente, se refiere a la fecha en la que se publicó la fuente de esta cita. Los formatos posibles son AAAA, AAAA-MM y AAAA-MM-DD.
input_token_count Número de tokens de entrada. Es el número total de tokens de todas las peticiones, prefijos y sufijos.
output_token_count Número de tokens de salida. Es el número total de tokens de content en todas las predicciones.
tokens Los tokens muestreados.
tokenLogProbs Logaritmo de las probabilidades de los tokens muestreados.
topLogProb Los tokens candidatos más probables y sus probabilidades logarítmicas en cada paso.
logprobs Resultados del parámetro `logprobs`. Asignación individual a `candidates`.

Respuesta de ejemplo

{
  "predictions": [
    {
      "citationMetadata": {
        "citations": []
      },
      "content": "\n\nAnswer and Explanation:\nRingworm is a fungal infection of the skin that is caused by a type of fungus called dermatophyte. Dermatophytes can live on the skin, hair, and nails, and they can be spread from person to person through direct contact or through contact with contaminated objects.\n\nRingworm can cause a variety of symptoms, including:\n\n* A red, itchy rash\n* A raised, circular border\n* Blisters or scales\n* Hair loss\n\nRingworm is most commonly treated with antifungal medications, which can be applied to the skin or taken by mouth. In some cases, surgery may be necessary to remove infected hair or nails.",
      "safetyAttributes": {
        "scores": [
          1
        ],
        "blocked": false,
        "categories": [
          "Health"
        ]
      }
    }
  ],
  "metadata": {
    "tokenMetadata": {
      "outputTokenCount": {
        "totalTokens": 140,
        "totalBillableCharacters": 508
      },
      "inputTokenCount": {
        "totalTokens": 10,
        "totalBillableCharacters": 36
      }
    }
  }
}