• Главная
  • Курсы
  • События
  • Блог
  • Контакты
  • Магазин
    • Загрузки
  • Партнерка
  • Обо мне
Есть вопросы? Звоните:
+7 (917) 449 09 97
admin@nizamov.school
РегистрацияВход
nizamov.school
  • Главная
  • Курсы
  • События
  • Блог
  • Контакты
  • Магазин
    • Загрузки
  • Партнерка
  • Обо мне

ChatGPT Антиспам

  • Главная
  • Блог
  • Blog
  • ChatGPT Антиспам. Часть 1

ChatGPT Антиспам. Часть 1

  • Опубликовано Илья Низамов
  • Разделы Blog
  • Дата 05.02.2024
  • Комментарии Нет комментариев
chatgpt антиспам

Запишись на тренинг

ЗАКРОЙ ВСЕ ВОПРОСЫ ПО РАБОТЕ С HTTP В 1С ЗА ОДНО ЗАНЯТИЕ
ЗАПИСАТЬСЯ

Всем привет, с вами Низамов Илья. В этом уроке разработаем антиспам на базе ChatGPT буквально в 100 строк кода.

import os
import environ
import openai
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.text_splitter import MarkdownHeaderTextSplitter

env = environ.Env()
environ.Env.read_env()


class AntiSpam:
def __init__(self):
self.dev = False
self.db = None
openai.api_key = env('OPENAI_API_KEY')
self.prj_dir = os.getcwd() # Путь до каталога с проектом
self.spam_base = 'spam_base.txt' # Текстовая база спам сообщений
self.embedding = OpenAIEmbeddings() # Инициализирум модель эмбеддингов
self.load_embeddings()
self.role_system = 'Ты антиспам' # Роль ChatGPT
self.temperature = 0
self.model = 'gpt-3.5-turbo'

@staticmethod
def load_txt_file(file_name):
f = open(file_name, 'r', encoding="utf8")
file_text = f.read()
return file_text

def generate_embeddings(self, chunks):
# Создадим индексную базу
self.db = FAISS.from_documents(chunks, self.embedding)
# Сохраняем базу локально
self.db.save_local(folder_path=self.prj_dir, index_name="faiss_index")

def load_embeddings(self):
try:
self.db = FAISS.load_local(folder_path=self.prj_dir, index_name="faiss_index", embeddings=self.embeddings)
except Exception as e:
self.process_spam_db()
if self.dev:
print('Ошибка загрузки базы FAISS', e.__str__())

def process_spam_db(self):
spam_text = self.load_txt_file(self.spam_base)

headers_to_split_on = [
("#", "Header 1"),
]
markdown_splitter = MarkdownHeaderTextSplitter(headers_to_split_on=headers_to_split_on)
chunks = markdown_splitter.split_text(text=spam_text)

if self.dev:
print("Общее количество чанков: ", len(chunks))

self.generate_embeddings(chunks)

def find_examples(self, message):
# Поиск релевантных отрезков из базы знаний
docs = self.db.similarity_search(message, k=4)

db_messages = ""
for i, doc in enumerate(docs):
db_messages = db_messages + f"Пример спам сообщения №{i + 1}\n{doc.page_content}\n"

if self.dev:
print('db_messages:\n', db_messages)

return db_messages

def check_message(self, message):
try:
examples = self.find_examples(message)

role_user = f"Ответь на вопрос является ли данное сообщение спамом на основе представленных примеров спам " \
f"сообщений. Ответь коротко, да или нет, не придумывай ничего от себя. " \
f"Примеры спам сообщений: {examples}\n\n" \
f"Текст сообщения которое надо проверить на спам: \n{message}"

gpt_messages = [
{"role": "system", "content": self.role_system},
{"role": "user", "content": role_user}
]
completion = openai.ChatCompletion.create(
model=self.model,
messages=gpt_messages,
temperature=self.temperature
)

if self.dev:
print(completion)
print("-----------------")

return completion.choices[0].message.content
except Exception as e:
print('Ошибка обработки запроса ChatGPT. ', e.__str__())

return None


if __name__ == '__main__':
anti_spam = AntiSpam()
anti_spam.dev = True

chat_message = anti_spam.load_txt_file('message.txt')
spam_message = anti_spam.load_txt_file('spam.txt')

res = anti_spam.check_message(spam_message)
print("Тест spam_message: ", res)

res = anti_spam.check_message(chat_message)
print("Тест chat_message: ", res)
Скачать исходники
author avatar
Илья Низамов

Предыдущая запись

CHAT GPT 1C. МИКРОСЕРВИС PYTHON FASTAPI
05.02.2024

Следующая запись

ИИ МЕНЕДЖЕР НА БАЗЕ GIGACHAT
12.02.2024

Вам также может понравиться

gigachat
GIGACHAT ИЛИ CHATGPT ИИ МЕНЕДЖЕР ДЛЯ 1С
15 мая, 2024
gigachat ии менеджер
ИИ МЕНЕДЖЕР НА БАЗЕ GIGACHAT
12 февраля, 2024
gpt 1c
CHAT GPT 1C. МИКРОСЕРВИС PYTHON FASTAPI
17 сентября, 2023

Оставьте ответ Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Поиск

Рубрики

  • Blog

Ссылки

  • Политика конфиденциальности
  • Публичная оферта

Сайт создан в NIZAMOV.studio

Регистрация с помощью:

Войти Vkontakte

Вход через логин и пароль

Забыли пароль?

Нет аккаунта? Регистрируйся прямо сейчас

Register a new account

Are you a member? Login now