Chodzi o to aby przenieść pytania i odpowiedzi do innego pliku, Utworzyć plik zewnętrzny z danymi i wczytać je do programu przed użyciem.
Jak może wyglądać zapisanie pytań i odpowiedzi w oddzielnym pliku? W jaki sposób ma być importowane? jaki format pliku txt czy może jakiś inny typu json albo CSV?
Zaznaczam że dopiero zaczynam swoją przygodę z programowaniem.
kod do którego chcę zaimplementować to rozwiązanie ( wiem że mam mały bałagan, ale staram się go uporządkować):
import random
import re
import webbrowser
from gtts import gTTS
import os
import pygame
import wikipediaapi
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
#odtwarzanie głosowe
def read_aloud(text):
tts = gTTS(text=text, lang='pl')
tts.save("response.mp3")
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load("response.mp3")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
continue
pygame.mixer.music.stop()
pygame.quit()
os.remove("response.mp3")
#pytania odpowiedzi
answers = {
"jak się masz": ["Dobrze, dziękuję", "Świetnie"],
"co robisz": ["Rozmawiam z tobą", "Odpowiadam na pytania"],
"jakie jest twoje imię": ["mam na imię czacik", "Jestem Czacik"],
"co tam": ["wszystko dobrze", "jest ok"],
"mam pytanie": ["o co chodzi", "to je zadaj"],
}
#formatowanie tekstu
def preprocess_question(question):
# usuwanie znaków zapytania i przecinków
question = re.sub("[?,]", "", question)
# zamiana na małe litery
return question.lower()
#wikipedia
wiki_wiki = wikipediaapi.Wikipedia(language='pl', extract_format=wikipediaapi.ExtractFormat.WIKI)
#notatki
def create_note(title, text):
note = title + "\n" + text
with open(os.path.join("C:/Users/antek/Desktop/AI chatbot/notatki", title + ".txt"), "w") as f:
f.write(note)
def open_note(title):
with open(os.path.join("C:/Users/antek/Desktop/AI chatbot/notatki", title + ".txt"), "r") as f:
return f.read()
#e-mail - 1
def send_email(to, subject, message):
# Tworzenie obiektu MIMEMultipart
msg = MIMEMultipart()
# Dodawanie nagłówków
msg['From'] = "mail@gmail.com"
msg['To'] = to
msg['Subject'] = subject
# Dodawanie treści wiadomości
msg.attach(MIMEText(message, 'plain'))
# Wysyłanie wiadomości
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login("mail@gmail.com", "hasło")
server.send_message(msg)
server.quit()
#wikipedia - 2
def search_wikipedia(query):
page_py = wiki_wiki.page(query)
if page_py.exists():
return page_py.text[0:min(len(page_py.text), 1500)]
else:
return "Nie znam odpowiedzi na to pytanie"
def chatbot_response(question):
preprocessed_question = preprocess_question(question)
# sprawdzenie, czy pytanie zaczyna się od "otworz "
if preprocessed_question.startswith("otworz "):
# otwieranie pliku chrome
if preprocessed_question == "otworz chrome":
webbrowser.open("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe")
return "Otwieranie Chrome"
# otwieranie pliku zoom
elif preprocessed_question == "otworz zoom":
webbrowser.open("C:/Users/antek/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Zoom/zoom")
return "Otwieranie Zoom"
# otwieranie pliku "Discord"
elif preprocessed_question == "otworz discord":
webbrowser.open("C:/Users/antek/AppData/Local/Discord/update.exe")
return "Otwieranie discorda"
# otwieranie pliku minecraft
elif preprocessed_question == "otworz minecraft":
webbrowser.open("C:/Users/antek/AppData/Roaming/Crystal-Launcher/launcher.exe")
return "Otwieranie minecraft"
#otwieranie dziennika
elif preprocessed_question == "otworz dziennik":
webbrowser.open("https://portal.librus.pl/rodzina")
return "Otwieranie dziennika"
#otworz youtube
elif preprocessed_question == "otworz youtube":
webbrowser.open("https://youtube.com")
return "Otwieranie youtube"
elif preprocessed_question == "otworz youtuba":
webbrowser.open("https://youtube.com")
return "Otwieranie youtube"
#facebook
elif preprocessed_question == "otworz facebooka":
webbrowser.open("https://facebook.com")
return "Otwieranie facebooka"
elif preprocessed_question == "otworz facebook":
webbrowser.open("https://facebook.com")
return "Otwieranie facebooka"
else:
return "Nieznana komenda"
# Wyszukiwanie w google
elif preprocessed_question.startswith("wyszukaj") or preprocessed_question.startswith("znajdź") or preprocessed_question.startswith("szukaj" ):
query = preprocessed_question.replace("wyszukaj", "").replace("znajdź", "").replace("szukaj", "").strip()
webbrowser.open(f"https://www.google.com/search?q={query}")
return f"Wyszukiwanie '{query}' w Google"
##################################### wikipedia ciąg dalszy
if "wikipedia" in preprocessed_question or "wikipedii" in preprocessed_question:
query = preprocessed_question.replace("wikipedia", "").replace("wikipedii", "").strip()
response = search_wikipedia(query)
return response
#mail ciąg dalszy
elif preprocessed_question == "wyślij maila" or preprocessed_question == "mail" or preprocessed_question == "e-mail" or preprocessed_question == "wyślij e-mail":
read_aloud("Rozpoczynanie funkcji wysyłania e-maila. Podaj adres e-mail odbiorcy:")
recipient_email = input("Podaj adres e-mail odbiorcy: ")
read_aloud("Podaj temat e-maila:")
subject = input("Podaj temat e-maila: ")
read_aloud("Podaj treść e-maila:")
message = input("Podaj treść e-maila: ")
send_email(recipient_email, subject, message)
return "Wysłano e-mail"
#notatka ciąg dalszy
if question.startswith("utwórz notatkę") or question.startswith("zrób notatkę") or question.startswith("notatka"):
title = input("Podaj tytuł notatki: ")
text = input("Podaj treść notatki: ")
create_note(title, text)
return "Notatka została utworzona"
elif question.startswith("otwórz notatkę") or question.startswith("pokaż notatkę") or question.startswith("uruchom notatkę"):
title = input("Podaj tytuł notatki: ")
text = open_note(title)
return text
#pytania i odpowiedzi 2
elif preprocessed_question in answers:
# losowe wybranie odpowiedzi z dostępnych
return random.choice(answers[preprocessed_question])
else:
return "Nie znam odpowiedzi na to pytanie"
while True:
question = input("Pytanie: ")
response = chatbot_response(question)
print("Odpowiedź: ", response)
read_aloud(response)
while True:
question = input("Pytanie: ")
response = chatbot_response(question)
print("Odpowiedź: ", response)