|
import os |
|
from dotenv import load_dotenv |
|
import json |
|
from openai import OpenAI |
|
import streamlit as st |
|
|
|
load_dotenv() |
|
client = OpenAI(api_key=os.environ['OPENAI_API_KEY']) |
|
|
|
def classify_text(content: str): |
|
response = client.chat.completions.create( |
|
model="gpt-4o", |
|
messages=[{"role": "system", "content": 'Sei ein Textklassifizierungsmodell'}, |
|
{"role": "user", |
|
"content": 'Klassifiziere den folgenden Text in einer der 3 Klassen: "EventDetail", "EventOverview", "None". "EventDetail" enthält detallierte Informationen zu einer Veranstaltung, wobei Werbung / Vorschau für weitere Veranstaltungen auf der Seite enthalten sein können. "EventOverview" enthält eine Liste mehrerer Events (mindestens Titel und Datum einzelner Veranstaltungen müssen enthalten sein) so wie einen Link pro Event für weitere Informationen. "None" enthält keine Informationen über spezifische Veranstaltungen. Gebe die Klasse in JSON Format (Kein Markdown) zurück: z.B.: {"class": "EventDetail"} \n' + content}], |
|
|
|
) |
|
return json.loads(response.choices[0].message.content) |
|
|
|
def remove_boilerplate(content: str): |
|
response = client.chat.completions.create( |
|
model="gpt-4o", |
|
messages=[{"role": "system", "content": 'Sei ein Textextraktionstool'}, |
|
{"role": "user", |
|
"content": 'Gebe nur den Abschnitt des Textes zurück, der ALLE Veranstaltungsinformationen enthält auch Beschreibungen zur Veranstaltung. Das Markdown muss dabei erhalten bleiben. Gib die Antwort in Markdown Format zurück.' + content}], |
|
|
|
) |
|
return str(response.choices[0].message.content).replace("```markdown", "").replace("```","") |
|
|