MedLM

MedLM 是面向医疗保健行业微调的一系列基础模型。 Med-PaLM 2 是 Google Research 开发的基于文本的模型,是支持 MedLM 的文本模型之一,是首个在解答医学许可检查 (USMLE) 类问题方面达到美国专家专家水平的 AI 系统。 这些模型的发展取决于特定的客户需求,例如回答医学问题和草拟综述。

MedLM 模型卡片

MedLM 模型卡片概述了模型详情,例如 MedLM 的预期用途、数据概览和安全信息。点击以下链接可下载 MedLM 模型卡片的 PDF 版本:

下载 MedLM 模型卡片

使用场景

  • 问答:以文本的形式提供医学相关问题的回答草稿。
  • 汇总:草拟一个包含原始文本中相关信息的简短文档版本(例如访视后总结或病例和身体检查记录)。

如需详细了解如何设计文本提示,请参阅设计文本提示

HTTP 请求

MedLM-medium (medlm-medium)

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

MedLM-large (medlm-large)

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

如需了解详情,请参阅 predict 方法。

模型版本

MedLM 提供以下模型:

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

下表包含可用的稳定模型版本:

medlm-medium 模型 发布日期
medlm-medium 2023 年 12 月 13 日
medlm-large 模型 发布日期
medlm-large 2023 年 12 月 13 日

MedLM-medium 和 MedLM-large 具有单独的端点,为客户提供了更大的应用场景灵活性。MedLM-medium 为客户提供更高的吞吐量,并包含最新的数据。MedLM-large 是与预览阶段相同的模型。这两个模型在产品生命周期内将继续刷新。在本页面中,“MedLM”指的是这两个模型。

如需了解详情,请参阅模型版本和生命周期

MedLM 安全过滤器和属性

系统会通过一系列安全属性(包括“有害类别”和可能被视为敏感数据的主题)对通过 MedLM API 处理的内容进行评估。如果您看到后备回复,例如“我无法提供帮助,因为我只是语言模型”,则表示提示或回复触发了安全过滤器。

安全阈值

使用 Vertex AI Studio 时,您可以使用可调整的安全过滤器阈值来确定出现可能有害的回答的可能性。模型响应会因包含骚扰、仇恨言论、危险内容或露骨色情内容的可能性而被屏蔽。安全过滤器设置位于 Vertex AI Studio 中提示框的右侧。您可以从三个选项中进行选择:block mostblock someblock few

控制台图片

测试置信度和严重程度阈值

您可以测试 Google 的安全过滤器,并定义适合您的企业的置信度阈值。通过使用这些阈值,您可以采取全面的措施来检测违反 Google 使用政策或服务条款的内容,并采取适当的措施。

置信度得分只是预测值,您不应依赖得分来获取可靠性或准确性。Google 不负责解读或使用这些得分来做出业务决策。

要安全、负责任地使用这项技术,除了考虑内置的技术保障措施外,还必须考虑应用场景、用户和业务环境的其他特定风险。

我们建议您采取以下步骤:

  1. 评估应用的安全风险。
  2. 考虑进行调整,以降低安全风险。
  3. 执行适合您的应用场景的安全测试。
  4. 收集用户反馈并监控内容。

如需了解详情,请参阅 Google 的 Responsible AI 建议。

请求正文

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

medlm-mediummedlm-large 模型使用以下参数。如需了解详情,请参阅设计文本提示

参数 说明 可接受的值

content

用于生成模型响应的文本输入。提示可能包括序言、问题、建议、说明或示例。 文本

temperature

温度 (temperature) 在生成回复期间用于采样,在应用 topPtopK 时会生成回复。温度可以控制词元选择的随机性。 较低的温度有利于需要更少开放性或创造性回复的提示,而较高的温度可以带来更具多样性或创造性的结果。温度为 0 表示始终选择概率最高的词元。在这种情况下,给定提示的回复大多是确定的,但可能仍然有少量变化。

如果模型返回的回答过于笼统、过于简短,或者模型给出后备回复,请尝试提高温度。

0.0–1.0

Default: 0.2

maxOutputTokens

回复中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。

指定较低的值可获得较短的回复,指定较高的值可获得可能较长的回复。

1–8192 表示 medlm-medium

1–1024 表示 medlm-large

topK

Top-K 可更改模型选择输出词元的方式。如果 top-K 设为 1,表示所选词元是模型词汇表的所有词元中概率最高的词元(也称为贪心解码)。如果 top-K 设为 3,则表示系统将从 3 个概率最高的词元(通过温度确定)中选择下一个词元。

在每个词元选择步骤中,系统都会对概率最高的 top-K 词元进行采样。然后,系统会根据 top-P 进一步过滤词元,并使用温度采样选择最终的词元。

指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。

1–40

Default: 40

topP

Top-P 可更改模型选择输出词元的方式。系统会按照概率从最高(见 top-K)到最低的顺序选择词元,直到所选词元的概率总和等于 top-P 的值。例如,如果词元 A、B 和 C 的概率分别为 0.3、0.2 和 0.1,并且 top-P 值为 0.5,则模型将选择 A 或 B 作为下一个词元(通过温度确定),并会排除 C,将其作为候选词元。

指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。

0.0–1.0

Default: 0.8

示例请求

使用 MedLM API 时,请务必结合提示工程。 例如,我们强烈建议您在每个提示开头提供特定于任务的适当说明。如需了解详情,请参阅提示设计简介

REST

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的项目 ID
  • MEDLM_MODEL:MedLM 模型,medlm-mediummedlm-large

HTTP 方法和网址:

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

请求 JSON 正文:

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

如需发送请求,请选择以下方式之一:

curl

将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

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

然后,执行以下命令以发送 REST 请求:

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

PowerShell

将请求正文保存在名为 request.json 的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:

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

然后,执行以下命令以发送 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 "http://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MEDLM_MODEL:predict" | Select-Object -Expand Content
 

响应正文

{
  "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
      }
    }
  }
}
响应元素 说明
content 根据输入文本生成的结果。
categories 与所生成内容关联的“安全属性”类别的显示名称。顺序与得分匹配。
scores 每个类别的置信度分数越高,表示置信度越高。
blocked 用于指示模型的输入或输出是否已被阻止的一个标志。
errors 确定输入或输出被阻止的原因的错误代码。如需查看错误代码列表,请参阅安全过滤器和属性
startIndex 预测输出中引用开始位置的索引(含边界值)。必须大于或等于 0 且小于 end_index
endIndex 预测输出中引用结束位置的索引(不含边界值)。必须大于 start_index 且小于 len(output)
url 与此引用关联的网址。如果存在,此网址会链接到此引用来源的网页。可能的网址包括新闻网站、GitHub 代码库等。
title 与此引用关联的标题。如果存在,则引用此引用来源的标题。可能的标题包括新闻标题、书名等。
license 与此引用关联的许可。如果存在,则引用此引用来源的许可。可能的许可包括代码许可,例如 MIT 许可。
publicationDate 与此引用关联的发布日期。如果存在,则引用此引用来源的发布日期。可能的格式为 YYYY、YYYY-MM、YYYY-MM-DD。
input_token_count 输入词元数。这是所有提示、前缀和后缀中的词元总数。
output_token_count 输出词元数。这是所有预测中 content 中的词元总数。
tokens 采样词元。
tokenLogProbs 采样词元的对数概率。
topLogProb 每个步骤中最可能的候选词元及其对数概率。
logprobs “logprobs”参数的结果。1-1 映射到“候选”。

示例响应

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

流式传输来自生成式 AI 模型的响应

对于 API 的流式传输请求和非流式传输请求,这些参数是相同的。

如需使用 REST API 查看示例代码请求和响应,请参阅使用 REST API 的示例

如需使用 Python 版 Vertex AI SDK 查看示例代码请求和响应,请参阅使用 Python 版 Vertex AI SDK 的示例