88 lines
3.2 KiB
Python
88 lines
3.2 KiB
Python
# Copyright 2025 Google LLC
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
"""
|
|
This script automates the setup process for the application's infrastructure.
|
|
|
|
It performs the following actions:
|
|
1. Creates a Google Cloud Storage (GCS) bucket if it doesn't exist.
|
|
2. Creates a BigQuery dataset if it doesn't exist.
|
|
3. Creates the necessary BigQuery tables (Chats, Embeddings, Intents) within
|
|
the dataset, using schemas defined in the corresponding model classes.
|
|
|
|
Note: Ensure that the required environment variables
|
|
(like GOOGLE_APPLICATION_CREDENTIALS) and configurations (like BUCKET
|
|
name and BIG_QUERY_DATASET name) are set before running this script.
|
|
"""
|
|
|
|
from scripts.big_query_setup import create_dataset, create_table, insert_intent
|
|
from scripts.gcs_setup import create_bucket, BUCKET
|
|
from src.model.chats import Chat
|
|
from src.model.embedding import Embedding
|
|
from src.model.intent import Intent
|
|
from src.repository.big_query import CHATS_TABLE, EMBEDDINGS_TABLE
|
|
from src.service.intent import INTENTS_TABLE
|
|
|
|
BIG_QUERY_DATASET = ""
|
|
|
|
DEFAULT_INTENTS = [
|
|
Intent(
|
|
name="Code assistant",
|
|
ai_model="gemini-1.5-flash",
|
|
ai_temperature=1,
|
|
description="The Coding AI Agent is your expert programming assistant",
|
|
prompt="""
|
|
You are an expert coding agent. You can write, analyze, and debug
|
|
code in any programming language.
|
|
You can also answer questions about code and software development concepts.
|
|
If I provide you with code, please identify the language it is written in.
|
|
If I need to execute the code, I will explicitly ask you to do so.
|
|
I want you to prioritize generating concise and efficient code.
|
|
Please avoid adding unnecessary comments or explanations unless I specifically
|
|
request them
|
|
""",
|
|
questions=[
|
|
"Write a Python function to calculate the factorial of a number",
|
|
"""What is the difference between a stack and a queue
|
|
in data structures?""",
|
|
"""Create a simple HTML page with a button that changes
|
|
color when clicked.""",
|
|
],
|
|
status="5",
|
|
),
|
|
]
|
|
|
|
print("Setting up GCS... \n")
|
|
|
|
bucket = create_bucket(BUCKET)
|
|
|
|
print("\nSuccess!\n")
|
|
|
|
print("Setting up BigQuery... \n")
|
|
|
|
create_dataset(BIG_QUERY_DATASET)
|
|
create_table(BIG_QUERY_DATASET, CHATS_TABLE, Chat.__schema__())
|
|
create_table(BIG_QUERY_DATASET, EMBEDDINGS_TABLE, Embedding.__schema__())
|
|
create_table(BIG_QUERY_DATASET, INTENTS_TABLE, Intent.__schema__())
|
|
|
|
for intent in DEFAULT_INTENTS:
|
|
try:
|
|
insert_intent(
|
|
BIG_QUERY_DATASET, INTENTS_TABLE, intent.to_insert_string()
|
|
)
|
|
except Exception as e:
|
|
print(e)
|
|
|
|
print("\nSuccess!\n")
|