import streamlit as st import requests from bs4 import BeautifulSoup from sentence_transformers import SentenceTransformer, util from itertools import combinations import numpy as np import torch import json import os import sys # Load an embedding model model = SentenceTransformer('mixedbread-ai/deepset-mxbai-embed-de-large-v1') ideal_embedding = torch.load("ideal_embedding.pt", weights_only=True, map_location=torch.device("cpu")) keywords = json.loads(os.getenv('KEYWORDS')) region_keywords = json.loads(os.getenv('REGION_KEYWORDS')) max_relevance = float(os.getenv("MAX_RELEVANCE")) min_relevance = float(os.getenv("MIN_RELEVANCE")) max_completeness = float(os.getenv("MAX_COMPLETENESS")) min_completeness = float(os.getenv("MIN_COMPLETENESS")) max_regional_completeness = float(os.getenv("MAX_REGIONAL_COMPLETENESS")) min_regional_completeness = float(os.getenv("MIN_REGIONAL_COMPLETENESS")) def fetch_wikipedia_content(url): try: response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') paragraphs = soup.find_all('p') content = ' '.join([para.text for para in paragraphs]) return content except Exception as e: st.error(f"Error fetching article: {e}") return None def evaluate_contexts(student_texts): scores = {"relevance": [], "completeness": 0, "depth": [], "regional_completeness": None} all_found_keywords = set() regional_keyword_coverage = {region: 0 for region in region_keywords} combined_text = " ".join(student_texts) for text in student_texts: student_embedding = model.encode(text, convert_to_tensor=True) relevance_score = util.cos_sim(student_embedding, ideal_embedding).item() scores["relevance"].append(relevance_score) found_keywords = [keyword for keyword in keywords if keyword in text] unique_keyword_count = len(set(found_keywords)) all_found_keywords.update(found_keywords) # Calculate overall scores scores["relevance"] = np.mean(scores["relevance"]) scores["completeness"] = len(all_found_keywords) / len(keywords) scores["depth"] = np.mean(scores["depth"]) # Regional completeness: Check for region-specific keyword coverage for region, words in region_keywords.items(): regional_coverage = sum(1 for keyword in words if keyword in combined_text) / len(words) regional_keyword_coverage[region] = regional_coverage total_regional_keywords_found = sum(1 for region in region_keywords if any(keyword in combined_text for keyword in region_keywords[region])) total_regional_keywords = sum(len(words) for words in region_keywords.values()) scores["regional_completeness"] = np.mean(list(regional_keyword_coverage.values())) return scores # Streamlit UI st.title("🎄 Weihnachts-Traditionen: Kontextbewertung für KI") st.markdown(""" """, unsafe_allow_html=True) st.markdown( """
In dieser Übung lernst du, wie du Informationen effektiv auswählst und auswertest, um eine abgerundete Antwort für ein KI-Modell zu erstellen. Diese Aufgabe hilft dir, die wichtigsten Informationsquellen zu einem Thema zu finden, und vertieft dein Verständnis dafür, wie du einer KI einen Kontext geben kannst, um bessere und relevantere Antworten zu erhalten.
Weihnachten wird in Deutschland mit vielen Traditionen gefeiert, von denen einige allgemein bekannt und andere regionalspezifisch sind. Indem du recherchierst und relevante Inhalte auswählst, hilfst du der KI, eine Antwort zu formulieren, die den Charakter und die Vielfalt von Weihnachten in Deutschland einfängt.
Die Aufgabe besteht darin, verschiedene Suchstrategien auszuprobieren und Links zu Wikipedia-Artikeln zu sammeln, die die folgende Frage optimal beantworten:
„Welche unterschiedlichen Bräuche, Symbole und Traditionen prägen das Weihnachtsfest in Deutschland, und welche regionalen Unterschiede gibt es dabei?“
Nachdem du bis zu 8 Wikipedia-Links eingegeben hast, wird die Anwendung die Artikel anhand dieser Kriterien bewerten:
Diese Aufgabe veranschaulicht, wie du eine künstliche Intelligenz unterstützen kannst, indem du sorgfältig ausgewählte Informationen bereitstellst, um eine detaillierte Antwort zu erstellen. Du erfährst auch, wie Weihnachten in Deutschland gefeiert wird und bekommst einen Einblick in die einzigartigen regionalen Bräuche. Die Auswahl der passenden Quellen ist wichtig, um sich ein vollständiges und genaues Bild von einem Thema zu machen.