in movie_search_metadata/demo_app/backend/scene_search.py [0:0]
def search_scenes(query: str, top_n: int = 1,
model: GenerativeModel = model_flash) -> List[dict]:
storage_client = storage.Client()
response = search_documents_by_query(query, show_summary=False)
results = []
for doc_id in range(min(top_n, len(response.results))):
title = response.results[doc_id].document.derived_struct_data['title']
meta_uri = response.results[doc_id].document.derived_struct_data['link']
bucket_name, blob_metadata, blob_mp4 = get_bucket_and_blobnames(meta_uri)
signed_url = generate_download_signed_url_v4(bucket_name, blob_mp4)
bucket = storage_client.bucket(bucket_name)
metatext = bucket.blob(blob_metadata).download_as_text()
prompt = PROMPT_CONTENT_SEARCH.format(query=query, metatext=metatext)
temperature = 0.4
while temperature < 1.0:
try:
result = generate_text(prompt, model=model, temperature=temperature)
for r in result:
r['signed_url'] = signed_url
r['title'] = title
results.extend(result)
break
except Exception as e:
print(e)
temperature += 0.05
return results