generated from streamlit/streamlit-hello
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathui.py
88 lines (73 loc) · 3.66 KB
/
ui.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import os
import app
from typing import List
import streamlit as st
from langchain.docstore.document import Document
from app import core
from core.parsing import File
import openai
from streamlit.logger import get_logger
from typing import NoReturn
logger = get_logger(__name__)
openai_api_key = st.secrets["OPENAI_API_KEY"]
def wrap_doc_in_html(docs: List[Document]) -> str:
"""Schrijf elke pagina in het document gescheiden door een nieuwe regel in <p> tags"""
text = [doc.page_content for doc in docs]
if isinstance(text, list):
# Toevoegen horizontale rules between pages
text = "\n<hr/>\n".join(text)
return "".join([f"<p>{line}</p>" for line in text.split("\n")])
def is_query_valid(query: str) -> bool:
if not query:
st.error("Je moet hier een vraag stellen!")
return False
return True
def is_file_valid(file: File) -> bool:
if (
len(file.docs) == 0
or "".join([doc.page_content for doc in file.docs]).strip() == ""
):
st.error("Het document kan niet worden gelezen! Zorg ervoor dat het document tekst bevat.")
logger.error("Het document kan niet worden gelezen.")
return False
return True
def display_file_read_error(e: Exception, file_name: str) -> NoReturn:
st.error("Error lezen bestand. Is het bestand misschien corrupted of encrypted")
logger.error(f"{e.__class__.__name__}: {e}. Extension: {file_name.split('.')[-1]}")
st.stop()
@st.cache_data(show_spinner=True)
def is_open_ai_key_valid(openai_api_key, model: str) -> bool:
if model == "debug":
return True
if not openai_api_key:
st.error("Je hebt een geldig OpenAI API key nodig!")
return False
try:
system_prompt = """
Je bent een Nederlandse vriendelijke en behulpzame instructiecoach die docenten op een MBO school helpt bij het plannen van een les.
De docenten geven les aan niveau 1 studenten. Op basis van het ingelezen {{BESTAND}}, en de vraag van de docent aan jou om een lesplan te maken voor een {{ONDERWERP}} van een les met als doel {{LESDOEL}}, maak jij het lesplan.
Als je te weing informatie heb vraag je dat aan de docent. Jij moet in ieder geval van de docent weten:
1. {{ONDERWERP}}: In grote lijnen waar de les over gaat,
2. {{LESDOEK}}: Welk doel er met de les wordt nagestreefd.
3. VOORKENNIS: Welke voorkennis de studenten hebb.
Doe het stap voor stap:
- De docent vraagt eerst of je een lesplan voor hem/haar wilt maken.
- Jij vraagt dan om THEMA, SPECIFIEK, en VOORKENNIS
- Vervolgens ga je het lesplan maken
Gebruik een helder leerdoel want dat is wat de studenten na de les moeten begrijpen en/of kunnen doen.
Maak het lesplan in markdown formaat met een verscheidenheid aan lestechnieken en -modaliteiten,
waaronder directe instructie, controleren op begrip
(inclusief het verzamelen van bewijs van begrip van een brede steekproef van studenten), discussie,
een boeiende activiteit in de klas en een opdracht.
Leg uit waarom je specifiek voor elk kiest. Probeer het niet groter te maken dan 2 A4-tjes.
PRAAT EN GEEF ANTWOORD IN HET NEDERLANDS """
openai.ChatCompletion.create(
model=model,
messages=[{"role": "system", "content": system_prompt}, {"role": "user", "content": "Hallo."}],
api_key=openai_api_key,
)
except Exception as e:
st.error(f"{e.__class__.__name__}: {e}")
logger.error(f"{e.__class__.__name__}: {e}")
return False
return True