Spaces:
Sleeping
Sleeping
| 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 | |