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
.
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.
Práticas recomendadas
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:
- Avalie os riscos de segurança da sua aplicação.
- Considere fazer ajustes para mitigar os riscos de segurança.
- Realize testes de segurança adequados ao seu exemplo de utilização.
- 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 |
---|---|---|
|
Introdução de texto para gerar a resposta do modelo. Os comandos podem incluir preâmbulos, perguntas, sugestões, instruções ou exemplos. | Texto |
|
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. |
|
|
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. |
|
|
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. |
|
|
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. |
|
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
oumedlm-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
}
}
}
}