API MedLM

MedLM è una famiglia di modelli di base ottimizzati per il settore sanitario. Med-PaLM 2 è uno dei modelli basati su testo sviluppati da Google Research che alimentano MedLM ed è stato il primo sistema di AI a raggiungere il livello di un esperto umano nel rispondere a domande in stile USMLE (United States Medical Licensing Examination). Lo sviluppo di questi modelli è stato influenzato da esigenze specifiche dei clienti, come rispondere a domande mediche e redigere riepiloghi.

Scheda del modello MedLM

La scheda del modello MedLM descrive in dettaglio il modello, ad esempio l'utilizzo previsto di MedLM, la panoramica dei dati e le informazioni sulla sicurezza. Fai clic sul seguente link per scaricare una versione PDF della scheda del modello MedLM:

Scarica la scheda del modello MedLM

Casi d'uso

  • Risposta alle domande: fornisce bozze di risposte a domande di carattere medico, sotto forma di testo.
  • Riepilogo: crea una versione più breve di un documento (ad esempio un riepilogo dopo la visita o una nota sulla storia clinica e sull'esame fisico) che incorpori le informazioni pertinenti del testo originale.

Per ulteriori informazioni sulla progettazione dei prompt di testo, consulta la panoramica delle strategie di prompt.

Richiesta 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

Per saperne di più, consulta il metodo predict.

Versioni modello

MedLM fornisce i seguenti modelli:

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

La tabella seguente contiene le versioni del modello stabile disponibili:

modello medlm-medium Data di uscita
medlm-medium 13 dicembre 2023
Modello medlm-large Data di uscita
medlm-large 13 dicembre 2023

MedLM-medium e MedLM-large hanno endpoint separati e offrono ai clienti una maggiore flessibilità per i loro casi d'uso. MedLM-medium offre ai clienti un throughput migliore e include dati più recenti. MedLM-large è lo stesso modello della fase di anteprima. Entrambi i modelli continueranno a essere aggiornati durante il ciclo di vita del prodotto. In questa pagina, "MedLM" si riferisce a entrambi i modelli.

Per saperne di più, consulta Versioni e ciclo di vita del modello.

Attributi e filtri di sicurezza di MedLM

I contenuti elaborati tramite l'API MedLM vengono valutati in base a un elenco di attributi di sicurezza, tra cui "categorie dannose" e argomenti potenzialmente considerati sensibili. Se visualizzi una risposta di riserva, ad esempio "Non posso aiutarti con questa richiesta perché sono solo un modello linguistico", significa che il prompt o la risposta attivano un filtro di sicurezza.

Soglie di sicurezza

Quando utilizzi Vertex AI Studio, puoi utilizzare una soglia di filtro di sicurezza regolabile per determinare la probabilità di visualizzare risposte potenzialmente dannose. Le risposte del modello vengono bloccate in base alla probabilità di contenere molestie, incitamento all'odio, contenuti pericolosi o sessualmente espliciti. L'impostazione del filtro di sicurezza si trova sul lato destro del campo del prompt in Vertex AI Studio. Puoi scegliere tra tre opzioni: block most, block some e block few.

Console-image

Testare le soglie di confidenza e gravità

Puoi testare i filtri per la sicurezza di Google e definire le soglie di affidabilità adatte alla tua attività. Utilizzando queste soglie, puoi adottare misure complete per rilevare i contenuti che violano i termini di servizio o le norme di utilizzo di Google e intraprendere le azioni appropriate.

I punteggi di confidenza sono solo previsioni e non devi fare affidamento su di essi per affidabilità o accuratezza. Google non è responsabile dell'interpretazione o dell'utilizzo di questi punteggi per le decisioni aziendali.

Per utilizzare questa tecnologia in modo sicuro e responsabile, è importante considerare altri rischi specifici per il tuo caso d'uso, i tuoi utenti e il contesto aziendale oltre alle misure di salvaguardia tecniche integrate.

Ti consigliamo di procedere nel seguente modo:

  1. Valuta i rischi per la sicurezza della tua applicazione.
  2. Valuta la possibilità di apportare modifiche per ridurre i rischi per la sicurezza.
  3. Esegui test di sicurezza appropriati al tuo caso d'uso.
  4. Richiedi il feedback degli utenti e monitora i contenuti.

Per saperne di più, consulta i consigli di Google per l'AI responsabile.

Corpo della richiesta

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

Utilizza i seguenti parametri per i modelli medlm-medium e medlm-large. Per saperne di più, vedi Progettare prompt di testo.

Parametro Descrizione Valori accettati

content

Input di testo per generare la risposta del modello. I prompt possono includere preamboli, domande, suggerimenti, istruzioni o esempi. Testo

temperature

La temperatura viene utilizzata per il campionamento durante la generazione della risposta, che si verifica quando vengono applicati topP e topK. La temperatura controlla il grado di casualità nella selezione dei token. Le temperature basse sono ideali per prompt che richiedono risposte meno aperte o creative, mentre le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a 0 indica che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a un determinato prompt sono per lo più deterministiche, ma è comunque possibile una piccola variazione.

Se il modello restituisce una risposta troppo generica, troppo breve o fornisce una risposta di riserva, prova ad aumentare la temperatura.

0.0–1.0

Default: 0.2

maxOutputTokens

Il numero massimo di token che possono essere generati nella risposta. Un token equivale a circa quattro caratteri. 100 token corrispondono a circa 60-80 parole.

Specifica un valore più basso per risposte più brevi e un valore più alto per risposte potenzialmente più lunghe.

1–8192 per medlm-medium

1–1024 per medlm-large

topK

Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K pari a 1 indica che il token successivo selezionato è il più probabile tra tutti i token nel vocabolario del modello (chiamato anche decodifica greedy). Un top-K pari a 3 indica, invece, che il token successivo viene selezionato tra i tre token più probabili (utilizzando la temperatura).

Per ogni fase di selezione dei token, vengono campionati i token Top-K con le probabilità più alte. Quindi i token vengono ulteriormente filtrati in base a top-P e il token finale viene selezionato utilizzando il campionamento con temperatura.

Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali.

1–40

Default: 40

topP

Top-P cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dal più probabile al meno probabile finché la somma delle loro probabilità non corrisponde al valore di Top-P. Ad esempio, se i token A, B e C hanno una probabilità di 0,3, 0,2 e 0,1 e il valore di top-P è 0.5, il modello seleziona A o B come token successivo utilizzando la temperatura ed esclude C come candidato.

Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali.

0.0–1.0

Default: 0.8

Richiesta di esempio

Quando utilizzi l'API MedLM, è importante incorporare l'ingegneria dei prompt. Ad esempio, ti consigliamo vivamente di fornire istruzioni appropriate e specifiche per l'attività all'inizio di ogni prompt. Per ulteriori informazioni, consulta Introduzione ai prompt.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: il tuo ID progetto
  • MEDLM_MODEL: il modello MedLM, medlm-medium o medlm-large.

Metodo 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 della richiesta:

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

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

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

Quindi esegui questo comando per inviare la richiesta 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

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

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

Quindi esegui questo comando per inviare la richiesta 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 della risposta

{
  "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 di risposta Descrizione
content Il risultato generato dal testo inserito.
categories I nomi visualizzati delle categorie di attributi di sicurezza associati ai contenuti generati. L'ordine corrisponde ai punteggi.
scores I punteggi di confidenza di ogni categoria. Un valore più alto indica una confidenza maggiore.
blocked Un flag che indica se l'input o l'output del modello è stato bloccato.
errors Un codice di errore che identifica il motivo per cui l'input o l'output è stato bloccato. Per un elenco dei codici di errore, consulta Filtri e attributi di sicurezza.
startIndex Indice nell'output della previsione in cui inizia la citazione (incluso). Deve essere maggiore o uguale a 0 e inferiore a end_index.
endIndex Indice nell'output di previsione in cui termina la citazione (esclusivo). Deve essere maggiore di start_index e inferiore a len(output).
url L'URL associato a questa citazione. Se presente, questo URL rimanda alla pagina web della fonte di questa citazione. I possibili URL includono siti web di notizie, repository GitHub e così via.
title Il titolo associato a questa citazione. Se presente, si riferisce al titolo della fonte di questa citazione. I titoli possibili includono titoli di notizie, titoli di libri e così via.
license Licenza associata a questa recitazione. Se presente, si riferisce alla licenza della fonte di questa citazione. Le licenze possibili includono licenze di codice, come la licenza MIT.
publicationDate La data di pubblicazione associata a questa citazione. Se presente, si riferisce alla data di pubblicazione della fonte di questa citazione. I formati possibili sono AAAA, AAAA-MM, AAAA-MM-GG.
input_token_count Numero di token di input. Questo è il numero totale di token in tutti i prompt, i prefissi e i suffissi.
output_token_count Numero di token di output. Questo è il numero totale di token in content in tutte le previsioni.
tokens I token campionati.
tokenLogProbs Le probabilità logaritmiche dei token campionati.
topLogProb I token candidati più probabili e le relative probabilità logaritmiche a ogni passaggio.
logprobs Risultati del parametro `logprobs`. Mappatura 1:1 a "candidates".

Esempio di risposta

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