kltn21110's picture
Upload 239 files
325b400 verified
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