import os from google import genai from google.genai import types def generate(image_folder, question): client = genai.Client(api_key="AIzaSyBoPdVLTJNxfDg9wxWDpY4QJezHiyjKbTE") # Lọc các file ảnh image_files = [f for f in os.listdir(image_folder) if f.lower().endswith((".png", ".jpg", ".jpeg"))] files = [] for filename in image_files: full_path = os.path.join(image_folder, filename) uploaded_file = client.files.upload(file=full_path) files.append(uploaded_file) # Tạo danh sách các Part từ ảnh image_parts = [ types.Part.from_uri(file_uri=f.uri, mime_type=f.mime_type) for f in files ] # Prompt hướng dẫn rõ ràng hơn prompt_text = ( "Bạn là một chuyên gia phân tích dữ liệu có 5 năm kinh nghiệm và có khả năng quan sát, diễn giải dữ liệu dưới dạng biểu đồ một cách chính xác, sắc sảo và có chiều sâu. " "Hãy phân tích kỹ lưỡng **từng biểu đồ** dưới đây như thể đang viết một báo cáo phân tích chuyên nghiệp cho khách hàng/ban lãnh đạo. " "Tuyệt đối **không bỏ qua biểu đồ nào**, và **không được viện lý do thiếu dữ liệu** – mỗi hình ảnh đều mang thông tin và cần được khai thác tối đa. " "Phân tích phải rõ ràng, mạch lạc, giải thích được **xu hướng chính, điểm bất thường, mối quan hệ giữa các danh mục**, và đưa ra nhận định hoặc giả thuyết hợp lý cho từng hiện tượng được thấy từ dữ liệu. " "Nếu có nhiều biểu đồ thể hiện cùng một khía cạnh, hãy so sánh chúng để rút ra kết luận sâu hơn. " f"Yêu cầu phân tích: {question}" ) image_parts.append(types.Part.from_text(text=prompt_text)) contents = [ types.Content(role="user", parts=image_parts), types.Content(role="user", parts=[ types.Part.from_text(text="Hãy thực hiện phân tích theo yêu cầu trên một cách đầy đủ, rõ ràng và có cấu trúc.") ]), ] config = types.GenerateContentConfig(response_mime_type="text/plain") response = client.models.generate_content( model="gemini-2.5-flash-lite-preview-06-17", contents=contents, config=config, ) return response.text