Jump to content

Wikifunctions:Status-Updates/2024-09-13

From Wikifunctions
This page is a translated version of the page Wikifunctions:Status updates/2024-09-13 and the translation is 100% complete.
Wikifunctions Status-Updates Translate

Abstrakte Wikipedia über Mailingliste Support-Team Abstrakte Wikipedia auf IRC Wikifunctions auf Telegram Wikifunctions auf Mastodon Wikifunctions auf Twitter Wikifunctions auf Facebook Wikifunctions auf Youtube Website von Wikifunctions Translate

Die Dagbani-Wikipedia wird unser erstes Wiki für die Integration von Wikifunctions sein

Während wir die Arbeit dieses Quartals abschließen und mit der Planung für das nächste beginnen, möchte ich den Fortschritt unserer größten Initiative in diesem Geschäftsjahr besprechen: Die Integration von Wikifunctions in Wikipedia-Artikel. Unsere Fokussprachen für das Projekt sind Bengalisch, Igbo, Hausa, Dagbani und Malayalam. Wir haben Dagbani als erste Wikipedia für diese Integration ausgewählt.

In diesem Quartal haben wir uns auf die Entwicklung eines Designprototyps konzentriert, interne Teams bei wichtigen Entscheidungen beraten und wertvolle Erkenntnisse aus den ersten Integrationserfahrungen von Wikidata gewonnen. Jetzt sind wir bereit, diese Erkenntnisse auf die Dagbani-Wikipedia anzuwenden und ein Design zu erstellen, das nicht nur nahtlos zu diesem Wiki passt, sondern sich auch in Zukunft problemlos auf größere Wikis skalieren lässt.

Die Einbeziehung von Benutzergruppen in die Gestaltung eines solchen neuen Projekts / einer solchen Funktion ist unerlässlich, um Einblicke in die Bedürfnisse und Probleme der Benutzer zu gewinnen. Deine Rückmeldung stellt sicher, dass das Produkt die tatsächlichen Erwartungen erfüllt und die Benutzerfreundlichkeit und Relevanz verbessert. Frühzeitige Beiträge helfen dabei, Probleme vor der Einführung zu erkennen und aufwendige Neugestaltungen zu vermeiden. Letztendlich fördert die Einbeziehung der Benutzer die Eigenverantwortung und die Akzeptanz und den Erfolg des Produkts.

Wir möchten diese Produktphilosophie in unsere Integrationsarbeit übernehmen. Wir werden in den kommenden Wochen Kontakt zu unserer Dagbani-Wikipedia-Community aufnehmen, um eine Arbeitsgruppe zu bilden, die uns dabei helfen kann, dieses Projekt auf sinnvolle Weise in die Dagbani-Wikipedia zu integrieren. Wir möchten ein vielfältiges Team aus neuen Autoren, erfahrenen Autoren und leidenschaftlichen Lesern bilden. Wir streben eine kleine Gruppe von 3–5 Personen an. Unsere Idee ist es, uns regelmäßig mit dieser Gruppe zu treffen, sie in Prüfungen des Designprototyps und lokale Demo-Überprüfungen einzubeziehen, Produktideen und -visionen auszutauschen und so unser Vertrauen in die Nützlichkeit und Einsatzbereitschaft unserer Lösungen zu stärken.

Probleme mit der Zuverlässigkeit der Seite

Wie viele von euch wissen, hatten wir in den letzten Tagen einige Stabilitätsprobleme mit der Seite, die teilweise durch einen Anstieg des Webcrawler-Verkehrs verursacht wurden, der die Server überlastete, die für die Ausführung von Wikifunctions vorgesehen sind. Dies hat sich in Form mehrerer Probleme gezeigt, darunter der Ausfall der gesamten Seite (T374318) oder der zeitweise Ausfall von Seiten, die manchmal funktionieren (T374305 und T374241). Wir haben einige Abhilfemaßnahmen ergriffen, um zu versuchen, die Belastung nicht-menschlicher Benutzer zu reduzieren. Dazu gehörte die vorübergehende Sperrung des ClaudeBot von Anthropic über robots.txt und das Ersetzen der standardmäßigen, Wikimedia-weiten Suite zur Überwachung der Zuverlässigkeit der Seite durch eine benutzerdefinierte, relevantere, einfachere mit weniger Belastung (T374442). Diese Maßnahmen hatten bisher jedoch nur begrenzte Auswirkungen und wir überprüfen die Situation weiterhin und versuchen, sie zu verbessern. Wir entschuldigen uns für die Störungen.

Gleichzeitig stellen wir auch ein neues Problem bei der Prüfung fest und vereinfachen derzeit Arbeitsabläufe zur Prüfung. Dies kann zu Problemen führen, da Objekte möglicherweise nicht geprüft werden. Bitte informiere uns, wenn du seltsame neue Fehler feststellst, insbesondere fehlende Fehlermeldungen, wenn sie vorhanden sein sollten.

Letzte Änderungen an der Software

Unabhängig von den oben genannten Problemen der Seite wurden wir auf einen Fehler im Code der letzten Woche aufmerksam gemacht, der dazu führte, dass du keine Instanzen von Typen im Selektor auswählen konntest. Wir haben eine schnelle Lösung dafür erstellt, mit einem Test, um zukünftige Regressionen zu vermeiden, und es am Montag in der Produktion umzusetzen (T374199). Wir sind GrounderUK und anderen Community-Mitgliedern dankbar, die dies bemerkt haben, und entschuldigen uns für die Störung.

Als zusätzliche Störung sind letzte Woche leider alle unsere Ende-zu-Ende-API-Tests, die das Beta-Cluster verwenden, ausgefallen. Daher haben wir diese Tests vorübergehend deaktiviert und verlassen uns jetzt nur noch auf manuelle Tests (T374242).

Ein großer Teil unserer vierteljährlichen Arbeit ist die Vorbereitung der "Wikipedia-Integration", bei der du die Ergebnisse von Wikifunctions-Aufrufen in Wikitext einbinden kannst (T261472). Wir haben dort einige Verbesserungen vorgenommen, insbesondere Änderungen zur Trennung der Belange zwischen dem 'Client'-Code, der auf Wikipedias läuft, und dem 'Repo'-Code, der auf Wikifunctions.org läuft. Mehr von dieser Arbeit sollte bald verfügbar sein, inklusive einer Demonstration.

Ein weiterer Teil unserer vierteljährlichen Arbeit ist die Vorbereitung auf die Möglichkeit, Wikidata-Datenobjekte in Funktionsaufrufen zu referenzieren (T282926). Wir haben einige Änderungen an unserem konzeptionellen Referenzmodell vorgenommen, von denen wir erwarten, dass sie für die nächsten Monate eine vorübergehende Lösung darstellen, damit Wikidata-Referenzen vor allen größeren Reformen der Typkalkulation verwendet werden können. Das bedeutet, dass unser Code zur Überprüfung, ob etwas eine Referenz ist, zumindest vorerst die Formen "Q1234" oder "L1234" nicht mehr erkennt, sondern nur noch "Z1234" oder "Z1234K1" (T373859). Der Back-End-Code zum Zugriff auf diese und zur Formalisierung in Typen (T370072) wird fortgesetzt, und wir hoffen, ihn bald vorführen zu können.

Wir haben eine Handvoll UX-Verbesserungen vorgenommen, die diese Woche eingeführt werden. Wenn du Änderungen über das Info-Steuerelement vornimmst (anstatt über den Bearbeitungsablauf für die gesamten Seite), haben wir die Schaltfläche "Abbrechen" im Dialogfeld zum Veröffentlichen so korrigiert, dass du zum Editor zurückkehrst, anstatt alle deine Änderungen zu verwerfen – der Fehler tut uns leid (T360062). Wenn ein Z6/Zeichenketten-Wert sehr lang ist, bitten wir deinen Browser jetzt, den Text umzubrechen, anstatt ihn überlaufen zu lassen (T373987). Wir haben die Breite des Funktionseditors für schmale Bildschirme (unter 500 Pixel), wie Smartphones, korrigiert (T366675). Wir haben den Objektselektor aktualisiert, um die Einschränkungen hinsichtlich der zu suchenden Funktionen in bestimmten Kontexten, in denen wir die erwartete 'Form' kennen, intelligenter zu handhaben (T372995).

Wir haben auch einige allgemeine technische Verbesserungen vorgenommen. Wir haben unsere alte temporäre Tooltip-Komponente durch die richtige von Codex ersetzt, da diese nun existiert (T298040). Damit ist unser Ersatz durch Upstream-Komponenten fast abgeschlossen. Uns fehlt nur noch die Tabelle, die auf Funktionsseiten zum Auflisten von Implementierungen und Tests verwendet wird (T373197). Wir sind dem Team Design-System sehr dankbar für seine Arbeit bei der Entwicklung der Codex-Bibliothek bis zu dem Punkt, an dem unsere Ad-hoc-Versionen nicht mehr benötigt werden. Im Rahmen unserer langwierigen Migration von Zeichenketten zu Referenzen für Z61/Programmiersprachen-Objekte (T287153) haben wir die Einstellung der Unterstützung für diese in der UX-Ebene abgeschlossen. Alle vorhandenen Inhalte auf Wikifunctions.org wurden im Mai/Juni migriert, daher sollte dies keine störenden Auswirkungen haben.

Wir und der gesamte von Wikimedia bereitgestellte Code verwenden seit dieser Woche die neueste Version der Codex UX-Bibliothek, v1.12.0. Wir haben eine Änderung gefunden, die die Verwendung der Komponente "Lookup" beeinträchtigt hat. Wir haben diese Änderung umgangen (T374248), bevor wir einen Upstream-Fix erstellt haben (T374246). Wir sind der Meinung, dass es keine weiteren für den Benutzer sichtbaren Änderungen an Wikifunctions geben sollte. Kommentiere daher bitte in der Projektdiskussion oder erstelle einen Phabricator-Task, wenn du ein Problem entdeckst.

Funktion der Woche: Zähle Teil-Zeichenketten

Kürzlich waren LLMs in den Nachrichten, weil sie bei der Frage “Wie oft kommt der Buchstabe ‘r’ in ‘strawberry’ vor?” gescheitert sind. (Berichte hierzu findest du problemlos in verschiedenen Foren und auf Nachrichtenseiten.)

Bei Wikifunctions gibt es dieses Problem nicht: Mit der Funktion count substrings (Z14450) können wir ganz einfach abfragen, wie oft die Teil-Zeichenkette ‘r’ in der Zeichenkette ‘strawberry’ vorkommt, und es überrascht nicht, dass sie 3 zurückgibt.

Die Funktion hat zwei Implementierungen, eine in JavaScript und eine in Python:

  • die Python-Implementierung basiert einfach auf der integrierten Methode .count des Zeichenketten-Objekts in Python
  • die JavaScript-Implementierung verwendet die Funktion match, die einen regulären Ausdruck basierend auf der zu suchenden Zeichenkette annimmt und alle Übereinstimmungen der zweiten Zeichenkette in der ersten zurückgibt. Diese wird dann mithilfe des Attributs length gezählt. Es gibt einen Sonderfall, wenn keine Übereinstimmungen vorliegen. In diesem Fall wird 0 zurückgegeben.

Die JavaScript-Implementierung ist ein gutes Beispiel für eine scheinbar einfache Funktionalität mit einer überraschend komplexen Implementierung. Und dennoch ist die vorgeschlagene Implementierung fehleranfällig. Da das zweite Argument in einen regulären Ausdruck umgewandelt wird, bringen einige Symbole die Suche durcheinander. Ich habe einen Test für diesen Fall hinzugefügt, den vorletzten in der Liste unten. Glücklicherweise ist nur die Python-Implementierung verbunden, daher wird der Fehler in der JavaScript-Implementierung tatsächlich nicht verwendet -- das Genehmigungssystem funktionierte wie vorgesehen.

Die Funktion hat sechs Tests:

Da ich die letzten beiden Tests beim Schreiben dieses Beitrags hinzugefügt habe, sind sie noch nicht verbunden.

Besonders interessant ist der dritte Test, der zeigt, wie eine scheinbar einfache Funktion sehr unterschiedliche Interpretationen haben kann: Man könnte argumentieren, dass “aaaaa” die Zeichenkette “aa” viermal enthält, nämlich an den Positionen 1, 2, 3 und 4, aber die Funktion zählt auf eine sogenannte gierige Weise: “aa” passt nur zweimal in “aaaaa”. Deshalb sind Tests so wichtig, um die genaue Bedeutung der Funktion aufzuzeigen und sich darauf zu einigen.

Es wäre toll, mehr Tests mit anderen Schriften zu sehen, wie zum Beispiel Arabisch oder Chinesisch. Es ist schön, dass Kyrillisch in einem der Tests vertreten ist.

Es ist nicht überraschend, dass aktuelle LLMs aufgrund ihrer Arbeitsweise mit dieser Frage zu kämpfen haben. Wir sind fest davon überzeugt, dass eine gute zukünftige Architektur für eine Frage-Antwort-Maschine nicht nur das Modell selbst nutzt, sondern auch einen großen Dokumentenspeicher wie das Internet, eine Wissensdatenbank wie Wikidata und ein Funktionsrepositorium wie Wikifunctions. Jeder dieser Punkte erweitert die Art von Fragen drastisch, die das System mit hoher Genauigkeit und Zuverlässigkeit beantworten kann.