使用 API 調用具有單一提示的模型 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 API 調用具有單一提示的模型

透過傳送InvokeModelInvokeModelWithResponseStream請求,透過 API 在模型上執行推論。您可以在 contentTypeaccept 欄位中指定請求和回應內文的媒體類型。如未指定值,這兩個欄位的預設值為 application/json

除模型以外的所有文字輸出模AI21 LabsJurassic-2型均支援串流。要檢查模型是否支持流式傳輸,請發送GetFoundationModelListFoundationModels請求並檢查responseStreamingSupported字段中的值。

根據您使用的模型,指定下列欄位。

  1. modelId — 使用模型 ID 或其 ARN。尋找modelId或的方法modelArn取決於您使用的模型類型:

    • 基本模型 — 執行下列其中一項操作。

      • 若要查看 Amazon Bedrock 支援的所有基本模型的模型 ID 清單,請參閱 Amazon 基本模型 ID (隨需輸送量)

      • 傳送ListFoundationModels要求並尋找要在回應中使用的模型modelIdmodelArn

      • 在主控台中,選取提供者中的模型,然後在 API 請求範例中尋找 modelId

    • 自訂模型 — 購買自訂模型的佈建輸送量 (如需詳細資訊,請參閱Amazon 基岩的佈建輸送量),並尋找已佈建模型的模型 ID 或 ARN。

    • 佈建的模型 — 如果您已為基本或自訂模型建立佈建的輸送量,請執行下列其中一項操作。

      • 發送ListProvisionedModelThroughputs請求並找到要在響應中使用provisionedModelArn的模型。

      • 在主控台中,選取佈建輸送量中的模型,然後在模型詳細資料區段中找到模型 ARN。

  2. body – 每個基本模型都有自己的推論參數,而這些是您在 body 欄位中設定的參數。自訂或佈建的模型的推論參數為何,取決於建立該參數的基本模型。如需詳細資訊,請參閱 基礎模型的推論參數

調用模型程式碼範例

下列範例顯示如何使用 InvokeModelAPI 執行推論。如需具有不同模型的範例,請參閱所需模型 (基礎模型的推論參數) 的推論參數參考。

CLI

下面的例子保存兩個狗的提示故事生成的響應到一個名為 invoke-model-output.txt 的文件。

aws bedrock-runtime invoke-model \ --model-id anthropic.claude-v2 \ --body '{"prompt": "\n\nHuman: story of two dogs\n\nAssistant:", "max_tokens_to_sample" : 300}' \ --cli-binary-format raw-in-base64-out \ invoke-model-output.txt
Python

以下範例傳回對提示對 8 年級學生解釋黑洞產生的回應。

import boto3 import json brt = boto3.client(service_name='bedrock-runtime') body = json.dumps({ "prompt": "\n\nHuman: explain black holes to 8th graders\n\nAssistant:", "max_tokens_to_sample": 300, "temperature": 0.1, "top_p": 0.9, }) modelId = 'anthropic.claude-v2' accept = 'application/json' contentType = 'application/json' response = brt.invoke_model(body=body, modelId=modelId, accept=accept, contentType=contentType) response_body = json.loads(response.get('body').read()) # text print(response_body.get('completion'))

使用串流程式碼範例調用模型

注意

AWS CLI 不支援串流。

以下示例演示瞭如何使用 InvokeModelWithResponseStreamAPI 使用 Python 生成流文本,使用提示編寫 1000 字在火星上生活的文章。

import boto3 import json brt = boto3.client(service_name='bedrock-runtime') body = json.dumps({ 'prompt': '\n\nHuman: write an essay for living on mars in 1000 words\n\nAssistant:', 'max_tokens_to_sample': 4000 }) response = brt.invoke_model_with_response_stream( modelId='anthropic.claude-v2', body=body ) stream = response.get('body') if stream: for event in stream: chunk = event.get('chunk') if chunk: print(json.loads(chunk.get('bytes').decode()))