in genai-for-marketing/installation_scripts/genai_marketing_search_app_creation.py [0:0]
def create_search_app():
# Creating datastore client
datastore_client = discoveryengine_v1alpha.DataStoreServiceClient()
# Initialize datastore request argument(s) for Search
parent_collection = f"projects/{project_id}/locations/{default_location}/collections/default_collection"
datastore_name = f"{app_name}_datastore"
datastore_id = f"{datastore_name}"
# check if datastore exists
try:
datastore = datastore_client.get_data_store(request=discoveryengine_v1alpha.GetDataStoreRequest(
name=f"{parent_collection}/dataStores/{datastore_id}",
))
print(f"Datastore already exist: {datastore}")
except:
# Create datastore
datastore = discoveryengine_v1alpha.DataStore(
display_name=datastore_name,
industry_vertical="GENERIC",
solution_types=["SOLUTION_TYPE_SEARCH"],
content_config="PUBLIC_WEBSITE",
)
datastore_request = discoveryengine_v1alpha.CreateDataStoreRequest(
parent=parent_collection,
data_store=datastore,
data_store_id=datastore_id
)
print(f"Creating datastore: {datastore_request}")
datastore_client.create_data_store(request=datastore_request)
create_target_site(project_id, default_location, datastore_id, uris)
# Creating search engine client
engine_client = discoveryengine_v1alpha.EngineServiceClient()
# Initialize search engine request arguments
search_engine_name = f"{app_name}_search_engine"
engine_id = f"{search_engine_name}"
# check if search engine exists
try:
engine = engine_client.get_engine(request=discoveryengine_v1alpha.GetEngineRequest(
name=f"{parent_collection}/engines/{engine_id}"
))
print(f"Engine already exist: {engine}")
except:
# Engine config and LLM features
engine_config = discoveryengine_v1alpha.types.Engine.SearchEngineConfig(
search_tier="SEARCH_TIER_ENTERPRISE",
search_add_ons=["SEARCH_ADD_ON_LLM"]
)
# Engine
engine = discoveryengine_v1alpha.Engine(
search_engine_config=engine_config,
display_name=search_engine_name,
solution_type="SOLUTION_TYPE_SEARCH",
data_store_ids=[datastore_id],
common_config={'company_name': company_name}
)
engine_request = discoveryengine_v1alpha.CreateEngineRequest(
parent=parent_collection,
engine=engine,
engine_id=engine_id
)
print(f"Creating engine: {engine_request}")
engine_client.create_engine(request=engine_request)
# os.putenv("SEARCH_DATASTORE",f"{parent_collection}/dataStores/{datastore_id}")
# os.putenv("SEARCH_DATASTORE_ID", datastore_id)
# os.putenv("SEARCH_ENGINE",f"{parent_collection}/engines/{engine_id}")
with open("marketingEnvValue.json", "r") as jsonFile:
data = json.load(jsonFile)
data["SEARCH_DATASTORE_ID"] = datastore_id
with open("marketingEnvValue.json", "w") as jsonFile:
json.dump(data, jsonFile)
print(f"""Search engine app results: