API MedLM

O MedLM é uma família de modelos de fundação ajustados para o setor de saúde. O Med-PaLM 2 é um dos modelos baseados em texto desenvolvidos pela Google Research que alimenta o MedLM e foi o primeiro sistema de IA a atingir o nível de especialista humano em respostas a perguntas similares ao Exame de Licenciamento Médico (USMLE) dos EUA. O desenvolvimento desses modelos foi orientado por necessidades específicas dos clientes, como respostas a perguntas médicas e elaboração de resumos.

Card de modelo do MedLM

O card de modelo do MedLM descreve os detalhes do modelo, como o uso pretendido, a visão geral dos dados e as informações de segurança. Clique no link a seguir para fazer o download de uma versão em PDF do card do modelo do MedLM:

Faça o download do card do modelo do MedLM

Casos de uso

  • Respostas a perguntas: envie rascunhos de respostas para perguntas sobre saúde, apresentadas em formato de texto.
  • Resumir: esboce uma versão mais curta de um documento (como um resumo após a visita ou uma nota de histórico e exame físico) que incorpore informações relevantes do texto original.

Para saber mais sobre como criar comandos de texto, consulte Criar comandos de texto (link em inglês).

Solicitação 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

Consulte o método predict para mais informações.

Versões do modelo

O MedLM oferece os seguintes modelos:

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

A tabela a seguir contém as versões de modelo estável disponíveis:

modelo medlm-medium Data da versão
medlm-medium 13 de dezembro de 2023
modelo medlm-large Data da versão
medlm-large 13 de dezembro de 2023

O MedLM-medium e o MedLM-large têm endpoints separados e oferecem aos clientes mais flexibilidade nos casos de uso. O MedLM-medium oferece aos clientes melhores capacidades de processamento e inclui dados mais recentes. O MedLM-large é o mesmo modelo da fase de pré-lançamento. Os dois modelos continuarão a ser atualizados durante o ciclo de vida do produto. Nesta página, "MedLM" se refere aos dois modelos.

Para mais informações, consulte Versões e ciclo de vida do modelo.

Filtros e atributos de segurança do MedLM

O conteúdo processado pela API MedLM é avaliado em relação a uma lista de atributos de segurança, incluindo "categorias prejudiciais" e temas que podem ser considerados sensíveis. Se você vir uma resposta substituta, como "Não posso ajudar com isso, já que sou apenas um modelo de linguagem", isso significa que o comando ou a resposta está acionando um filtro de segurança.

Limites de segurança

Ao usar a Vertex AI Studio, é possível usar um limite de filtro de segurança ajustável para determinar a probabilidade de encontrar respostas possivelmente prejudiciais. As respostas do modelo são bloqueadas com base na probabilidade de conterem assédio, discurso de ódio, conteúdo perigoso ou conteúdo sexualmente explícito. A configuração do filtro de segurança está localizada à direita do campo de comando no Vertex AI Studio. É possível escolher entre três opções: block most, block some e block few.

Imagem do console

Como testar seus limites de confiança e gravidade

É possível testar os filtros de segurança do Google e definir limites de confiança ideais para sua empresa. Ao usar esses limites, é possível tomar medidas abrangentes para detectar conteúdos que violem as políticas de uso ou os Termos de Serviço do Google e tomar as medidas apropriadas.

As pontuações de confiança são apenas previsões, e você não deve depender da confiabilidade ou precisão delas. O Google não é responsável por interpretar ou usar essas pontuações para decisões de negócios.

Para utilizar essa tecnologia com segurança e responsabilidade, é importante considerar outros riscos específicos para o caso de uso, usuários e contexto empresarial, além das salvaguardas técnicas integradas.

Recomendamos seguir estas etapas:

  1. Analise os riscos de segurança do aplicativo.
  2. Faça ajustes para evitar riscos de segurança.
  3. Realize testes de segurança de acordo com seu caso de uso.
  4. Peça o feedback do usuário e monitore os conteúdos.

Para saber mais, consulte as recomendações do Google sobre IA responsável.

Corpo da solicitação

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

Use os seguintes parâmetros para os modelos medlm-medium e medlm-large. Para mais informações, consulte Projetar prompts de texto.

Parâmetro Descrição Valores aceitáveis

content

Entrada de texto para gerar uma resposta do modelo. As solicitações podem incluir preâmbulos, perguntas, sugestões, instruções ou exemplos. Texto

temperature

A temperatura é usada para amostragem durante a geração da resposta, que ocorre quando topP e topK são aplicados. A temperatura controla o grau de aleatoriedade na seleção do token. Temperaturas mais baixas são boas para solicitações que exigem uma resposta menos aberta ou criativa, enquanto temperaturas mais altas podem levar a resultados mais diversos ou criativos. Uma temperatura de 0 significa que os tokens de maior probabilidade são sempre selecionados. Nesse caso, as respostas para uma determinada solicitação são, na maioria das vezes, deterministas, mas uma pequena variação ainda é possível.

Se o modelo retornar uma resposta muito genérica, muito curta ou se o modelo fornecer uma resposta alternativa, tente aumentar a temperatura.

0.0–1.0

Default: 0.2

maxOutputTokens

Número máximo de tokens que podem ser gerados na resposta. Um token tem cerca de quatro caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.

Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas potencialmente mais longas.

1–8192 para medlm-medium

1–1024 para medlm-large

topK

O Top-K muda a forma como o modelo seleciona tokens para saída. Um top-K de 1 significa que o próximo token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-K de 3 significa que o próximo token está selecionado entre os três tokens mais prováveis usando a temperatura.

Para cada etapa da seleção de tokens, são amostrados os tokens top-K com as maiores probabilidades. Em seguida, os tokens são filtrados com base no valor de top-P com o token final selecionado por meio da amostragem de temperatura.

Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.

1–40

Default: 40

topP

O Top-P muda a forma como o modelo seleciona tokens para saída. Os tokens são selecionados do mais provável (veja o top-K) para o menos provável até que a soma das probabilidades seja igual ao valor do top-P. Por exemplo, se os tokens A, B e C tiverem uma probabilidade de 0,3, 0,2 e 0,1 e o valor de top-P for 0.5, o modelo selecionará A ou B como token seguinte usando temperatura e exclui C como candidato.

Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.

0.0–1.0

Default: 0.8

Exemplo de solicitação

Ao usar a API MedLM, é importante incorporar a engenharia de comando. Por exemplo, recomendamos fornecer instruções apropriadas e específicas da tarefa no início de cada comando. Para mais informações, consulte Introdução à criação de comandos.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • MEDLM_MODEL: o modelo MedLM, medlm-medium ou medlm-large.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

Depois execute o comando a seguir para enviar a solicitação 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

Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

@'
{
  "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

Depois execute o comando a seguir para enviar a solicitação 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
 

Corpo da resposta

{
  "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 resposta Descrição
content O resultado gerado a partir do texto de entrada.
categories Os nomes de exibição das categorias de atributo de segurança associadas ao conteúdo gerado. A ordem corresponde às pontuações.
scores As pontuações de confiança de cada categoria, maior valor significa maior confiança.
blocked Uma flag que indica se a entrada ou saída do modelo foi bloqueada.
errors Um código de erro que identifica por que a entrada ou saída foi bloqueada. Veja uma lista de códigos de erro em Filtros e atributos de segurança.
startIndex Índice na saída de previsão em que a citação começa (inclusive). Precisa ser maior ou igual a 0 e menor que end_index.
endIndex Índice na saída da previsão em que a citação termina (exclusiva). Precisa ser maior que start_index e menor que len(output).
url URL associado a essa citação. Se presente, esse URL está vinculado à página da Web da fonte da citação. Os possíveis URLs incluem sites de notícias, repositórios do GitHub e assim por diante.
title Título associado a essa citação. Se presente, refere-se ao título da fonte desta citação. Isso inclui títulos de notícias, de livros e assim por diante.
license Licença associada a esta recitação. Se estiver presente, refere-se à licença da fonte dessa citação. As possíveis licenças incluem licenças de código, como a MIT.
publicationDate Data de publicação associada a esta citação. Se presente, refere-se à data em que a fonte da citação foi publicada. Os formatos possíveis são AAAA, AAAA-MM, AAAA-MM-DD.
input_token_count Número de tokens de entrada. Esse é o número total de tokens em todos os comandos, os prefixos e os sufixos.
output_token_count Número de tokens de saída. Esse é o número total de tokens em content em todas as previsões.
tokens Os tokens de amostra.
tokenLogProbs Probabilidades de registro dos tokens de amostra.
topLogProb Os tokens candidatos mais prováveis e as probabilidades de registro deles em cada etapa.
logprobs Resultados do parâmetro `logprobs`. Mapeamento de 1-1 para "candidatos".

Exemplo de resposta

{
  "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
      }
    }
  }
}

Resposta de stream de modelos de IA generativa

Os parâmetros são os mesmos para streaming e solicitações sem streaming para as APIs.

Para conferir exemplos de solicitações de código e respostas usando a API REST, consulte Exemplos usando a API REST.

Para conferir exemplos de solicitações de código e respostas usando o SDK da Vertex AI para Python, consulte Exemplos que usam o SDK da Vertex AI para Python.