aws-samples / generative-ai-use-cases-jp

すぐに業務活用できるビジネスユースケース集付きの安全な生成AIアプリ実装
MIT No Attribution
610 stars 113 forks source link

Bedrockのモデルをamazon.titan-text-premierに変えるとmaximum tokensエラーが発生する #594

Closed beex-okamura closed 2 weeks ago

beex-okamura commented 1 month ago

お世話になります。 現在こちらのアプケーションのモデルを、費用の関係からデフォルトの anthropic.claude-3-sonnet-20240229-v1:0 から amazon.titan-text-premier-v1:0 に変更して動作確認を行なっております。

amazon-bedrock-のモデルを変更する

ドキュメントではtitan-text-premierもサポートされているように記載されておりましたが、モデルを変更後にチャット機能を使用するとAPIPredictTitle Lambdaから ValidationException: The maximum tokens you requested exceeds the model limit of 3000. Try again with a maximum tokens value that is lower than 3000.エラーが出力されておりました。

以下CloudWatchLogs上のエラー行になります。

2024-08-06T05:27:38.955Z    da1e0b96-f823-4571-8003-1eeb8bba6a34    INFO    ValidationException: The maximum tokens you requested exceeds the model limit of 3000. Try again with a maximum tokens value that is lower than 3000.
    at de_ValidationExceptionRes (/var/task/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/index.js:1195:21)
    at de_CommandError (/var/task/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/index.js:1028:19)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async /var/task/node_modules/@smithy/middleware-serde/dist-cjs/index.js:35:20
    at async /var/task/node_modules/@smithy/core/dist-cjs/index.js:165:18
    at async /var/task/node_modules/@smithy/middleware-retry/dist-cjs/index.js:320:38
    at async /var/task/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js:34:22
    at async Object.invoke (/var/task/index.js:649:20)
    at async Runtime.handler (/var/task/index.js:967:20) {
  '$fault': 'client',
  '$metadata': {
    httpStatusCode: 400,
    requestId: '7ce7b43c-b9e6-4ca0-acf1-1a8207ca5b41',
    extendedRequestId: undefined,
    cfId: undefined,
    attempts: 1,
    totalRetryDelay: 0
  }
}

調査したところ、TITAN_TEXT_DEFAULT_PARAMS .maxTokensサイズが3,072となっており、3,000に変更したところエラーは解消されました。 https://github.com/aws-samples/generative-ai-use-cases-jp/blob/3bb823c920d553b0791f68b48406ac59d39eae4b/packages/cdk/lambda/utils/models.ts#L82

こちらは正しい修正ではないと考えておりますが、正しい値、もしくはcdkにて回避可能なのかご教授頂けますでしょうか? https://aws.amazon.com/jp/bedrock/titan/#:~:text=モデルバージョン-,Amazon%20Titan%20Text%20Premier,-Amazon%20Titan%20Text

kazuhitogo commented 1 month ago

ご利用ありがとうございます。 開発者ドキュメントを読む限り 3072 でただしそうなのですが、私のほうでも同様のエラーを再現しました。 確認しますので少々お待ち下さい。 https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-text.html

kazuhitogo commented 1 month ago

P.S. 急ぎであれば、そこを3000になおしてしまって動かすのでOKです。 リポジトリ側の修正は少々お待ち下さい、の意図です。

kazuhitogo commented 1 month ago

メモ: invoke_modelは 3072 でも動くが converse だと 3000じゃないと動かない

beex-okamura commented 1 month ago

ご確認いただきありがとうございます。 承知しました。当面3000に変更して動かします。

kazuhitogo commented 2 weeks ago

こちら、動きがなかったのでソリューション側でも一旦 3000 におとしました。 https://github.com/aws-samples/generative-ai-use-cases-jp/pull/634 Converse API でも 3072 が受け付けられるようになったら戻します。