import streamlit as st import google.generativeai as genai import os from dotenv import load_dotenv # Load environment variables load_dotenv() # Configure Gemini API genai.configure(api_key=os.getenv("GEMINI_API_KEY")) # TRL Checklist (provided by user) TRL_CHECKLIST = """ 1 หลักการพื้นฐานได้รับการพิจารณาและมีการรายงาน ❑ ศึกษาหลักการพื้นฐานทางด้านวิทยาศาสตร์ที่สาคัญของเทคโนโลยีที่สนใจ ❑ หาความต้องการของผู้ใช้ หรือกาหนดข้อบ่งใช้ (Intended use) ❑ สรุปผล Literature & IP review ❑ รายการเอกสารอ้างอิงที่เกี่ยวข้อง 2 การสร้างแนวคิดด้านเทคโนโลยี และ/หรือการประยุกต์ใช้ ❑ วิเคราะห์โอกาส สร้างแนวคิด/โจทย์วิจัยใหม่ (ยังไม่พิสูจน์สมมติฐาน) ❑ มีรายละเอียดของแนวคิดและ/หรือเทคโนโลยีใหม่เพียงพอส าหรับการออกแบบ ข้อกาหนดต่าง ๆ ในการพัฒนาเทคโนโลยี ❑ สรุปแนวคิด โจทย์วิจัย และผลวิเคราะห์ความเป็นไปได้ ของแนวคิด/การประยุกต์ใช้เทคโนโลยี ❑ ขอบเขตงานวิจัย วิธีวิจัย ❑ ข้อกาหนดทางเทคนิค (Specification) และวิธี ทดสอบที่น่าเชื่อถือส าหรับยืนยัน Specification 3 แนวคิดได้ถูกสาธิตด้วยการวิเคราะห์ จาลอง หรือทดลอง ❑ พิสูจน์ความเป็นไปได้ของแนวคิดของเทคโนโลยี และ/หรือการประยุกต์ใช้ จาก พารามิเตอร์ที่ส าคัญ โดยวิเคราะห์ หรือจาลอง หรือทดลอง ❑ ศึกษามาตรฐาน/กฎหมายที่เกี่ยวข้องกับเทคโนโลยีที่กาลังศึกษาวิจัย ❑ ผลการวิเคราะห์ หรือจาลอง หรือทดลอง ที่แสดง Proof of concept ❑ รายชื่อข้อกาหนด/มาตรฐานที่เกี่ยวข้อง ❑ ผลงานตีพิมพ์ทางวิชาการ และ/หรือการจดทรัพย์สิน ทางปัญญา (IP) (ถ้ามี) 4 องค์ประกอบที่สาคัญหรือบอร์ดทดลองอิเล็กทรอนิกส์จาลองได้ถูกสาธิตและพิสูจน์ในระดับห้องปฏิบัติการแล้ว ❑ ประกอบองค์ประกอบที่ส าคัญ (Key element) เข้าด้วยกัน เพื่อใช้ในการแก้ไข ปัญหาเฉพาะเรื่องหรือพิสูจน์การทางานหลัก ๆ ของเทคโนโลยีตามที่คาดหวังได้ ❑ ทดสอบองค์ประกอบที่ส าคัญด้วยวิธีที่น่าเชื่อถือในระดับห้องปฏิบัติการ ❑ วิธีการทดสอบที่มีแหล่งอ้างอิงน่าเชื่อถือ ❑ ผลการทดสอบตาม Specification ในระดับ ห้องปฏิบัติการ ที่ยอมรับได้ทางสถิติ และทาซ ้าได้ (Reproducibility) 5 องค์ประกอบที่สาคัญหรือบอร์ดทดลองอิเล็กทรอนิกส์จาลองได้ถูกสาธิตและพิสูจน์ในสภาวะเลียนแบบที่ใกล้เคียงการทางานจริง ❑ รับความต้องการและประสิทธิภาพการใช้งานที่คาดหวังจากกลุ่มเป้าหมาย/ลูกค้า ตัวจริง (ถ้ามี) ❑ กาหนดสภาวะที่ใช้ทดสอบใกล้เคียงกับการใช้งานจริง (ยังควบคุมปัจจัยที่ส่งผล ต่อความส าเร็จและล้มเหลวในการใช้งาน) ❑ ประกอบองค์ประกอบที่ส าคัญเข้ากับองค์ประกอบสนับสนุนของเทคโนโลยี ❑ ทดสอบองค์ประกอบที่ส าคัญด้วยวิธีที่น่าเชื่อถือ ในสภาวะเลียนแบบที่ใกล้เคียง การทางานจริง ❑ ปรับปรุง/แก้ไขปัญหาตามที่คาดหวัง หากมีข้อเสนอแนะจากกลุ่มเป้าหมาย/ลูกค้า ตัวจริง (ถ้ามี) ❑ วิธีการทดสอบที่มีแหล่งอ้างอิงน่าเชื่อถือ ❑ ผลการทดสอบตาม Specification และสามารถทาซ ้า ในสถานการณ์จ าลอง หรือในสภาวะเลียนแบบที่ ใกล้เคียงการทางานจริง สอดคล้องตามความ ต้องการที่จะประยุกต์ใช้งานของกลุ่มเป้าหมาย* 6 ต้นแบบของผลิตภัณฑ์หรือกระบวนการที่พร้อมเป็นสิ่งส่งมอบ ได้ผ่านการสาธิตและพิสูจน์การใช้งานในสภาวะแวดล้อมที่เกี่ยวข้องกับการทางานจริง ❑ รับความต้องการและประสิทธิภาพการใช้งานที่คาดหวังจากกลุ่มเป้าหมาย/ลูกค้า ตัวจริง (ถ้ามี) ❑ กาหนดสภาวะที่ใช้ทดสอบใกล้เคียงกับการใช้งานจริงยิ่งขึ้น (ยังคงควบคุมปัจจัย ที่จะส่งผลต่อความส าเร็จและล้มเหลว) ❑ พัฒนาต้นแบบสอดคล้องตามความต้องการ และพร้อมเป็นสิ่งส่งมอบ ทั้งในแง่ การใช้งาน (Function) รูปแบบ (Form) ความพอดี (Fit) ❑ ทดสอบต้นแบบด้วยวิธีที่น่าเชื่อถือในสภาวะแวดล้อมที่เกี่ยวข้องกับการทางานจริง ❑ ประเมินความพึงพอใจ/การยอมรับของกลุ่มเป้าหมาย/ลูกค้า ❑ ปรับปรุง/แก้ไขปัญหาตามที่คาดหวัง หากมีข้อเสนอแนะจากกลุ่มเป้าหมาย/ลูกค้า ตัวจริง (ถ้ามี) ❑ วิธีการทดสอบที่มีแหล่งอ้างอิงน่าเชื่อถือ ❑ ผลการทดสอบตาม Specification และสามารถทาซ ้า ได้สภาวะแวดล้อมที่ใกล้เคียงการทางานจริง สอดคล้องความต้องการที่จะประยุกต์ใช้งานของ กลุ่มเป้าหมาย ❑ หลักฐานแสดงการยอมรับของกลุ่มเป้าหมาย/ลูกค้า (ถ้ามี) 7 ต้นแบบของผลิตภัณฑ์หรือกระบวนการขั้นสุดท้าย ได้ผ่านการสาธิตและพิสูจน์การใช้งานในสภาวะทางานจริง (ต้องมีลูกค้าตัวจริง) (Validation) ❑ รับความต้องการและประสิทธิภาพการใช้งานจากลูกค้าตัวจริง (ผู้รับถ่ายทอด เทคโนโลยี) เพื่อใช้ออกแบบ Specification ในการพัฒนาขั้นสุดท้าย ❑ ระบุสภาวะแวดล้อมจริงที่ใช้งาน (ไม่ควบคุมปัจจัยที่ส่งผลต่อความส าเร็จ/ ล้มเหลว) ❑ พัฒนาต้นแบบสอดคล้องตามความต้องการของลูกค้าตัวจริง และพร้อมเป็น ต้นแบบขั้นสุดท้าย ทั้งในแง่ของการใช้งาน (Function) รูปแบบ (Form) ความ พอดี (Fit) ❑ ทดสอบต้นแบบขั้นสุดท้ายด้วยวิธีที่น่าเชื่อถือ มีจานวนการทดสอบและระยะเวลา เพียงพอ ยอมรับได้ทางสถิติ โดยลูกค้าตัวจริงหรือผู้ใช้ที่นักวิจัยและลูกค้ายอมรับ ให้เป็นผู้ทดสอบ ❑ ประเมินความพึงพอใจ/การยอมรับของกลุ่มเป้าหมาย/ลูกค้า ❑ ปรับปรุง/แก้ไขปัญหาตามที่คาดหวัง หากมีข้อเสนอแนะจากลูกค้าตัวจริง/ผู้ใช้ ❑ วิธีการทดสอบที่มีแหล่งอ้างอิงน่าเชื่อถือ ❑ ผลการทดสอบตาม Specification สามารถทาซ ้าได้ ในสภาวะทางานจริง สอดคล้องตามความต้องการที่จะ ประยุกต์ใช้งานของลูกค้า ❑ หลักฐานแสดงการยอมรับของลูกค้าตัวจริง (หรือ Third party ที่นักวิจัยและลูกค้ายอมรับ) 8 เทคโนโลยี/ผลิตภัณฑ์/กระบวนการที่ส่งมอบจริง ได้ผ่านการทดสอบและสาธิต ❑ ทดสอบคุณภาพการใช้งานตามมาตรฐานของลูกค้า และ/หรือมาตรฐานคุณภาพที่ เกี่ยวข้อง/กฎหมายที่เกี่ยวข้อง (ถ้ามี) (ต้องทาให้ได้คุณภาพตามที่ขายได้ทั่วไป) ❑ บูรณาการ (Integrate) เข้ากับระบบของลูกค้า/ผู้ใช้งานแล้ว ❑ ผลทดสอบการใช้งานในสภาวะทางานจริงอย่าง ต่อเนื่องจนลูกค้ามั่นใจคุณภาพในเสถียรภาพของ ผลิตภัณฑ์ในสภาพจริง อยู่ในเกณฑ์ดี ❑ ผลการรับรองคุณภาพ/ผลการทดสอบผลิตภัณฑ์ตาม มาตรฐานที่เกี่ยวข้อง หรือผลการทดสอบตาม Specification ของลูกค้า ❑ คู่มือการผลิต/คู่มือการใช้งาน 9 การใช้งานเทคโนโลยี/ผลิตภัณฑ์/กระบวนการอย่างต่อเนื่อง ❑ ผลิตภัณฑ์ได้รับการยอมรับและนาไปใช้งานจริงอย่างต่อเนื่อง มีปริมาณของลูกค้า และ/หรือ ผู้ใช้หรือความถี่ในการใช้งานเพิ่มขึ้น ❑ ติดตามผลการใช้ผลิตภัณฑ์อย่างต่อเนื่องตามระยะเวลาที่เหมาะสม ❑ ปรับปรุง/แก้ไขปัญหาตามที่คาดหวัง หากมีข้อเสนอแนะจากลูกค้า/ผู้ใช้ ❑ เอกสารสรุปข้อมูลสาคัญของสิ่งส่งมอบ เช่น แนวคิด หลักการ วิธีการวิจัยและพัฒนา Specification /Feature/วิธีทดสอบที่เชื่อถือได้ ❑ ผลิตภัณฑ์มีจ าหน่ายในท้องตลาด หรือหลักฐานการ นาไปใช้เชิงพาณิชย์หรือสาธารณประโยชน์ ❑ การยอมรับหรือการใช้งานอย่างต่อเนื่องของผู้บริโภค (ถ้ามี """ def evaluate_trl(proposal_text): model = genai.GenerativeModel('gemini-2.5-pro') prompt = f""" Based on the following TRL (Technology Readiness Level) checklist, evaluate the Technology Readiness Level of the provided proposal. TRL Checklist: {TRL_CHECKLIST} Proposal Text: {proposal_text} Determine the highest TRL level that the proposal demonstrates based on the checklist. Provide your response in the following format: TRL: [number] Reasoning: [detailed explanation of why this TRL level was assigned, referencing specific checklist items and proposal content] """ response = model.generate_content(prompt) text = response.text.strip() try: lines = text.split('\n') trl_line = next(line for line in lines if line.startswith('TRL:')) trl = int(trl_line.split(':')[1].strip()) reasoning_line = next(line for line in lines if line.startswith('Reasoning:')) reasoning = reasoning_line.split(':', 1)[1].strip() return trl, reasoning except (ValueError, StopIteration): return None, "Failed to parse TRL evaluation response." # Streamlit UI st.title("Proposal Prescreening Tool") st.write("Upload or paste a proposal to evaluate its TRL and check funding eligibility (TRL > 4).") # Input method input_method = st.radio("Choose input method:", ("Paste text", "Upload file")) proposal_text = "" if input_method == "Paste text": proposal_text = st.text_area("Paste your proposal text here:", height=300) elif input_method == "Upload file": uploaded_file = st.file_uploader("Upload a text file", type=["txt", "pdf", "docx"]) if uploaded_file is not None: # For simplicity, assume text files; for PDF/DOCX, would need additional libraries proposal_text = uploaded_file.read().decode("utf-8") if st.button("Evaluate Proposal"): if proposal_text: with st.spinner("Evaluating TRL..."): trl, reasoning = evaluate_trl(proposal_text) if trl is not None: st.write(f"Evaluated TRL: {trl}") st.write("**Reasoning:**") st.write(reasoning) if trl > 4: st.success("PASS: Eligible for funding (TRL > 4)") else: st.error("FAIL: Not eligible for funding (TRL <= 4)") else: st.error("Failed to evaluate TRL. Please check the proposal text.") else: st.warning("Please provide proposal text.")