テキスト生成のために Amazon Bedrock で Mistral 7B モデルを呼び出す - AWS SDK コード例

Doc AWS SDK Examples リポジトリには、他にも SDK の例があります。 AWS GitHub

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

テキスト生成のために Amazon Bedrock で Mistral 7B モデルを呼び出す

次のコード例は、テキスト生成のために Amazon Bedrock で Mistral 7B モデルを呼び出す方法を示しています。

.NET
AWS SDK for .NET
注記

の詳細については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Mistral 7B 基盤モデルを非同期的に呼び出してテキストを生成します。

/// <summary> /// Asynchronously invokes the Mistral 7B model to run an inference based on the provided input. /// </summary> /// <param name="prompt">The prompt that you want Mistral 7B to complete.</param> /// <returns>The inference response from the model</returns> /// <remarks> /// The different model providers have individual request and response formats. /// For the format, ranges, and default values for Mistral 7B, refer to: /// https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-mistral.html /// </remarks> public static async Task<List<string?>> InvokeMistral7BAsync(string prompt) { string mistralModelId = "mistral.mistral-7b-instruct-v0:2"; AmazonBedrockRuntimeClient client = new(RegionEndpoint.USWest2); string payload = new JsonObject() { { "prompt", prompt }, { "max_tokens", 200 }, { "temperature", 0.5 } }.ToJsonString(); List<string?>? generatedText = null; try { InvokeModelResponse response = await client.InvokeModelAsync(new InvokeModelRequest() { ModelId = mistralModelId, Body = AWSSDKUtils.GenerateMemoryStreamFromString(payload), ContentType = "application/json", Accept = "application/json" }); if (response.HttpStatusCode == System.Net.HttpStatusCode.OK) { var results = JsonNode.ParseAsync(response.Body).Result?["outputs"]?.AsArray(); generatedText = results?.Select(x => x?["text"]?.GetValue<string?>())?.ToList(); } else { Console.WriteLine("InvokeModelAsync failed with status code " + response.HttpStatusCode); } } catch (AmazonBedrockRuntimeException e) { Console.WriteLine(e.Message); } return generatedText ?? []; }
  • API の詳細については、「 API リファレンスInvokeModel」の「」を参照してください。 AWS SDK for .NET

Java
SDK for Java 2.x
注記

の詳細については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Mistral 7B 基盤モデルを非同期的に呼び出してテキストを生成します。

/** * Asynchronously invokes the Mistral 7B model to run an inference based on the provided input. * * @param prompt The prompt for Mistral to complete. * @return The generated response. */ public static List<String> invokeMistral7B(String prompt) { BedrockRuntimeAsyncClient client = BedrockRuntimeAsyncClient.builder() .region(Region.US_WEST_2) .credentialsProvider(ProfileCredentialsProvider.create()) .build(); // Mistral instruct models provide optimal results when // embedding the prompt into the following template: String instruction = "<s>[INST] " + prompt + " [/INST]"; String modelId = "mistral.mistral-7b-instruct-v0:2"; String payload = new JSONObject() .put("prompt", instruction) .put("max_tokens", 200) .put("temperature", 0.5) .toString(); CompletableFuture<InvokeModelResponse> completableFuture = client.invokeModel(request -> request .accept("application/json") .contentType("application/json") .body(SdkBytes.fromUtf8String(payload)) .modelId(modelId)) .whenComplete((response, exception) -> { if (exception != null) { System.out.println("Model invocation failed: " + exception); } }); try { InvokeModelResponse response = completableFuture.get(); JSONObject responseBody = new JSONObject(response.body().asUtf8String()); JSONArray outputs = responseBody.getJSONArray("outputs"); return IntStream.range(0, outputs.length()) .mapToObj(i -> outputs.getJSONObject(i).getString("text")) .toList(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); System.err.println(e.getMessage()); } catch (ExecutionException e) { System.err.println(e.getMessage()); } return List.of(); }

Mistral 7B 基盤モデルを呼び出してテキストを生成します。

/** * Invokes the Mistral 7B model to run an inference based on the provided input. * * @param prompt The prompt for Mistral to complete. * @return The generated responses. */ public static List<String> invokeMistral7B(String prompt) { BedrockRuntimeClient client = BedrockRuntimeClient.builder() .region(Region.US_WEST_2) .credentialsProvider(ProfileCredentialsProvider.create()) .build(); // Mistral instruct models provide optimal results when // embedding the prompt into the following template: String instruction = "<s>[INST] " + prompt + " [/INST]"; String modelId = "mistral.mistral-7b-instruct-v0:2"; String payload = new JSONObject() .put("prompt", instruction) .put("max_tokens", 200) .put("temperature", 0.5) .toString(); InvokeModelResponse response = client.invokeModel(request -> request .accept("application/json") .contentType("application/json") .body(SdkBytes.fromUtf8String(payload)) .modelId(modelId)); JSONObject responseBody = new JSONObject(response.body().asUtf8String()); JSONArray outputs = responseBody.getJSONArray("outputs"); return IntStream.range(0, outputs.length()) .mapToObj(i -> outputs.getJSONObject(i).getString("text")) .toList(); }
  • API の詳細については、「 API リファレンスInvokeModel」の「」を参照してください。 AWS SDK for Java 2.x

JavaScript
SDK for JavaScript (v3)
注記

の詳細については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Mistral 7B 基盤モデルを呼び出してテキストを生成します。

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { fileURLToPath } from "url"; import { FoundationModels } from "../../config/foundation_models.js"; import { BedrockRuntimeClient, InvokeModelCommand, } from "@aws-sdk/client-bedrock-runtime"; /** * @typedef {Object} Output * @property {string} text * * @typedef {Object} ResponseBody * @property {Output[]} outputs */ /** * Invokes a Mistral 7B Instruct model. * * @param {string} prompt - The input text prompt for the model to complete. * @param {string} [modelId] - The ID of the model to use. Defaults to "mistral.mistral-7b-instruct-v0:2". */ export const invokeModel = async ( prompt, modelId = "mistral.mistral-7b-instruct-v0:2", ) => { // Create a new Bedrock Runtime client instance. const client = new BedrockRuntimeClient({ region: "us-east-1" }); // Mistral instruct models provide optimal results when embedding // the prompt into the following template: const instruction = `<s>[INST] ${prompt} [/INST]`; // Prepare the payload. const payload = { prompt: instruction, max_tokens: 500, temperature: 0.5, }; // Invoke the model with the payload and wait for the response. const command = new InvokeModelCommand({ contentType: "application/json", body: JSON.stringify(payload), modelId, }); const apiResponse = await client.send(command); // Decode and return the response. const decodedResponseBody = new TextDecoder().decode(apiResponse.body); /** @type {ResponseBody} */ const responseBody = JSON.parse(decodedResponseBody); return responseBody.outputs[0].text; }; // Invoke the function if this file was run directly. if (process.argv[1] === fileURLToPath(import.meta.url)) { const prompt = 'Complete the following in one sentence: "Once upon a time..."'; const modelId = FoundationModels.MISTRAL_7B.modelId; console.log(`Prompt: ${prompt}`); console.log(`Model ID: ${modelId}`); try { console.log("-".repeat(53)); const response = await invokeModel(prompt, modelId); console.log(response); } catch (err) { console.log(err); } }
  • API の詳細については、「 API リファレンスInvokeModel」の「」を参照してください。 AWS SDK for JavaScript

Python
SDK for Python (Boto3)
注記

の詳細については、「」を参照してください GitHub。AWS コード例リポジトリ で全く同じ例を見つけて、設定と実行の方法を確認してください。

Mistral 7B 基盤モデルを呼び出してテキストを生成します。

def invoke_mistral_7b(self, prompt): """ Invokes the Mistral 7B model to run an inference using the input provided in the request body. :param prompt: The prompt that you want Mistral to complete. :return: List of inference responses from the model. """ try: # Mistral instruct models provide optimal results when # embedding the prompt into the following template: instruction = f"<s>[INST] {prompt} [/INST]" model_id = "mistral.mistral-7b-instruct-v0:2" body = { "prompt": instruction, "max_tokens": 200, "temperature": 0.5, } response = self.bedrock_runtime_client.invoke_model( modelId=model_id, body=json.dumps(body) ) response_body = json.loads(response["body"].read()) outputs = response_body.get("outputs") completions = [output["text"] for output in outputs] return completions except ClientError: logger.error("Couldn't invoke Mistral 7B") raise
  • API の詳細については、InvokeModelAWS 「 SDK for Python (Boto3) API リファレンス」の「」を参照してください。