From c3e66c64c180bf56a82ac47654d860c1cdc08718 Mon Sep 17 00:00:00 2001 From: Falko Habel Date: Tue, 15 Oct 2024 22:29:32 +0200 Subject: [PATCH 1/3] added nice docs --- README.md | 44 +++++++++++++++++++++++++++++++++++++++-- docs/ui/screenshot.png | Bin 0 -> 45852 bytes 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 docs/ui/screenshot.png diff --git a/README.md b/README.md index 1a1abcc..09774b2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,43 @@ -# VeracityAI +# Veracity_AI -Projekt zum erkennen von Fake News. \ No newline at end of file +## Overview + +Veracity_AIn is designed to analyze articles and determine their authenticity using Natural Language Processing (NLP) techniques and machine learning models. The application consists of two main components: a user interface for inputting URLs or text, and a backend system that processes the data and makes predictions about the veracity of the article. + +## User Interface + +![Fake News Checker UI](/docs/ui/screenshot.png) + +The user interface is built using CustomTkinter, a modern and customizable Python UI library. The main screen is divided into three sections: + +1. **Input Section**: This section allows users to enter the URL of an article or paste the text directly into the input box. +2. **Result Section**: Displays the result of the analysis (Real or Fake) and the confidence level in percentage. +3. **Leaderboard Section**: Shows a list of news providers along with their fake news percentages, sorted by the highest fake news rate. + +## Backend System + +The backend system is responsible for processing user input, communicating with the database, and making predictions using the VeraMind model. Here's an overview of its components: + +### Data Models +- **TextData**: Stores the URL, text content, provider, result, confidence, and a flag indicating if the news is fake. +- **Provider**: Represents a news provider with attributes for name, total articles, fake articles count, and a list of associated TextData objects. + +### Database +The application uses a DuckDB database to store analyzed data. The `FakeNewsChecker` class manages database operations such as inserting new data and fetching existing data. + +### Machine Learning Model +- **VeraMindInference**: An inference engine for the VeraMind model, which is used to predict whether an article is real or fake news based on its text content. +- **ArticleRater**: A class that uses the Language Model (LLM) to generate a response based on the analyzed text data. + +## Usage + +To use the Fake News Checker application, follow these steps: + +1. Enter an article URL or paste the text directly into the input box. +2. Click on the "Check" button to initiate the analysis process. +3. Once the analysis is complete, the result (Real or Fake) and confidence level will be displayed in the result section. +4. The leaderboard section will automatically update with the latest news providers' fake news percentages. + +## License + +This application is licensed under the MIT license. See the [LICENSE](LICENSE) file for more details. \ No newline at end of file diff --git a/docs/ui/screenshot.png b/docs/ui/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..d8f7c60f2a2c275387bee2f77220b9d5e34397e1 GIT binary patch literal 45852 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®KE}?r0BI_j>Af7)YvwhFxtgeGN)M))ovaW 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 CvrGU0 literal 0 HcmV?d00001 From 06d91153a2190c88bed1c89898d0ff8ab82004c7 Mon Sep 17 00:00:00 2001 From: Falko Habel Date: Wed, 16 Oct 2024 09:26:14 +0200 Subject: [PATCH 2/3] added really good token checking --- .gitignore | 2 +- Token/.gitignore | 0 src/Ai/llm.py | 8 ++++++-- src/controller/mainFrameController.py | 3 +-- 4 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 Token/.gitignore diff --git a/.gitignore b/.gitignore index aa85191..6c16453 100644 --- a/.gitignore +++ b/.gitignore @@ -155,7 +155,7 @@ cython_debug/ #ML VeraMind-Mini/ -Token.py +Token.txt # OS generated files # ###################### diff --git a/Token/.gitignore b/Token/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/src/Ai/llm.py b/src/Ai/llm.py index 7f3a4ec..bf06849 100644 --- a/src/Ai/llm.py +++ b/src/Ai/llm.py @@ -1,11 +1,15 @@ from langchain_community.llms import Ollama -from Ai.Token import get_token + class ArticleRater: def __init__(self): self.client = "https://ai.fabelous.app/v1/ollama/generic" - self.headers = {"Authorization": f"Token {get_token()}"} + self.token = self._get_token() + self.headers = {"Authorization": f"Token {self.token}"} + def _get_token(self): + with open("Token/Token.txt", "r") as t: + return t.readline().strip() def get_response(self, article, result, confidence): ollama_params = { "base_url": self.client, diff --git a/src/controller/mainFrameController.py b/src/controller/mainFrameController.py index 9c233cc..7656252 100644 --- a/src/controller/mainFrameController.py +++ b/src/controller/mainFrameController.py @@ -7,7 +7,6 @@ from utils.database.database import FakeNewsChecker from models.provider import Provider from collections import Counter from Ai.llm import ArticleRater -from Ai.Token import get_token class MainFrameController: @@ -63,7 +62,7 @@ class MainFrameController: confidence_color = "green" if confidence > 80 else ("orange" if confidence > 50 else "red") self.frame.confidence_label.configure(fg_color=confidence_color) - if get_token().strip(): + if self.rater.token: response_stream = self.rater.get_response(text_data.text, text_data.result, confidence) for chunk in response_stream: From 1eb1517a38e95d45db3c26848bb1fddc29ea92f0 Mon Sep 17 00:00:00 2001 From: Falko Habel Date: Wed, 16 Oct 2024 12:45:16 +0200 Subject: [PATCH 3/3] updated and fixed readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 09774b2..84c0e48 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ The application uses a DuckDB database to store analyzed data. The `FakeNewsChec ### Machine Learning Model - **VeraMindInference**: An inference engine for the VeraMind model, which is used to predict whether an article is real or fake news based on its text content. -- **ArticleRater**: A class that uses the Language Model (LLM) to generate a response based on the analyzed text data. +- **ArticleRater**: A class that uses the Large Language Model (LLM) to generate a response based on the analyzed text data. ## Usage