-
リアルタイムRAG構築メモアプリを作った話
AWS2024年の夏季休暇に学習をかねて1つアプリを作ろうと思い、リアルタイムRAG構築メモアプリを作りました。約1週間で朝活と隙間時間にChatGPTを駆使して学習しながらなんとか形にしました。 【リアルタイムRAG構築メモアプリとは?】 メモや日記は検索性が良くないと感じていました。そこで生成AIを使って検索できるメモアプリがあれば便利だと考えました。「2024年の夏休みは何してた?」のように自然言語で検索するとChatGPTのように要約して回答してくれるアプリです。これを実現するためにはユーザーが入力した... -
そもそもCORSとは? API GatewayでCORSに対応する方法を徹底解説!
AWSLambda関数を作り、API GatewayでRest APIを作成し、動作確認でOKだったのに、ローカル環境で開発中のシングルページアプリケーションから作成したRest APIを動かしたらCORSエラーで動かない。今回はAPI GatewayでCORSに対応する方法を解説します。 【CORSとは】 CORSはCross-Origin Resource Sharingの略です。異なるオリジン間でリソースをシェアする仕組みのことです。同一オリジンセキュリティポリシーは、既定でリソースへのオリジン間のアクセスを禁止しています。それを緩和するのがCORSです。 オリジンと... -
OpenAIで文字起こしをする方法2選
AIOpenAIを使って文字起こしをする方法はAPIとオープンソースバージョンの2つがあります。今回はそれぞれのやり方と違いについて解説します。 【文字起こしとは?】 文字通りですが、音声データを文字にすることです。議事録の作成であったり動画に字幕を付けたりするのに役立ちます。 【APIで文字起こし】 OpenAIのAPIを使って文字起こしをすることができます。OpenAIのAPIを使えるようにするには以下の記事を読んでください。 やり方 以下のようなコードで文字起こしすることができます。 from openai import Open... -
BedrockのS3ナレッジベースをメタデータでフィルタリングする方法
AWSBedrockのナレッジベースは1アカウントにつき50個までしか作成できません。ユーザー単位にナレッジベースを作成するような使い方はできません。1つのナレッジベースに複数のユーザーの情報を覚えさせようと思うとユーザー単位に問い合わせを行う必要があります。今回はその方法について解説します。 【Bedrockのナレッジベースとは】 BedrockはAWSから生成AIを呼び出すサービスです。生成AIでLLMが学習していない知識について回答させる場合、RAGを構築する必要があります。ナレッジベースはBedrockで簡単にRAGを... -
初めてnode.jsをインストールするならfnmで!
Knowledge先日初めてローカル環境にnode.jsをインストールしました。cloudshellやdockerなどだと最初からインストールされているのでローカル環境でnpm が動かないことが衝撃でした。公式のダウンロードページではfnm を使ったインストールが紹介されており、fnm が便利だったのでご紹介します。 【fnmとは】 fnmは複数のnode.jsのバージョンを管理するパッケージマネージャーです。例えばプロジェクトAではnode.jsのv19を使っており、新しく始まるプロジェクトBではnode.jsのv20を使うとします。手動でnode.jsをインストー... -
Unknown parameter in retrieveAndGenerateConfiguration: \\”retrievalConfiguration\\”, must be one of: externalSourcesConfiguration, knowledgeBaseConfiguration, typeの対処法
FixAmazon Bedrockのナレッジベースをメタデータでフィルターしようとした際にエラーが発生しました。その際にエラーメッセージで調査したのですが、全く関係ない対応方法に惑わされてしまいました。その経験をご紹介します。 【発生したエラー】 Lambda関数からAWSのPython SDKを使用してAmazon Bedrockのナレッジベースをメタデータでフィルターしようと以下のコードを実行したらエラーが発生しました。 # RAG実行 response = client.retrieve_and_generate( input={"text": conversation}, retrieveAndG... -
BedrockナレッジベースのS3データソース同期に失敗した時に読む話
AWSBedrockのナレッジベースをS3データソースで作成した際に同期に失敗しました。ある思い込みのために解決に時間がかかってしまいました。その時の対処方法を教訓とともに解説します。 【発生したエラー】 データソースに指定したS3にファイルを追加してデータソースの同期を行った際に以下のエラーが発生しました。 Encountered error: Access Denied (Service: S3, Status Code: 403, Request ID: hoge, Extended Request ID: foobar). Issue occurred while processing file: s3://my-bucket/user01/test.txt. Ca... -
Unable to import module ‘lambda_function’: No module named ‘pydantic_core._pydantic_core’の対処法
FixOpenAIのLambdaレイヤーを作成した際にレイヤーの構造は正しいのに上手く動かないという事象に遭遇しました。ローカルでは上手く動くのにLambdaレイヤーにすると動かないという困った事象について解説します。 2024/8/9に原因と対応方法を修正しました。 【発生したエラー】 OpenAIのLambdaレイヤーを作成してLambda関数を動かしたところ、以下のエラーが発生しました。 Response { "errorMessage": "Unable to import module 'lambda_function': No module named 'pydantic_core._pyd... -
Unable to import module ‘lambda_function’: No module named ‘openai’の対処法
FixLambdaでOpenAIのAPIを呼び出しました。しかし、何も設定していなかったため、以下のエラーが発生しました。Lambdaで外部ライブラリを使用できるように設定していなかったので当然ですよね。今回はLambdaで外部ライブラリを使用できるようにする設定について解説します。 Response { "errorMessage": "Unable to import module 'lambda_function': No module named 'openai'", "errorType": "Runtime.ImportModuleError", "requestId": "... -
Since this app includes more than a single stack, specify which stacks to use (wildcards are supported) or specify –all の対処法
FixGenUを削除する際、手順に書かれたコマンドを実行した際に以下のエラーが発生しました。手順通りにやって削除できなくて困ったので情報を共有しておきます。 Since this app includes more than a single stack, specify which stacks to use (wildcards are supported) or specify --allStacks: GenerativeAiUseCasesStack · GenerativeAiUseCasesDashboardStacknpm error Lifecycle script cdk failed with error:npm error code 1npm error path /home/ec2-user/environment/projects/generative-ai-use-cases-...