""" Install the Google AI Python SDK $ pip install google-generativeai """ from google.generativeai.types import HarmCategory, HarmBlockThreshold import os import google.generativeai as genai from dotenv import load_dotenv load_dotenv() api_key = os.getenv('GEMINI_API_KEY') genai.configure(api_key=api_key) generation_config = { "temperature": 0, "top_p": 0.95, "top_k": 40, "max_output_tokens": 8192, "response_mime_type": "text/plain", } _safety_settings = [ { "category": "HARM_CATEGORY_DANGEROUS", "threshold": "BLOCK_NONE", }, { "category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE", }, { "category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE", }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE", }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE", }, ] model = genai.GenerativeModel( model_name="gemini-1.5-pro-002", generation_config=generation_config, safety_settings=_safety_settings # See https://ai.google.dev/gemini-api/docs/safety-settings ) def call_api(text): chat_session = model.start_chat( history=[ { "role": "user", "parts": [ "# Prompt\nYou are an expert in Vietnamese language normalization, specializing in transforming informal, professional, and complex text into clear, well-structured Vietnamese. Your task is to normalize a list of Vietnamese sentences while ensuring that all numbers (including decimals, fractions) and units (e.g., time, currency, measurements) are fully written out in Vietnamese. The rest of the text should remain unchanged.\n\n# Rules:\n\nI will give you a list of sentences to normalize.\nAll numbers, including decimals and fractions, must be converted into their full written forms in Vietnamese.\nAll units of measurement (e.g., kilograms, meters, VND, hours) must be fully written out, but the rest of the sentence should remain as close as possible to the original wording.\nProper nouns, abbreviations, technical terms, and commonly used informal terms should remain as is.\nDo not add new words unless necessary to convert numbers or units into their full written forms.\nFor all instances where numbers are used (e.g., U17, COVID-19, F12,G9,...), convert the numbers to their full written form in Vietnamese. For example, convert \"U17\" to \"U mười bảy\", \"COVID-19\" to \"COVID mười chín\", \"F12\" to \"F mười hai.\", \"G9\" to \"G chín\",...\nOnly rephrase if absolutely necessary for clarity or fluency.\nReply with the normalized sentences only, without any explanation.\n\n# Example\nInput 1 : [ \"Bà C mua 3kg táo với giá 35.000 VND/kg vào lúc 10h00 sáng.\", \"Anh D đã đi bộ 7,5 km trong 1 giờ 30 phút với tốc độ trung bình 5 km/h.\", \"Họ thanh toán 2.500.000 VND cho tiền thuê phòng trong 5 ngày.\" ]\n\nOutput 1 : [ \"Bà C mua ba kilogram táo với giá ba mươi lăm nghìn đồng một kilogram vào lúc mười giờ sáng.\", \"Anh D đã đi bộ bảy phẩy năm kilomet trong một giờ ba mươi phút với tốc độ trung bình năm kilomet một giờ.\", \"Họ thanh toán hai triệu năm trăm nghìn đồng cho tiền thuê phòng trong năm ngày.\" ]\n\nInput 2 : [ \"Anh B đã hoàn thành dự án trong 2 tuần với chi phí 1.200.000 VND.\", \"Số tiền 3.500.000 VND đã được chuyển khoản lúc 16h30.\", \"Chị H chạy 10km mỗi ngày với thời gian trung bình 50 phút.\" ]\n\nOutput 2 : [ \"Anh B đã hoàn thành dự án trong hai tuần với chi phí một triệu hai trăm nghìn đồng.\", \"Số tiền ba triệu năm trăm nghìn đồng đã được chuyển khoản lúc mười sáu giờ ba mươi phút.\", \"Chị H chạy mười kilomet mỗi ngày với thời gian trung bình năm mươi phút.\" ]\n\nInput 3 : [ \"Công ty chi 500.000 VND để mua văn phòng phẩm.\", \"Anh ấy lái xe 20km từ nhà đến nơi làm việc trong 40 phút.\", \"Họ đã dành 1.000.000 VND cho chuyến du lịch này.\" ]\n\nOutput 3 : [ \"Công ty chi năm trăm nghìn đồng để mua văn phòng phẩm.\", \"Anh ấy lái xe hai mươi kilomet từ nhà đến nơi làm việc trong bốn mươi phút.\", \"Họ đã dành một triệu đồng cho chuyến du lịch này.\" ]\n\nInput 4 : [\"4. Tìm thấy format sẽ cảm thấy như thế nào? 5. Khi nào sẽ tìm thấy?\"]\n\nOutput 4 : [\"Bốn. Tìm thấy format sẽ cảm thấy như thế nào? Năm. Khi nào sẽ tìm thấy?\"]", ], }, { "role": "model", "parts": [ "Input 5 : [\"Bộ phim dài 2 tiếng rưỡi.\", \"Cô ấy mua 1,5 lít sữa tươi.\", \"Bài kiểm tra kéo dài 1 tiếng 15 phút.\", \"Giá xăng tăng 0,5% trong tháng này.\", \"Anh ấy cao 1m75.\", \"Đội U23 Việt Nam đã chiến thắng.\", \"Nhiệt độ cơ thể là 37,5 độ C.\", \"Máy bay cất cánh lúc 7h30 sáng.\", \"Cô ấy mua 1/2 kg thịt lợn.\", \"Anh ấy uống 3/4 cốc nước.\", \"Phiên bản iOS 16 đã được phát hành.\", \"COVID-19 vẫn là một mối lo ngại.\", \"Tôi đang dùng iPhone 14 Pro Max.\", \"Mua vé máy bay đi Hà Nội chuyến VN7230.\", \"Xem lại bài học 5 của chương 3.\", \"Máy in HP LaserJet P1102w bị lỗi.\", \"Đã hoàn thành 7/10 nhiệm vụ.\"]\n\n\nOutput 5 : [\"Bộ phim dài hai tiếng rưỡi.\", \"Cô ấy mua một phẩy năm lít sữa tươi.\", \"Bài kiểm tra kéo dài một tiếng mười lăm phút.\", \"Giá xăng tăng không phẩy năm phần trăm trong tháng này.\", \"Anh ấy cao một mét bảy mươi lăm.\", \"Đội U hai mươi ba Việt Nam đã chiến thắng.\", \"Nhiệt độ cơ thể là ba mươi bảy phẩy năm độ C.\", \"Máy bay cất cánh lúc bảy giờ ba mươi phút sáng.\", \"Cô ấy mua một phần hai kilogram thịt lợn.\", \"Anh ấy uống ba phần tư cốc nước.\", \"Phiên bản iOS mười sáu đã được phát hành.\", \"COVID mười chín vẫn là một mối lo ngại.\", \"Tôi đang dùng iPhone mười bốn Pro Max.\", \"Mua vé máy bay đi Hà Nội chuyến VN bảy nghìn hai trăm ba mươi.\", \"Xem lại bài học năm của chương ba.\", \"Máy in HP LaserJet P một nghìn một trăm linh hai w bị lỗi.\", \"Đã hoàn thành bảy phần mười nhiệm vụ.\"]\n", ], }, ] ) response = chat_session.send_message(text, ) print(response.text) return eval(response.text)