Spaces:
Sleeping
Sleeping
File size: 5,458 Bytes
1016840 93aa6d4 1016840 b46cc3a a188586 b46cc3a 333e113 5bb9191 1016840 27cd34c 480ddb6 27cd34c 480ddb6 27cd34c 94d73b2 480ddb6 333e113 99b18ba 27cd34c 9446fdb 333e113 9446fdb 333e113 3f7fd06 9418714 333e113 9446fdb 04722d4 cd9713c 04722d4 80fe505 0d1bfc1 80fe505 0d1bfc1 80fe505 0d1bfc1 80fe505 0d1bfc1 3f7fd06 0d1bfc1 3f7fd06 04722d4 9446fdb 68ed3a1 6cf5a08 9446fdb 1016840 b1b89ed 51d395e b1b89ed 18a5781 345f778 1016840 9446fdb 1016840 eaa9b40 345f778 f025da4 1016840 99b18ba |
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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
import openai
import gradio as gr
import os
openai.api_key = os.environ["OpenAPI_Key"]
# Function to make API call
def api_call(messages, temperature=0.5, model="gpt-4o-2024-05-13"):
return openai.chat.completions.create(
messages=messages,
temperature=temperature,
model=model
).choices[0].message.content
def chunk_HTMLs(text, delimiter="HTML (ID:"):
HTMLs = text.split(delimiter)
HTMLs = HTMLs[1:] if HTMLs[0] else HTMLs
html_dict = {}
for html in HTMLs:
end_id_index = html.find(")")
if end_id_index != -1:
html_id = html[:end_id_index].strip()
html_content = html[end_id_index+1:].strip()
full_html_id = "HTML: (ID: " + html_id + ")"
html_dict[full_html_id] = delimiter + "HTML (ID: " + html_id + ") " + html_content
return html_dict
def process_course(input_text, term_zorgvrager="cliënt", term_zorgprofessional="begeleider"):
# Processes input text, extracts HTML chunks, analyzes each using an OpenAI model,
# and conducts a second, separate analysis on each qualifying chunk,
stored_HTMLs = chunk_HTMLs(input_text)
results = []
last_html_id = None # Track the last processed HTML ID
for html_id, html_content in stored_HTMLs.items():
if last_html_id and html_id != last_html_id:
results.append("\n") # Add extra newline for a new HTML ID group
messages = [
{"role": "system", "content": r"""Analyseer het perspectief van deze tekst, bedoeld voor zorgprofessionals. Adresseert de tekst altijd de zorgverlener? Of wordt soms ook de zorgvrager aangesproken?
Geef je antwoord in een van onderstaande zinnen:
Oordeel: het perspectief is altijd zorgverlener.
Oordeel: het perspectief is deels zorgvrager."""},
{"role": "user", "content": html_content}
]
oordeel = api_call(messages)
results.append(f"{html_id}: {oordeel}")
if "deels zorgvrager" in oordeel:
follow_up_messages = [
{"role": "system", "content": r"""# Opdracht
Kijk naar de hieronder gegeven tekst bedoeld voor Persoonlijk Begeleiders (zorgprofessionals). Jij analyseert of de tekst volledig voor de juiste doelgroep geschreven is, en schrijft die delen om die aan de zorgvrager gericht zijn in plaats van aan de begeleider. Zowel de hoofdtekst, als de vragen erbij, moeten geschikt zijn als onderwijsmateriaal voor persoonlijk begeleiders, níet voor de zorgvrager (de cliënt of patiënt). De tekst mag soms wel een 'neutrale' doelgroep aanspreken, voor universele algemene delen die voor ieder mens gelden, en dus ook voor de begeleider. Alleen het direct aanspreken van de zorgvrager is verkeerd.
## Voorbeelden
### Juist perspectief
- 'Als je moe bent, word je minder alert.'
Dit is prima, want hier wordt elke lezer aangesproken (want dit effect van moe worden is universeel).
- 'Als je te weinig drinkt, wordt je bloed stroperig.
Dit is prima, want hier wordt ook elke lezer aangesproken (want dit effect van vochtinname op bloed is ook universeel).
- 'Als de cliënt met je in discussie gaat en hierbij agressief wordt, is het belangrijk om je grenzen aan te geven.'
Dit is prima, want hier wordt de begeleider aangesproken, de juiste doelgroep voor de tekst.
### Verkeerd perspectief (inclusief correctie)
- 'Als je het moeilijk vindt om te plannen, vraag hierbij dan je begeleider om hulp.'
Hier wordt de zorgvrager aangesproken, terwijl de tekst voor de begeleider bedoeld is.
Correctie: 'De zorgvrager kan je om hulp vragen als hij of zij het moeilijk vindt om te plannen.'
- 'Diëten is al lastig genoeg. Daarom moet je zorgen dat je duidelijk weet wat de regels zijn voor je dieet.'
Hier wordt niet iedereen aangesproken (niet iedereen moet diëten), dus dit perspectief is verkeerd.
Correctie: ' 'Diëten is al lastig genoeg. Daarom moet de zorgvrager duidelijk weten wat de regels zijn voor zijn of haar dieet.'
# Antwoord
## Format
Antwoord in je analyse alleen met:
Citaat: [citaat van zin(nen) met verkeerde doelgroep]
Correctie: [gecorrigeerde zin(nen)])
## Overige instructies voor de correctie
- Citeer alleen de zinnen met een verkeerd perspectief.
- Verander zo min mogelijk aan de zin, verander alleen de doelgroep die wordt aangesproken.
- Spreek de begeleider aan met 'je' of in de derde persoon, met gebruik van de term 'begeleider'."""},
{"role": "user", "content": html_content}
]
follow_up_result = api_call(follow_up_messages, 0.7)
results.append(f"{follow_up_result}")
last_html_id = html_id # Update the last processed HTML ID after handling
results_string = '\n'.join(results) # Use single newline for final join
return results_string
inputs = [
gr.Textbox(lines=7, label="Input Text"),
gr.Textbox(lines=1, label="Term voor zorgvrager", placeholder="Leeg laten, werkt nog niet. Huidige defaultwaarde ingesteld voor MZ: zorgvrager"),
gr.Textbox(lines=1, label="Term voor zorgprofessional", placeholder="Leeg laten, werkt nog niet. Huidige defaultwaarde ingesteld voor MZ: begeleider")
]
outputs = gr.Textbox(lines = 20, label="Result", show_copy_button=True)
iface = gr.Interface(
fn=process_course,
inputs=inputs,
outputs=outputs,
title="Doelgroepanalyse",
description="Voer de tekst van een module in en druk op 'Submit'."
)
iface.launch() |