Wikipedie:GPT generátor komentářů k jazyku článku

Z Wikipedie, otevřené encyklopedie

Následující program v Pythonu 3 je založený na umělé inteligenci. Projde zadaný článek české Wikipedie (jeho jméno zapište přímo do programu, jde o "holý" program bez uživatelského rozhraní) a vypíše komentáře k jeho jazykové stránce. Berte je s rezervou, protože současná úroveň modelů není ještě dost jazykově zdatná, ale často se nejdou i užitečné komentáře.

Protože program přes API provolává model řady GPT, je potřeba mít na stránkách firmy OpenAI zakoupeno právo model takto používat (https://openai.com/api/).

import requests
from bs4 import BeautifulSoup
import re
from openai import OpenAI
client = OpenAI(api_key=my_api_key)   # za my_api_key dosadit klíč od firmy OpenAI - lze ho zakoupit na jejich webu

# Vstupy:
page_title = "Československý pavilon na Světové výstavě 1967"  # jméno článku v uvozovkách  

def wiki_plain_text(article_name, language='cs'):
    url = f"https://{language}.wikipedia.org/wiki/{article_name}"
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')

    #for unwanted in soup(["table", "figure", "sup"]):  # remove unwanted tag elements
    #    unwanted.extract()                             

    paras = []    
    article_text = ''
    pridej = True
    for header in soup.find(id='mw-content-text').find_all(["h2", "h3", "h4", "p", "ul", "ol", "li"]):
        headertext = re.sub(r'\[.*?\]', '', header.text.strip())
        headertext = headertext.replace('\xa0', ' ')
        delka = len(headertext)
        if header.name == "p":
            article_text += re.sub('\n', ' ', headertext) + "\n"
            if delka > 50:
                pridej = True
        else:
            if pridej:
                paras.append(article_text)
            article_text = headertext+'\n'
            pridej = False
    if pridej:    
        paras.append(article_text)
    
    return paras


def korektor(text):
    prompt = """
    If there are language problems in the following Czech text, describe them.
    Cite the word or words with the problem, then shortly descibe what is wrong and suggest a solution.
    If the text is correct, write nothing. Do not comment the overal quality of the text:
    """
    prompt = """
    Pokud jsou v následujícím textu hrubé jazykové chyby nebo překlepy, popiš je a navrhni opravu.
    Také upozorni na místa, kde sloh není v souladu s akademickým stylem psaní.
    Vypiš jenom seznam chyb, nevypisuj opravené znění. Piš stručně a v bodech.
    Pokud je text v pořádku, nepiš nic a nekomentuj ho:
    """
    response = client.chat.completions.create(
        model="gpt-4o",
        max_tokens=1200,
        messages=[
            {
              "role": "user",
              "content": prompt + " " + text
            },]
          )

    summary = ''
    if response.choices[0].message.content is not None:
            summary = response.choices[0].message.content
    return summary

for t in wiki_plain_text(page_title):
    print("\n\n"+t[:30]+"...")
    print(korektor(t))