Repository: google-cloud-japan/next-tokyo-assets
Pull request #41: Promote vertexai.preview to GA, Gemini 1.5-flash to 2.0-flash
Author: login: tyorikan
Created: 2025-03-28T06:58:36Z | Merged: 2025-03-31T08:57:17Z

1. This pull request updates the Gemini model used from `1.5-flash` to `2.0-flash`.
2. Minor adjustments have been made to the prompts to ensure optimal response with the new model.
3. Additionally, it promotes the `vertexai.preview.rag` module to `vertexai.rag`, which involves necessary code modifications to address the resulting breaking changes.


Diff:
diff --git a/2024/genai-app-patterns/scripts/firebase_config.sh b/2024/genai-app-patterns/scripts/firebase_config.sh
index a5984a2..27d9a4f 100755
--- a/2024/genai-app-patterns/scripts/firebase_config.sh
+++ b/2024/genai-app-patterns/scripts/firebase_config.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-APP_ID=$(firebase -j apps:list -P $GOOGLE_CLOUD_PROJECT | jq '.result[] | select(.displayName == "streamchat")' | jq -r '.appId')
+APP_ID=$(firebase -j apps:list -P $GOOGLE_CLOUD_PROJECT | jq '.result[] | select(.displayName == "ai-organizer")' | jq -r '.appId')
 TMP_FILE=firebaseConfig.json
 ENV_PATH=./src/knowledge-drive
 
diff --git a/2024/genai-app-patterns/src/genai-backend/main.py b/2024/genai-app-patterns/src/genai-backend/main.py
index 99f288f..fe2f264 100644
--- a/2024/genai-app-patterns/src/genai-backend/main.py
+++ b/2024/genai-app-patterns/src/genai-backend/main.py
@@ -6,9 +6,14 @@
 from flask import Flask, request
 from google.cloud import firestore, storage
 from tenacity import retry, wait_exponential
-from vertexai.generative_models import Content, GenerationConfig, Part
-from vertexai.preview import rag
-from vertexai.preview.generative_models import GenerativeModel, Tool
+from vertexai import rag
+from vertexai.generative_models import (
+    Content,
+    GenerationConfig,
+    GenerativeModel,
+    Part,
+    Tool,
+)
 
 # Logging config
 dictConfig({
@@ -34,12 +39,12 @@
 PROJECT_ID = ""
 VERTEX_AI_LOCATION = ""
 PUBLISHER_MODEL = "publishers/google/models/text-multilingual-embedding-002"
-GENERATIVE_MODEL_NAME = "gemini-1.5-flash-001"
+GENERATIVE_MODEL_NAME = "gemini-2.0-flash-001"
 RAG_CHUNK_SIZE = 512
 RAG_CHUNK_OVERLAP = 100
 RAG_MAX_EMBEDDING_REQUESTS_PER_MIN = 900
 RAG_SIMILARITY_TOP_K = 3
-RAG_VECTOR_DISTANCE_THRESHOLD = 0.5
+RAG_VECTOR_SIMILARITY_THRESHOLD = 0.5
 QUESTION_FAILED_MESSAGE = "申し訳ございません。回答の生成に失敗しました。再度質問をやり直してください。"
 MAX_SUMMARIZATION_LENGTH = 2048
 MAX_TOTAL_COMMON_QUESTIONS_LENGTH = 1024
@@ -66,11 +71,16 @@
 # Retry with exponential backoff since only one file can be imported at the same time
 @retry(wait=wait_exponential(multiplier=5, max=40))
 def import_files(corpus_name, gcs_path):
+    transformation_config = rag.TransformationConfig(
+        chunking_config=rag.ChunkingConfig(
+            chunk_size=RAG_CHUNK_SIZE,
+            chunk_overlap=RAG_CHUNK_OVERLAP,
+        )
+    )
     return rag.import_files(
         corpus_name,
-        [gcs_path],
-        chunk_size=RAG_CHUNK_SIZE,
-        chunk_overlap=RAG_CHUNK_OVERLAP,
+        paths=[gcs_path],
+        transformation_config=transformation_config,
         max_embedding_requests_per_min=RAG_MAX_EMBEDDING_REQUESTS_PER_MIN,
     )
 
@@ -84,14 +94,16 @@ def add_user():
 
     app.logger.info(f"{event_id}: start adding a user: {uid}")
 
-    embedding_model_config = rag.EmbeddingModelConfig(
-        publisher_model=PUBLISHER_MODEL
-    )
-
     app.logger.info(f"{event_id}: start creating a rag corpus for a user: {uid}")
+
+    backend_config = rag.RagVectorDbConfig(
+        rag_embedding_model_config = rag.RagEmbeddingModelConfig(
+            rag.VertexPredictionEndpoint(publisher_model=PUBLISHER_MODEL)
+        )
+    )
     rag_corpus = rag.create_corpus(
         display_name=uid,
-        embedding_model_config=embedding_model_config,
+        backend_config=backend_config
     )
     app.logger.info(f"{event_id}: finished creating a rag corpus for a user: {uid}")
     
@@ -125,15 +137,18 @@ def add_source():
 
     app.logger.info(f"{event_id}: start importing a source file: {name}")
     response = import_files(corpus_name, gcs_path)
-    app.logger.info(f"{event_id}: finished importing a source file: {response}")
+    app.logger.info(f"{event_id}: finished importing a source file: {response.imported_rag_files_count} files are imported")
 
     app.logger.info(f"{event_id}: start finding rag_file_id: {name}")
-    rag_files = rag.list_files(corpus_name=corpus_name)
+    rag_files = list(rag.list_files(corpus_name=corpus_name))
     rag_file_name = ""
     filename = storagePath.split('/')[-1]
     for rag_file in rag_files:
         if rag_file.display_name == filename:
             rag_file_name = rag_file.name
+    if not rag_file_name:
+        app.logger.error(f"{event_id}: rag_file_name not found for {filename}")
+        return ("failed", 500)
     rag_file_id = rag_file_name.split('/')[-1]
     app.logger.info(f"{event_id}: found rag_file_id: {rag_file_id}")
 
@@ -183,8 +198,10 @@ def question():
                         rag_file_ids=source_ids
                     )
                 ],
-                similarity_top_k=RAG_SIMILARITY_TOP_K,
-                vector_distance_threshold=RAG_VECTOR_DISTANCE_THRESHOLD,
+                rag_retrieval_config= rag.RagRetrievalConfig(
+                    top_k=RAG_SIMILARITY_TOP_K, 
+                    filter=rag.Filter(vector_similarity_threshold=RAG_VECTOR_SIMILARITY_THRESHOLD)
+                )
             ),
         )
     )
@@ -249,7 +266,7 @@ def update_source():
     rag_file = f"{corpus_name}/ragFiles/{rag_file_id}"
 
     app.logger.info(f"{event_id}: start deleting a rag file: {rag_file}")
-    rag.delete_file(rag_file)
+    rag.delete_file(rag_file, corpus_name=corpus_name)
     app.logger.info(f"{event_id}: finished deleting a rag file: {rag_file}")
 
     storage_client = storage.Client()
@@ -341,9 +358,11 @@ def generate_common_questions():
 
     prompt = """You are an AI assistant.
 
-    I want you to propose up to 5 common, simple questions based on the content.
-    Output the result in Japanese and print per question per line.
-    Each question should be one sentence and up to 30 characters long."""
+Propose up to 5 common questions based on the content, adhering to the following constraints:
+- The questions should be general and based on the PDF content.
+- Do not include any unnecessary prefixes or suffixes in the response (e.g., "Yes, I understand.").
+- Output the results in Japanese, with each question on a new line.
+- Each question should be a single sentence and no more than 30 characters long."""
 
     questions = []
     raw_questions = []
@@ -374,4 +393,3 @@ def generate_common_questions():
 
 if __name__ == "__main__":
     app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
-
diff --git a/2024/genai-app-patterns/src/genai-backend/requirements.txt b/2024/genai-app-patterns/src/genai-backend/requirements.txt
index a2ce746..a290d45 100644
--- a/2024/genai-app-patterns/src/genai-backend/requirements.txt
+++ b/2024/genai-app-patterns/src/genai-backend/requirements.txt
@@ -1,8 +1,7 @@
-Flask==3.0.3
-gunicorn==22.0.0
-cloudevents==1.10.1
-google-cloud-firestore==2.11.1
-google-cloud-aiplatform==1.59.0
-google-cloud-storage==2.17.0
+Flask==3.1.0
+gunicorn==23.0.0
+cloudevents==1.11.0
+google-cloud-firestore==2.20.1
+google-cloud-aiplatform==1.86.0
+google-cloud-storage==2.19.0
 tenacity==9.0.0
-
diff --git a/2024/genai-app-patterns/tutorial_ja.md b/2024/genai-app-patterns/tutorial_ja.md
index 3c0062b..528db48 100644
--- a/2024/genai-app-patterns/tutorial_ja.md
+++ b/2024/genai-app-patterns/tutorial_ja.md
@@ -20,7 +20,7 @@
 
 **Vertex AI**
 
-- 生成 AI の API (Gemini 1.5 Flash)
+- 生成 AI の API (Gemini 2.0 Flash)
 - RAG 機能を司る API 群 (RAG Engine)
 
 今回は以下の 2 つのアプリケーションを構築していくことで、Google Cloud を使った生成 AI のアプリケーション組み込みを学びます。
@@ -455,12 +455,12 @@ RAG は一般的に大きくデータを準備する前処理と、質問への
 1. エンべディング化
 1. データのインデックス化
 
-上記の一連の手続きがソースコードでは<walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="65" endLine="74" startCharacterOffset="0" endCharacterOffset="5">こちら</walkthrough-editor-select-line>に該当します。
+上記の一連の手続きがソースコードでは<walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="71" endLine="84" startCharacterOffset="0" endCharacterOffset="5">こちら</walkthrough-editor-select-line>に該当します。
 
 質問への回答生成は以下の手順で行われ、ソースコードの該当箇所を示します。
 
-1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="176" endLine="189" startCharacterOffset="4" endCharacterOffset="5">質問に関連するデータをインデックスから取得</walkthrough-editor-select-line>
-1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="191" endLine="195" startCharacterOffset="4" endCharacterOffset="5">インデックスから取得したデータを生成 AI にセット</walkthrough-editor-select-line>
+1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="191" endLine="206" startCharacterOffset="4" endCharacterOffset="5">質問に関連するデータをインデックスから取得</walkthrough-editor-select-line>
+1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="208" endLine="212" startCharacterOffset="4" endCharacterOffset="5">インデックスから取得したデータを生成 AI にセット</walkthrough-editor-select-line>
 
 ## **マルチターンの質問回答**
 
@@ -472,8 +472,8 @@ RAG は一般的に大きくデータを準備する前処理と、質問への
 
 具体的な処理部分を以下に示します。
 
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="197" endLine="203" startCharacterOffset="4" endCharacterOffset="5">過去の履歴を取得</walkthrough-editor-select-line>
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="211" endLine="211" startCharacterOffset="8" endCharacterOffset="65">過去の履歴を含め質問を送信</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="214" endLine="220" startCharacterOffset="4" endCharacterOffset="5">過去の履歴を取得</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="228" endLine="228" startCharacterOffset="8" endCharacterOffset="65">過去の履歴を含め質問を送信</walkthrough-editor-select-line>
 
 ## **AI organizer の試用 (ユーザー登録からソースのアップロード)**
 
@@ -623,10 +623,10 @@ gcloud eventarc triggers create genai-backend-summarize \
 
 例えば、長いファイルは細かく分割しながら処理をしていくなどの方法があります。
 
-今回は Gemini 1.5 Flash の特徴である、**ロングコンテキスト (100 万トークン) の入力を活かし特別な処理無しに一回でファイルを読み込み**、要約を生成しています。
+今回は Gemini 2.0 Flash の特徴である、**ロングコンテキスト (100 万トークン) の入力を活かし特別な処理無しに一回でファイルを読み込み**、要約を生成しています。
 
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="296" endLine="301" startCharacterOffset="4" endCharacterOffset="6">要約生成のプロンプト</walkthrough-editor-select-line>
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="305" endLine="305" startCharacterOffset="8" endCharacterOffset="87">要約を生成</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="313" endLine="318" startCharacterOffset="4" endCharacterOffset="7">要約生成のプロンプト</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="322" endLine="322" startCharacterOffset="8" endCharacterOffset="87">要約を生成</walkthrough-editor-select-line>
 
 ### **4. 要約生成機能の試用**
 
@@ -667,10 +667,10 @@ gcloud eventarc triggers create genai-backend-generate-common-questions \
 
 ### **3. ソースコードのポイント**
 
-ここでも Gemini 1.5 Flash の特徴である **ロングコンテキスト** を活かして、プロンプトだけで質問例を生成しています。
+ここでも Gemini 2.0 Flash の特徴である **ロングコンテキスト** を活かして、プロンプトだけで質問例を生成しています。
 
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="341" endLine="345" startCharacterOffset="4" endCharacterOffset="73">質問生成のプロンプト</walkthrough-editor-select-line>
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="351" endLine="351" startCharacterOffset="8" endCharacterOffset="87">質問を生成</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="358" endLine="364" startCharacterOffset="4" endCharacterOffset="83">質問生成のプロンプト</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="370" endLine="370" startCharacterOffset="8" endCharacterOffset="87">質問を生成</walkthrough-editor-select-line>
 
 ### **4. 質問生成機能の試用**
 


Reviews:
user: login: hasebe
body: @tyorikan PR ありがとうございます。
手元で試したところ Embedding モデルの指定が無くなったため、日本語を使った問い合わせへの回答精度が下がってしまっているように見えました。指定の仕方が最新の Rag Engine では代わっているようですので、コメントに記載しております。こちらご確認頂けますでしょうか？
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-29T17:31:26Z
user: login: hasebe
body: genai-app の修正に合わせて、チュートリアル上からコードを参照しているリンクを更新致しました。
こちら念の為、ご確認頂けますでしょうか？
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-31T05:31:58Z
user: login: hasebe
body: @tyorikan 早速のご確認、ありがとうございます！
LGTM です＆ Merge の権限を付与致しました。
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-03-31T07:08:03Z

Review comments:
diff_hunk: @@ -33,13 +38,12 @@
 # Global variables for Google Cloud SDK
 PROJECT_ID = ""
 VERTEX_AI_LOCATION = ""
-PUBLISHER_MODEL = "publishers/google/models/text-multilingual-embedding-002"
path: 2024/genai-app-patterns/src/genai-backend/main.py
user: login: hasebe
body: こちらは残しておくことはできますでしょうか？
デフォルトの Embedding モデルとして [text-embedding-005](https://cloud.google.com/vertex-ai/generative-ai/docs/use-embedding-models#supported-embedding-models) が使われてしまうため、日本語の質問に対して回答が正しく返ってこないことが起こっていそうです。
created_at: 2025-03-29T17:23:09Z
author_association: COLLABORATOR
diff_hunk: @@ -84,14 +93,9 @@ def add_user():
 
     app.logger.info(f"{event_id}: start adding a user: {uid}")
 
-    embedding_model_config = rag.EmbeddingModelConfig(
-        publisher_model=PUBLISHER_MODEL
-    )
-
     app.logger.info(f"{event_id}: start creating a rag corpus for a user: {uid}")
     rag_corpus = rag.create_corpus(
         display_name=uid,
-        embedding_model_config=embedding_model_config,
path: 2024/genai-app-patterns/src/genai-backend/main.py
user: login: hasebe
body: こちらの部分を以下の書き方で修正頂けますでしょうか？
Embedding モデルの指定方法が代わった＋ドキュメントには[正しい方法が未反映](https://github.com/GoogleCloudPlatform/generative-ai/issues/1772)のようです。
```
backend_config=rag.RagVectorDbConfig(
    rag_embedding_model_config=rag.RagEmbeddingModelConfig(
        rag.VertexPredictionEndpoint(
            publisher_model=PUBLISHER_MODEL)))
```
created_at: 2025-03-29T17:25:15Z
author_association: COLLABORATOR
diff_hunk: @@ -455,12 +455,12 @@ RAG は一般的に大きくデータを準備する前処理と、質問への
 1. エンべディング化
 1. データのインデックス化
 
-上記の一連の手続きがソースコードでは<walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="65" endLine="74" startCharacterOffset="0" endCharacterOffset="5">こちら</walkthrough-editor-select-line>に該当します。
+上記の一連の手続きがソースコードでは<walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="70" endLine="85" startCharacterOffset="0" endCharacterOffset="5">こちら</walkthrough-editor-select-line>に該当します。
path: 2024/genai-app-patterns/tutorial_ja.md
user: login: hasebe
body: コード箇所を修正致しました。

```suggestion
上記の一連の手続きがソースコードでは<walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="71" endLine="84" startCharacterOffset="0" endCharacterOffset="5">こちら</walkthrough-editor-select-line>に該当します。
```
created_at: 2025-03-31T05:22:20Z
author_association: COLLABORATOR
diff_hunk: @@ -455,12 +455,12 @@ RAG は一般的に大きくデータを準備する前処理と、質問への
 1. エンべディング化
 1. データのインデックス化
 
-上記の一連の手続きがソースコードでは<walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="65" endLine="74" startCharacterOffset="0" endCharacterOffset="5">こちら</walkthrough-editor-select-line>に該当します。
+上記の一連の手続きがソースコードでは<walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="70" endLine="85" startCharacterOffset="0" endCharacterOffset="5">こちら</walkthrough-editor-select-line>に該当します。
 
 質問への回答生成は以下の手順で行われ、ソースコードの該当箇所を示します。
 
-1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="176" endLine="189" startCharacterOffset="4" endCharacterOffset="5">質問に関連するデータをインデックスから取得</walkthrough-editor-select-line>
-1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="191" endLine="195" startCharacterOffset="4" endCharacterOffset="5">インデックスから取得したデータを生成 AI にセット</walkthrough-editor-select-line>
+1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="184" endLine="200" startCharacterOffset="4" endCharacterOffset="5">質問に関連するデータをインデックスから取得</walkthrough-editor-select-line>
path: 2024/genai-app-patterns/tutorial_ja.md
user: login: hasebe
body: コード箇所を修正致しました。

```suggestion
1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="191" endLine="206" startCharacterOffset="4" endCharacterOffset="5">質問に関連するデータをインデックスから取得</walkthrough-editor-select-line>
```
created_at: 2025-03-31T05:24:01Z
author_association: COLLABORATOR
diff_hunk: @@ -455,12 +455,12 @@ RAG は一般的に大きくデータを準備する前処理と、質問への
 1. エンべディング化
 1. データのインデックス化
 
-上記の一連の手続きがソースコードでは<walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="65" endLine="74" startCharacterOffset="0" endCharacterOffset="5">こちら</walkthrough-editor-select-line>に該当します。
+上記の一連の手続きがソースコードでは<walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="70" endLine="85" startCharacterOffset="0" endCharacterOffset="5">こちら</walkthrough-editor-select-line>に該当します。
 
 質問への回答生成は以下の手順で行われ、ソースコードの該当箇所を示します。
 
-1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="176" endLine="189" startCharacterOffset="4" endCharacterOffset="5">質問に関連するデータをインデックスから取得</walkthrough-editor-select-line>
-1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="191" endLine="195" startCharacterOffset="4" endCharacterOffset="5">インデックスから取得したデータを生成 AI にセット</walkthrough-editor-select-line>
+1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="184" endLine="200" startCharacterOffset="4" endCharacterOffset="5">質問に関連するデータをインデックスから取得</walkthrough-editor-select-line>
+1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="201" endLine="206" startCharacterOffset="4" endCharacterOffset="5">インデックスから取得したデータを生成 AI にセット</walkthrough-editor-select-line>
path: 2024/genai-app-patterns/tutorial_ja.md
user: login: hasebe
body: コード箇所を修正致しました。

```suggestion
1. <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="208" endLine="212" startCharacterOffset="4" endCharacterOffset="5">インデックスから取得したデータを生成 AI にセット</walkthrough-editor-select-line>
```
created_at: 2025-03-31T05:24:25Z
author_association: COLLABORATOR
diff_hunk: @@ -472,8 +472,8 @@ RAG は一般的に大きくデータを準備する前処理と、質問への
 
 具体的な処理部分を以下に示します。
 
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="197" endLine="203" startCharacterOffset="4" endCharacterOffset="5">過去の履歴を取得</walkthrough-editor-select-line>
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="211" endLine="211" startCharacterOffset="8" endCharacterOffset="65">過去の履歴を含め質問を送信</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="207" endLine="214" startCharacterOffset="4" endCharacterOffset="5">過去の履歴を取得</walkthrough-editor-select-line>
path: 2024/genai-app-patterns/tutorial_ja.md
user: login: hasebe
body: コード箇所を修正致しました。

```suggestion
- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="214" endLine="220" startCharacterOffset="4" endCharacterOffset="5">過去の履歴を取得</walkthrough-editor-select-line>
```
created_at: 2025-03-31T05:25:08Z
author_association: COLLABORATOR
diff_hunk: @@ -472,8 +472,8 @@ RAG は一般的に大きくデータを準備する前処理と、質問への
 
 具体的な処理部分を以下に示します。
 
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="197" endLine="203" startCharacterOffset="4" endCharacterOffset="5">過去の履歴を取得</walkthrough-editor-select-line>
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="211" endLine="211" startCharacterOffset="8" endCharacterOffset="65">過去の履歴を含め質問を送信</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="207" endLine="214" startCharacterOffset="4" endCharacterOffset="5">過去の履歴を取得</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="221" endLine="221" startCharacterOffset="8" endCharacterOffset="65">過去の履歴を含め質問を送信</walkthrough-editor-select-line>
path: 2024/genai-app-patterns/tutorial_ja.md
user: login: hasebe
body: コード箇所を修正致しました。

```suggestion
- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="228" endLine="228" startCharacterOffset="8" endCharacterOffset="65">過去の履歴を含め質問を送信</walkthrough-editor-select-line>
```
created_at: 2025-03-31T05:25:34Z
author_association: COLLABORATOR
diff_hunk: @@ -623,10 +623,10 @@ gcloud eventarc triggers create genai-backend-summarize \
 
 例えば、長いファイルは細かく分割しながら処理をしていくなどの方法があります。
 
-今回は Gemini 1.5 Flash の特徴である、**ロングコンテキスト (100 万トークン) の入力を活かし特別な処理無しに一回でファイルを読み込み**、要約を生成しています。
+今回は Gemini 2.0 Flash の特徴である、**ロングコンテキスト (100 万トークン) の入力を活かし特別な処理無しに一回でファイルを読み込み**、要約を生成しています。
 
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="296" endLine="301" startCharacterOffset="4" endCharacterOffset="6">要約生成のプロンプト</walkthrough-editor-select-line>
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="305" endLine="305" startCharacterOffset="8" endCharacterOffset="87">要約を生成</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="306" endLine="312" startCharacterOffset="4" endCharacterOffset="6">要約生成のプロンプト</walkthrough-editor-select-line>
path: 2024/genai-app-patterns/tutorial_ja.md
user: login: hasebe
body: コード箇所を修正致しました。

```suggestion
- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="312" endLine="318" startCharacterOffset="4" endCharacterOffset="7">要約生成のプロンプト</walkthrough-editor-select-line>
```
created_at: 2025-03-31T05:27:10Z
author_association: COLLABORATOR
diff_hunk: @@ -623,10 +623,10 @@ gcloud eventarc triggers create genai-backend-summarize \
 
 例えば、長いファイルは細かく分割しながら処理をしていくなどの方法があります。
 
-今回は Gemini 1.5 Flash の特徴である、**ロングコンテキスト (100 万トークン) の入力を活かし特別な処理無しに一回でファイルを読み込み**、要約を生成しています。
+今回は Gemini 2.0 Flash の特徴である、**ロングコンテキスト (100 万トークン) の入力を活かし特別な処理無しに一回でファイルを読み込み**、要約を生成しています。
 
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="296" endLine="301" startCharacterOffset="4" endCharacterOffset="6">要約生成のプロンプト</walkthrough-editor-select-line>
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="305" endLine="305" startCharacterOffset="8" endCharacterOffset="87">要約を生成</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="306" endLine="312" startCharacterOffset="4" endCharacterOffset="6">要約生成のプロンプト</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="315" endLine="315" startCharacterOffset="8" endCharacterOffset="87">要約を生成</walkthrough-editor-select-line>
path: 2024/genai-app-patterns/tutorial_ja.md
user: login: hasebe
body: コード箇所を修正致しました。

```suggestion
- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="322" endLine="322" startCharacterOffset="8" endCharacterOffset="87">要約を生成</walkthrough-editor-select-line>
```
created_at: 2025-03-31T05:27:41Z
author_association: COLLABORATOR
diff_hunk: @@ -667,10 +667,10 @@ gcloud eventarc triggers create genai-backend-generate-common-questions \
 
 ### **3. ソースコードのポイント**
 
-ここでも Gemini 1.5 Flash の特徴である **ロングコンテキスト** を活かして、プロンプトだけで質問例を生成しています。
+ここでも Gemini 2.0 Flash の特徴である **ロングコンテキスト** を活かして、プロンプトだけで質問例を生成しています。
 
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="341" endLine="345" startCharacterOffset="4" endCharacterOffset="73">質問生成のプロンプト</walkthrough-editor-select-line>
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="351" endLine="351" startCharacterOffset="8" endCharacterOffset="87">質問を生成</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="351" endLine="356" startCharacterOffset="4" endCharacterOffset="73">質問生成のプロンプト</walkthrough-editor-select-line>
path: 2024/genai-app-patterns/tutorial_ja.md
user: login: hasebe
body: コード箇所を修正致しました。

```suggestion
- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="358" endLine="364" startCharacterOffset="4" endCharacterOffset="83">質問生成のプロンプト</walkthrough-editor-select-line>
```
created_at: 2025-03-31T05:28:53Z
author_association: COLLABORATOR
diff_hunk: @@ -667,10 +667,10 @@ gcloud eventarc triggers create genai-backend-generate-common-questions \
 
 ### **3. ソースコードのポイント**
 
-ここでも Gemini 1.5 Flash の特徴である **ロングコンテキスト** を活かして、プロンプトだけで質問例を生成しています。
+ここでも Gemini 2.0 Flash の特徴である **ロングコンテキスト** を活かして、プロンプトだけで質問例を生成しています。
 
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="341" endLine="345" startCharacterOffset="4" endCharacterOffset="73">質問生成のプロンプト</walkthrough-editor-select-line>
-- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="351" endLine="351" startCharacterOffset="8" endCharacterOffset="87">質問を生成</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="351" endLine="356" startCharacterOffset="4" endCharacterOffset="73">質問生成のプロンプト</walkthrough-editor-select-line>
+- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="361" endLine="361" startCharacterOffset="8" endCharacterOffset="87">質問を生成</walkthrough-editor-select-line>
path: 2024/genai-app-patterns/tutorial_ja.md
user: login: hasebe
body: コード箇所を修正致しました。

```suggestion
- <walkthrough-editor-select-line filePath="./next-tokyo-assets/2024/genai-app-patterns/src/genai-backend/main.py" startLine="370" endLine="370" startCharacterOffset="8" endCharacterOffset="87">質問を生成</walkthrough-editor-select-line>
```
created_at: 2025-03-31T05:29:17Z
author_association: COLLABORATOR
diff_hunk: @@ -33,13 +38,12 @@
 # Global variables for Google Cloud SDK
 PROJECT_ID = ""
 VERTEX_AI_LOCATION = ""
-PUBLISHER_MODEL = "publishers/google/models/text-multilingual-embedding-002"
path: 2024/genai-app-patterns/src/genai-backend/main.py
user: login: hasebe
body: 修正を確認致しました。
created_at: 2025-03-31T05:29:59Z
author_association: COLLABORATOR
diff_hunk: @@ -84,14 +93,9 @@ def add_user():
 
     app.logger.info(f"{event_id}: start adding a user: {uid}")
 
-    embedding_model_config = rag.EmbeddingModelConfig(
-        publisher_model=PUBLISHER_MODEL
-    )
-
     app.logger.info(f"{event_id}: start creating a rag corpus for a user: {uid}")
     rag_corpus = rag.create_corpus(
         display_name=uid,
-        embedding_model_config=embedding_model_config,
path: 2024/genai-app-patterns/src/genai-backend/main.py
user: login: hasebe
body: 修正を確認致しました。
created_at: 2025-03-31T05:30:19Z
author_association: COLLABORATOR

PR comments:
user: login: tyorikan
created_at: 2025-03-31T02:50:02Z
body: @hasebe 指摘点修正しました。
author_association: COLLABORATOR
user: login: tyorikan
created_at: 2025-03-31T07:05:24Z
body: @hasebe 指摘ありがとうございます。関連箇所すべて確認＆修正しました。
author_association: COLLABORATOR