(서울시교육청교육연수원)2025 중등 교감 자격연수[2025.05.09.(금)&05.26.(월)14:30-18:20]

공문

프로필(개발자&AI 커뮤니케이터)

지식을 습득하는 과정의 변화

Know-How(달인의 도제식 수업)→ Know-Where(다양한 달인의 위치 정보)→ Ask-How(달인에게 어떤 부탁을 할 것인가?)

학교 내에서 임펙트 플레이어 찾기

흥미로운 내용 3가지 :
임팩트 플레이어는 조직 내에서 인상적인 존재로, 탁월한 퍼포먼스를 통해 사회적 가치와 개인의 자존감을 높인다.
그들은 주도성과 책임감을 가지고 문제를 해결하며, 필요에 따라 적극적으로 기여하는 자세를 갖춘다.
신뢰를 구축하기 위해서는 미리 문제를 예측하고, 팀원 간의 협력과 호기심을 바탕으로 좋은 질문을 하는 것이 중요하다.

AI 시대에 필요한 건 “관리자” 역량

"AI에 대비된" 인재가 되기 위해 명확하게 무엇을 배워야 하는지는 불분명합니다.
현재로서는, AI 역량이란 결국 관리자의 역량과 비슷하다는 생각이 듭니다. 즉, 위임, 명확한 설명, 업무 분배, 프로젝트 관리, 명확한 피드백 제공과 같은 능력들이 AI 시대에 중요한 역량이 될 가능성이 큽니다.

추가 자료

결국 모든 기계는 지능을 가질 것이다.
성장하는 리더가 되기 위해 가져야 할 7가지 원칙

실습 파일

제미나이 인공지능

교감 자격 연수 후기

자동화 코드

프롬프트

Settings 시트에 A2 셀에는 Gemini API Key가 있습니다. 현재 시트의 A2 시트에는 학생 활동 기록이 있습니다. 현재 시트의 B2 시트에 교사 관찰 기록을 작성해 주세요. 학생 활동 기록 을 교사 관찰 기록 으로 바꾸는 과업을 수행하고 있습니다. 교사 관찰 기록 으로 변환할 때 참고할 지침입니다. 지침 은 다음과 같습니다. Analyze the student activity data recorded in the reference cell to create a professional teacher observation record that reflects each student's competencies and development process. ## Analysis Consideration Factors - Learning participation (frequency of class participation, number of questions, contribution to discussions) - Assignment performance level (completeness, submission timing, creativity) - Collaboration ability (contribution to team projects, communication methods) - Core competency manifestation (problem-solving skills, creativity, critical thinking) - Growth areas (development over time, challenge overcoming cases) - Special achievements (awards, notable projects) - Academic competency (understanding of subject content, self-directed learning ability, academic achievement) - Career competency (career exploration activities, interest in related fields, future job connectivity) - Community competency (consideration and sharing, leadership, responsibility, social participation awareness) ## Writing Guidelines 1. Write descriptively from the teacher's professional observer perspective 2. Provide insights by analyzing meaningful patterns and trends, not simply listing data 3. Focus on each student's strengths while constructively mentioning areas with growth potential 4. Base on objective facts but present the student's potential and developmental direction 5. Contextualize student achievements in connection with subject competencies ## Format Requirements - **Never include header content** (exclude formal information such as student name, grade/class, date, title, etc.) - **Results should start directly with observation content** (do not include any introduction, explanation, or title) - Must be written in Korean - **Must be written in the formal ending style** (all sentences must end with '~함', '~임', '~남', etc.) - **Strictly adhere to the formal ending style** (no use of other sentence endings, even for some sentences) - Write consistently in paragraph format (do not use bullet points) - Omit subjects such as "This student" - Content should be concise yet comprehensive, approximately 300-500 characters - Maintain a professional and constructive tone - Write from the teacher's third-person observer perspective (do not use first-person expressions like 'I', 'we') ## Important Emphasis - **Start directly with observation content without including headers, titles, subtitles, etc.** - **Do not include titles or classification names such as "Student Observation Record", "Teacher's Opinion", etc.** - **Do not display student name, date, subject name, or other information at the top** - **All sentence endings must be unified with formal endings like '~함', '~임', '~남', etc.** ## Example "Demonstrates high-level practical application ability by creating a periodic data hacking frequency analysis program using actual hacking statistics by extending data analysis techniques learned in class using virtual data. Shows excellent visualization skills by categorizing hacking types by period and representing them in tables and graphs. Shows developmental thinking and willingness to grow by revealing plans to add future trend estimation functions based on input data. Excels in computing thinking and problem-solving abilities as a student who stands out in Python code utilization skills and the ability to creatively modify AI-generated code to fit needs. Created a depression patient monitoring chatbot for a hackathon task and filmed an introductory video. Shows user-centered design and empathy skills by looking at the program from the patient's perspective while coding. Demonstrates engineering thinking and programming skills by adding various functions such as diary writing and task assignment in addition to chatbot. Cultivates a broad vision by recognizing various application possibilities of artificial intelligence through hackathon case studies. A student with passion and potential for artificial intelligence utilization who has a continuous willingness to learn about computers and software and actively explores future technologies. Selected as an excellent work in the 2024 Artificial Intelligence Hackathon." When writing observation records for each student, please refer to the above guidelines to highlight each student's unique characteristics and achievements. Remember that all sentences must end in the formal style as shown in the example. 위의 내용을 바탕으로 구글 스프레드 시트에서 사용할 앱스 스트립트로 만들어 주세요. Gemini 모델은 gemini-2.0-flash 로 꼭 사용해 주세요.
Plain Text
복사

앱스 스크립트 코드

/** * @OnlyCurrentDoc */ // 스크립트 실행 시 사용자 인터페이스에 메뉴를 추가합니다. function onOpen() { SpreadsheetApp.getUi() .createMenu('교감 자격 연수 실습') .addItem('교사 관찰 기록 생성', 'generateTeacherObservation') .addToUi(); } /** * 학생 활동 기록을 바탕으로 교사 관찰 기록을 생성하여 B2셀에 입력합니다. * Settings 시트의 A2 셀에서 Gemini API 키를 가져옵니다. * 현재 활성 시트의 A2 셀에서 학생 활동 기록을 가져옵니다. */ function generateTeacherObservation() { const ui = SpreadsheetApp.getUi(); // 1. API 키 가져오기 const settingsSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Settings'); if (!settingsSheet) { ui.alert('오류', 'Settings 시트를 찾을 수 없습니다. "Settings"라는 이름의 시트를 만들고 A2셀에 API 키를 입력해주세요.', ui.ButtonSet.OK); return; } const apiKey = settingsSheet.getRange('A2').getValue(); if (!apiKey) { ui.alert('오류', 'Settings 시트의 A2셀에서 Gemini API 키를 찾을 수 없습니다. API 키를 입력해주세요.', ui.ButtonSet.OK); return; } // 2. 학생 활동 기록 가져오기 const currentSheet = SpreadsheetApp.getActiveSheet(); const studentActivity = currentSheet.getRange('A2').getValue(); if (!studentActivity) { ui.alert('오류', '현재 시트의 A2셀에 학생 활동 기록이 없습니다. 내용을 입력해주세요.', ui.ButtonSet.OK); return; } // 3. Gemini API에 전달할 프롬프트 구성 const promptInstructions = ` Analyze the student activity data recorded in the reference cell to create a professional teacher observation record that reflects each student's competencies and development process. ## Analysis Consideration Factors - Learning participation (frequency of class participation, number of questions, contribution to discussions) - Assignment performance level (completeness, submission timing, creativity) - Collaboration ability (contribution to team projects, communication methods) - Core competency manifestation (problem-solving skills, creativity, critical thinking) - Growth areas (development over time, challenge overcoming cases) - Special achievements (awards, notable projects) - Academic competency (understanding of subject content, self-directed learning ability, academic achievement) - Career competency (career exploration activities, interest in related fields, future job connectivity) - Community competency (consideration and sharing, leadership, responsibility, social participation awareness) ## Writing Guidelines 1. Write descriptively from the teacher's professional observer perspective 2. Provide insights by analyzing meaningful patterns and trends, not simply listing data 3. Focus on each student's strengths while constructively mentioning areas with growth potential 4. Base on objective facts but present the student's potential and developmental direction 5. Contextualize student achievements in connection with subject competencies ## Format Requirements - **Never include header content** (exclude formal information such as student name, grade/class, date, title, etc.) - **Results should start directly with observation content** (do not include any introduction, explanation, or title) - Must be written in Korean - **Must be written in the formal ending style** (all sentences must end with '~함', '~임', '~남', etc.) - **Strictly adhere to the formal ending style** (no use of other sentence endings, even for some sentences) - Write consistently in paragraph format (do not use bullet points) - Omit subjects such as "This student" - Content should be concise yet comprehensive, approximately 300-500 characters - Maintain a professional and constructive tone - Write from the teacher's third-person observer perspective (do not use first-person expressions like 'I', 'we') ## Important Emphasis - **Start directly with observation content without including headers, titles, subtitles, etc.** - **Do not include titles or classification names such as "Student Observation Record", "Teacher's Opinion", etc.** - **Do not display student name, date, subject name, or other information at the top** - **All sentence endings must be unified with formal endings like '~함', '~임', '~남', etc.** ## Example "Demonstrates high-level practical application ability by creating a periodic data hacking frequency analysis program using actual hacking statistics by extending data analysis techniques learned in class using virtual data. Shows excellent visualization skills by categorizing hacking types by period and representing them in tables and graphs. Shows developmental thinking and willingness to grow by revealing plans to add future trend estimation functions based on input data. Excels in computing thinking and problem-solving abilities as a student who stands out in Python code utilization skills and the ability to creatively modify AI-generated code to fit needs. Created a depression patient monitoring chatbot for a hackathon task and filmed an introductory video. Shows user-centered design and empathy skills by looking at the program from the patient's perspective while coding. Demonstrates engineering thinking and programming skills by adding various functions such as diary writing and task assignment in addition to chatbot. Cultivates a broad vision by recognizing various application possibilities of artificial intelligence through hackathon case studies. A student with passion and potential for artificial intelligence utilization who has a continuous willingness to learn about computers and software and actively explores future technologies. Selected as an excellent work in the 2024 Artificial Intelligence Hackathon." 학생 활동 기록은 다음과 같습니다: ${studentActivity} 위 학생 활동 기록과 제공된 모든 지침(특히 형식 요구사항과 모든 문장의 종결어미를 '~함', '~임', '~남' 등으로 통일하는 것)을 엄격히 준수하여, 다른 어떤 부가적인 설명이나 제목, 머리글 없이 바로 교사 관찰 기록 내용만을 한국어로 작성해주십시오. 결과는 반드시 지침에 명시된 대로 문단 형식이어야 하며, 글자 수는 약 500자 범위여야 합니다. `; // 4. Gemini API 호출 // Gemini 2.0 Flash 모델로 업데이트 const apiUrl = `https://generativelanguage.googleapis.com/v1/models/gemini-2.0-flash:generateContent?key=${apiKey}`; const payload = { "contents": [{ "parts": [{ "text": promptInstructions }] }], "generationConfig": { "temperature": 0.7, "maxOutputTokens": 350, // Flash 모델은 빠르지만, 출력 길이에 대한 고려는 여전히 필요합니다. 한국어 300-500자를 고려하여 약간 여유있게 설정 } }; const options = { 'method': 'post', 'contentType': 'application/json', 'payload': JSON.stringify(payload), 'muteHttpExceptions': true }; try { const response = UrlFetchApp.fetch(apiUrl, options); const responseCode = response.getResponseCode(); const responseBody = response.getContentText(); if (responseCode === 200) { const jsonResponse = JSON.parse(responseBody); if (jsonResponse.candidates && jsonResponse.candidates.length > 0 && jsonResponse.candidates[0].content && jsonResponse.candidates[0].content.parts && jsonResponse.candidates[0].content.parts.length > 0) { let generatedText = jsonResponse.candidates[0].content.parts[0].text; generatedText = generatedText.replace(/```(korean)?/g, '').trim(); const lines = generatedText.split('\n'); if (lines.length > 1 && (lines[0].includes("교사 관찰 기록") || lines[0].includes("Teacher Observation Record") || lines[0].trim() === "")) { // 첫 줄이 불필요한 제목이거나 빈 줄일 경우 제거 let startIndex = 0; while(startIndex < lines.length && (lines[startIndex].includes("교사 관찰 기록") || lines[startIndex].includes("Teacher Observation Record") || lines[startIndex].trim() === "")) { startIndex++; } generatedText = lines.slice(startIndex).join('\n').trim(); } currentSheet.getRange('B2').setValue(generatedText); ui.alert('성공', '교사 관찰 기록이 B2셀에 생성되었습니다. (Model: gemini-2.0-flash)', ui.ButtonSet.OK); } else if (jsonResponse.promptFeedback && jsonResponse.promptFeedback.blockReason) { const blockReason = jsonResponse.promptFeedback.blockReason; let safetyRatingsInfo = "정보 없음"; if (jsonResponse.promptFeedback.safetyRatings) { safetyRatingsInfo = jsonResponse.promptFeedback.safetyRatings.map(r => `${r.category}: ${r.probability}`).join(', '); } ui.alert('API 오류', `API 요청이 차단되었습니다. 이유: ${blockReason}\n안전 등급: ${safetyRatingsInfo}`, ui.ButtonSet.OK); Logger.log(`API 요청 차단: ${blockReason}, 안전 등급: ${JSON.stringify(jsonResponse.promptFeedback.safetyRatings)}`); Logger.log(`요청 본문: ${JSON.stringify(payload)}`); } else { // 응답은 왔으나 예상된 content가 없는 경우 let errorMessage = 'API로부터 유효한 텍스트 응답을 받지 못했습니다.'; if (jsonResponse.candidates && jsonResponse.candidates.length > 0 && jsonResponse.candidates[0].finishReason) { errorMessage += ` 종료 이유: ${jsonResponse.candidates[0].finishReason}`; } ui.alert('API 오류', errorMessage, ui.ButtonSet.OK); Logger.log(`API 응답 오류 (유효한 텍스트 없음): ${responseBody}`); Logger.log(`요청 본문: ${JSON.stringify(payload)}`); } } else { ui.alert('API 호출 실패', `API 호출에 실패했습니다. 상태 코드: ${responseCode}\n응답: ${responseBody}`, ui.ButtonSet.OK); Logger.log(`API 호출 실패. 상태 코드: ${responseCode}, 응답: ${responseBody}`); Logger.log(`요청 본문: ${JSON.stringify(payload)}`); } } catch (e) { ui.alert('스크립트 오류', `오류가 발생했습니다: ${e.toString()}`, ui.ButtonSet.OK); Logger.log(`스크립트 오류: ${e.toString()}\nStack: ${e.stack}`); if (typeof payload !== 'undefined') { Logger.log(`요청 본문: ${JSON.stringify(payload)}`); } } }
JavaScript
복사