API MedLM

O MedLM é uma família de modelos de base ajustados para a indústria de cuidados 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 na resposta a perguntas no estilo do Exame de Licenciamento Médico nos EUA (USMLE). O desenvolvimento destes modelos foi baseado em necessidades específicas dos clientes, como responder a perguntas médicas e criar resumos.

Cartão do modelo MedLM

A ficha do modelo MedLM descreve os detalhes do modelo, como a utilização pretendida do MedLM, a vista geral dos dados e as informações de segurança. Clique no seguinte link para transferir uma versão PDF da ficha do modelo MedLM:

Transfira o cartão do modelo MedLM

Exemplos de utilização

  • Respostas a perguntas: fornecer rascunhos de respostas a perguntas relacionadas com medicina, apresentadas como texto.
  • Resumo: crie um rascunho de uma versão mais curta de um documento (como um resumo pós-consulta ou uma nota de histórico e exame físico) que incorpore informações pertinentes do texto original.

Para mais informações sobre a conceção de comandos de texto, consulte o artigo Vista geral das estratégias de comandos.

Pedido 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 seguinte contém as versões estáveis do modelo disponíveis:

Modelo medlm-medium Data de lançamento
medlm-medium 13 de dezembro de 2023
Modelo medlm-large Data de lançamento
medlm-large 13 de dezembro de 2023

O MedLM-medium e o MedLM-large têm pontos finais separados e oferecem aos clientes flexibilidade adicional para os respetivos exemplos de utilização. O MedLM-medium oferece aos clientes melhores rendimentos e inclui dados mais recentes. O MedLM-large é o mesmo modelo da fase de pré-visualização. Ambos os modelos vão continuar a ser atualizados ao longo do ciclo de vida do produto. Nesta página, "MedLM" refere-se a ambos os modelos.

Para mais informações, consulte o artigo Versões e ciclo de vida dos modelos.

Filtros e atributos de segurança do MedLM

O conteúdo processado através da API MedLM é avaliado em função de uma lista de atributos de segurança, incluindo "categorias prejudiciais" e tópicos que podem ser considerados sensíveis. Se estiver a ver uma resposta alternativa, como "Não posso ajudar com isso, uma vez que sou apenas um modelo de linguagem", significa que o comando ou a resposta está a acionar um filtro de segurança.

Limites de segurança

Quando usa o Vertex AI Studio, pode usar um limite de filtro de segurança ajustável para determinar a probabilidade de ver respostas que possam ser prejudiciais. As respostas do modelo são bloqueadas com base na probabilidade de conterem assédio, incitamento ao ódio, conteúdo perigoso ou conteúdo sexualmente explícito. A definição do filtro de segurança encontra-se no lado direito do campo de comando no Vertex AI Studio. Pode escolher entre três opções: block most, block some e block few.

Console-image

Testar os limites de confiança e gravidade

Pode testar os filtros de segurança da Google e definir limites de confiança adequados para a sua empresa. Ao usar estes limites, pode tomar medidas abrangentes para detetar conteúdo que viole as políticas de utilização ou os termos de serviço da Google e tomar as medidas adequadas.

As pontuações de confiança são apenas previsões e não deve depender das pontuações para fiabilidade ou precisão. A Google não é responsável pela interpretação nem pela utilização destas classificações para decisões empresariais.

Para utilizar esta tecnologia de forma segura e responsável, é importante considerar outros riscos específicos do seu exemplo de utilização, utilizadores e contexto empresarial, além das salvaguardas técnicas incorporadas.

Recomendamos que siga os seguintes passos:

  1. Avalie os riscos de segurança da sua aplicação.
  2. Considere fazer ajustes para mitigar os riscos de segurança.
  3. Realize testes de segurança adequados ao seu exemplo de utilização.
  4. Solicitar feedback dos utilizadores e monitorizar o conteúdo.

Para saber mais, consulte as recomendações da Google para uma IA responsável.

Corpo do pedido

{
  "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 o artigo Crie comandos de texto.

Parâmetro Descrição Valores aceitáveis

content

Introdução de texto para gerar a resposta do modelo. Os comandos podem incluir preâmbulos, perguntas, sugestões, instruções ou exemplos. Texto

temperature

A temperatura é usada para a amostragem durante a geração de respostas, que ocorre quando topP e topK são aplicados. A temperatura controla o grau de aleatoriedade na seleção de tokens. As temperaturas mais baixas são adequadas para comandos que requerem uma resposta menos aberta ou criativa, enquanto as temperaturas mais altas podem gerar resultados mais diversos ou criativos. Uma temperatura de 0 significa que os tokens de probabilidade mais elevada são sempre selecionados. Neste caso, as respostas para um determinado comando são maioritariamente determinísticas, mas ainda é possível uma pequena variação.

Se o modelo devolver uma resposta demasiado genérica, demasiado curta ou uma resposta alternativa, experimente 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 aproximadamente quatro carateres. 100 tokens correspondem a aproximadamente 60 a 80 palavras.

Especifique um valor inferior para respostas mais curtas e um valor superior para respostas potencialmente mais longas.

1–8192 para medlm-medium

1–1024 para medlm-large

topK

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

Para cada passo de seleção de tokens, são amostrados os K principais tokens com as probabilidades mais elevadas. Em seguida, os tokens são filtrados com base no top-P, sendo o token final selecionado através da amostragem de temperatura.

Especifique um valor inferior para respostas menos aleatórias e um valor superior para respostas mais aleatórias.

1–40

Default: 40

topP

O Top-P altera a forma como o modelo seleciona tokens para a saída. Os tokens são selecionados do mais provável para o menos provável até que a soma das respetivas probabilidades seja igual ao valor de 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 seleciona A ou B como o token seguinte através da temperatura e exclui C como um candidato.

Especifique um valor inferior para respostas menos aleatórias e um valor superior para respostas mais aleatórias.

0.0–1.0

Default: 0.8

Exemplo de pedido

Quando usar a API MedLM, é importante incorporar a engenharia de comandos. Por exemplo, recomendamos vivamente que forneça instruções adequadas e específicas da tarefa no início de cada comando. Para mais informações, consulte o artigo Introdução aos comandos.

REST

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o seu 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 do pedido:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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

Em seguida, execute o seguinte comando para enviar o seu pedido 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

Guarde o corpo do pedido num ficheiro denominado request.json. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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

Em seguida, execute o seguinte comando para enviar o seu pedido 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 a apresentar das categorias de atributos de segurança associadas ao conteúdo gerado. A ordem corresponde às pontuações.
scores As pontuações de confiança de cada categoria. Um valor mais elevado significa uma confiança mais elevada.
blocked Uma flag que indica se a entrada ou a saída do modelo foi bloqueada.
errors Um código de erro que identifica o motivo pelo qual a entrada ou a saída foi bloqueada. Para ver uma lista de códigos de erro, consulte o artigo Filtros e atributos de segurança.
startIndex Índice na saída da previsão onde a citação começa (inclusive). Tem de ser igual ou superior a 0 e inferior a end_index.
endIndex Índice na saída da previsão onde a citação termina (exclusivo). Tem de ser superior a start_index e inferior a len(output).
url URL associado a esta citação. Se estiver presente, este URL direciona para a página Web da origem desta citação. Os URLs possíveis incluem Websites de notícias, repositórios do GitHub, etc.
title Título associado a esta citação. Se estiver presente, refere-se ao título da origem desta citação. Os possíveis títulos incluem títulos de notícias, títulos de livros, etc.
license Licença associada a esta recitação. Se estiver presente, refere-se à licença da origem desta citação. As licenças possíveis incluem licenças de código, como a licença MIT.
publicationDate Data de publicação associada a esta citação. Se estiver presente, refere-se à data em que a fonte desta citação foi publicada. Os formatos possíveis são AAAA, AAAA-MM e AAAA-MM-DD.
input_token_count Número de tokens de entrada. Este é o número total de tokens em todos os comandos, prefixos e sufixos.
output_token_count Número de tokens de saída. Este é o número total de tokens em content em todas as previsões.
tokens Os tokens de amostragem.
tokenLogProbs As probabilidades logarítmicas dos tokens amostrados.
topLogProb Os tokens candidatos mais prováveis e as respetivas probabilidades de registo em cada passo.
logprobs Resultados do parâmetro `logprobs`. Mapeamento 1-1 para `candidates`.

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