import os import requests from langchain.tools import Tool def gemini_video_qa(video_url: str, user_query: str) -> str: """Analyze video content and answer questions using Gemini.""" model_name = "gemini-1.5-flash" req = { "model": f"models/{model_name}", "contents": [{ "parts": [ {"fileData": {"fileUri": video_url}}, {"text": f"Please watch the video and answer the question: {user_query}"} ] }] } url = ( f"https://generativelanguage.googleapis.com/v1beta/models/" f"{model_name}:generateContent?key={os.getenv('GOOGLE_API_KEY')}" ) try: res = requests.post(url, json=req, headers={"Content-Type": "application/json"}) if res.status_code != 200: return f"Video error {res.status_code}: {res.text}" data = res.json() parts = data.get("candidates", [{}])[0].get("content", {}).get("parts", []) return "".join([p.get("text", "") for p in parts]).strip() except Exception as e: return f"[ERROR] GeminiVideoQATool failed: {str(e)}" gemini_video_tool = Tool( name="video_inspector", description="Analyze video content to answer questions using Gemini. Inputs: video_url, user_query.", func=lambda x: gemini_video_qa(**x) )