JUNGU commited on
Commit
829f184
β€’
1 Parent(s): c5fd644

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -0
app.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import openai #openai api μ‚¬μš©
3
+ import json
4
+ from annotated_text import annotated_text #annotated_text μ‚¬μš©
5
+
6
+ # OpenAI API μ„€μ • (ν™˜κ²½ λ³€μˆ˜μ—μ„œ μ½μ–΄μ˜΄)
7
+ openai.api_key = os.getenv("OPENAI_API_KEY")
8
+
9
+ #gptμ΄μš©ν•΄μ„œ μΆ”λ‘ ν•¨μˆ˜ λ§Œλ“€κΈ°
10
+ def generate_annotated_text(text):
11
+ response = openai.ChatCompletion.create(
12
+ model="gpt-3.5-turbo-16k",
13
+ messages=[
14
+ {
15
+ "role": "system",
16
+ "content": "μ„±μ·¨κΈ°μ€€ 기반 ν•™μƒμ˜ νŠΉμ„± 및 ν™œλ™ 평가 생성\n성취기쀀을 μž…λ ₯ν•˜μ‹œλ©΄, ν•΄λ‹Ή 성취기쀀에 κΈ°λ°˜ν•œ ν•™μƒμ˜ νŠΉμ„± 및 ν™œλ™μ— λŒ€ν•œ 평가λ₯Ό annotated_text ν˜•μ‹μœΌλ‘œ μ œκ³΅ν•©λ‹ˆλ‹€. 성취기쀀을 보며 ν•™μƒμ˜ νŠΉμ • ν™œλ™, μ„±μ·¨ μˆ˜μ€€, κ΅μ‚¬μ˜ 총평, 그리고 ν•™μƒμ˜ μ—­λŸ‰μ„ κ³ λ €ν•˜μ—¬ μ²΄κ³„μ μœΌλ‘œ κ΅¬μ„±λœ 좜λ ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. μ£Όμ–΄λŠ” λ°˜λ“œμ‹œ μƒλž΅ν•©λ‹ˆλ‹€. \n\n예제:\nμž…λ ₯: ```μ„±μ·¨κΈ°μ€€: [6κ΅­01-07]μƒλŒ€κ°€ μ²˜ν•œ 상황을 μ΄ν•΄ν•˜κ³  κ³΅κ°ν•˜λ©° λ“£λŠ” νƒœλ„λ₯Ό μ§€λ‹Œλ‹€, [6κ΅­01-02] μ˜κ²¬μ„ μ œμ‹œν•˜κ³  ν•¨κ»˜ μ‘°μ •ν•˜λ©° ν† μ˜ν•œλ‹€.```\n좜λ ₯: ```annotated_text(\n (\"ν‰μ†Œ μžμ‹ μ˜ 생각을 일λͺ©μš”μ—°ν•˜κ²Œ μ •λ¦¬ν•˜λŠ” μŠ΅κ΄€μ΄ 있음.\", \"μ—­λŸ‰\", \"rgba(255, 0, 0, 0.3)\"),\n (\"μ‚¬νšŒ ν˜„μ•ˆμ— κ΄€ν•œ μ£Όμž₯ν•˜λŠ” κΈ€μ“°κΈ°λ₯Ό μž˜ν•¨.\", \"μ„±μ·¨μˆ˜μ€€\", \"rgba(0, 0, 255, 0.3)\"),\n (\"친ꡬ의 고민을 ν•΄κ²°ν•΄μ£ΌλŠ” μ—­ν• κ·Ήμ—μ„œ μƒλŒ€λ°©μ„ λ°°λ €ν•˜μ—¬ ν•΄κ²° κ°€λŠ₯ν•œ λ°©μ•ˆμ„ μ œμ•ˆν•¨.\", \"μˆ˜ν–‰\", \"rgba(0, 128, 0, 0.3)\"),\n (\"μƒλŒ€κ°€ μ²˜ν•œ 상황을 μ΄ν•΄ν•˜κ³  κ³΅κ°ν•˜λŠ” νƒœλ„λ₯Ό 가지고 μΉœκ΅¬λ“€κ³Ό μ›λ§Œν•œ 관계λ₯Ό λ§Ίκ³  κ°ˆλ“±μ„ 쑰정함.\", \"ꡐ사총평\", \"rgba(128, 128, 128, 0.3)\"),\n (\"쀑간 놀이 μ‹œκ°„μ— μš΄λ™μž₯을 μ‚¬μš©ν•˜λŠ” 방법 μ •ν•˜κΈ°λ₯Ό 주제둜 ν•œ ν† μ˜μ—μ„œ μ•Œλ§žμ€ 근거와 λ’·λ°›μΉ¨ν•  수 μžˆλŠ” 자료λ₯Ό ν† λŒ€λ‘œ μžμ‹ μ˜ μ˜κ²¬μ„ νƒ€λ‹Ήν•˜κ²Œ μ œμ‹œν•˜λ©΄μ„œ λ‹€λ₯Έ μ‚¬λžŒμ˜ μ˜κ²¬μ„ λŠ₯λ™μ μœΌλ‘œ μˆ˜μš©ν•˜κ³  효과적으둜 μ˜κ²¬μ„ μ‘°μ •ν•˜λŠ” λŠ₯λ ₯을 λ³΄μž„.\", \"μˆ˜ν–‰\", \"rgba(0, 128, 0, 0.3)\"),\n (\"μƒλŒ€μ˜ μ˜κ²¬μ„ μ‘΄μ€‘ν•˜κ³  ν˜‘λ ₯ν•˜λŠ” νƒœλ„λ₯Ό λ³΄μž„.\", \"μ—­λŸ‰\", \"rgba(255, 0, 0, 0.3)\")\n)\n```"
17
+ },
18
+ {
19
+ "role": "user",
20
+ "content": "[6κ΅­01-02]μ˜κ²¬μ„ μ œμ‹œν•˜κ³  ν•¨κ»˜ μ‘°μ •ν•˜λ©° ν† μ˜ν•œλ‹€."
21
+ },
22
+ {
23
+ "role": "assistant",
24
+ "content": "```annotated_text(\n (\"ν† λ‘ μ΄λ‚˜ ν† μ˜ ν™œλ™μ— 적극적으둜 μ°Έμ—¬ν•˜λ©° μžμ‹ μ˜ μ˜κ²¬μ„ λ…Όλ¦¬μ μœΌλ‘œ 잘 μ œμ‹œν•¨.\", \"μ„±μ·¨μˆ˜μ€€\", \"rgba(0, 0, 255, 0.3)\"),\n (\"νŒ€ ν”„λ‘œμ νŠΈμ—μ„œ λ‹€λ₯Έ νŒ€μ›λ“€μ˜ μ˜κ²¬μ„ μ‘΄μ€‘ν•˜κ³  κ³΅λ™μ˜ λͺ©ν‘œλ₯Ό μœ„ν•΄ μ˜κ²¬μ„ 잘 μ‘°μ •ν•˜λŠ” λŠ₯λ ₯을 보여 μ£Όμ—ˆμŒ.\", \"μˆ˜ν–‰\", \"rgba(0, 128, 0, 0.3)\"),\n (\"μžμ‹ μ˜ 생각과 μ˜κ²¬μ„ 효과적으둜 λΆ„λͺ…ν•˜κ²Œ ν‘œν˜„ν•˜λŠ”λ° 어렀움이 μ—†λŠ” κ²ƒμœΌλ‘œ λ³΄μž„.\", \"μ—­λŸ‰\", \"rgba(255, 0, 0, 0.3)\"),\n (\"학생은 μ„ μ˜μ˜ μΆ©λŒμ„ 톡해 μ„±μž₯ν•˜κ³  있으며, 이λ₯Ό 톡해 배렀와 ν˜‘λ ₯에 λŒ€ν•œ μ€‘μš”μ„±μ„ μΈμ§€ν•˜κ³  있음.\", \"ꡐ사총평\", \"rgba(128, 128, 128, 0.3)\")\n)\n```"
25
+ }
26
+ ],
27
+ temperature=1,
28
+ max_tokens=4308,
29
+ top_p=1,
30
+ frequency_penalty=0,
31
+ presence_penalty=0
32
+ )
33
+ return response['choices'][0]['message']['content']
34
+
35
+
36
+ # Streamlit μ•±μ˜ 제λͺ© 및 μ„€λͺ…
37
+ st.title("μ„±μ·¨κΈ°μ€€ 기반 ν•™μƒμ˜ νŠΉμ„± 및 ν™œλ™ 평가 생성")
38
+ st.write("성취기쀀을 μž…λ ₯ν•˜μ‹œλ©΄, ν•΄λ‹Ή 성취기쀀에 κΈ°λ°˜ν•œ ν•™μƒμ˜ νŠΉμ„± 및 ν™œλ™μ— λŒ€ν•œ 평가λ₯Ό \n\n [학생 ν™œλ™, μ„±μ·¨ μˆ˜μ€€, κ΅μ‚¬μ˜ 총평, 학생 μ—­λŸ‰] 4가지 μš”μ†Œλ₯Ό μ‘°ν•©ν•˜μ—¬ μ œκ³΅ν•©λ‹ˆλ‹€.")
39
+
40
+ # μž…λ ₯μ°½
41
+ achievement_standard = st.text_input("μ„±μ·¨κΈ°μ€€ μž…λ ₯:")
42
+
43
+ # "평가 생성" λ²„νŠΌ 클릭 μ‹œμ˜ λ™μž‘
44
+ if st.button("평가 생성"):
45
+ result = generate_annotated_text(achievement_standard)
46
+ # κ²°κ³Ό 좜λ ₯
47
+ # st.text(result.replace('```', '')) #κ²°κ³Όμ—μ„œ ``` 제거
48
+ exec(result.replace('```', ''))
49
+
50
+