Мне нужен код для личного локального ИИ на свой пк на windows с минималистичным интерфейсом который будет обучаться
Вот пример кода для локального ИИ с минималистичным интерфейсом на Python, использующий transformers от Hugging Face и tkinter для GUI. Этот ИИ будет обучаться на ваших данных.
pip install torch transformers sentencepiece tkinter
import tkinter as tk
from tkinter import scrolledtext, simpledialog
from transformers import GPT2LMHeadModel, GPT2Tokenizer, TextDataset, DataCollatorForLanguageModeling
from transformers import Trainer, TrainingArguments
import os
class LocalAI:
def __init__(self):
self.model_name = "gpt2"
self.tokenizer = GPT2Tokenizer.from_pretrained(self.model_name)
self.model = GPT2LMHeadModel.from_pretrained(self.model_name)
self.history = []
def generate_response(self, prompt):
input_ids = self.tokenizer.encode(prompt, return_tensors="pt")
output = self.model.generate(input_ids, max_length=100, num_return_sequences=1)
return self.tokenizer.decode(output[0], skip_special_tokens=True)
def train(self, file_path):
train_dataset = TextDataset(
tokenizer=self.tokenizer,
file_path=file_path,
block_size=128
)
data_collator = DataCollatorForLanguageModeling(
tokenizer=self.tokenizer,
mlm=False
)
training_args = TrainingArguments(
output_dir="./gpt2-finetuned",
overwrite_output_dir=True,
num_train_epochs=3,
per_device_train_batch_size=4,
save_steps=10_000,
save_total_limit=2
)
trainer = Trainer(
model=self.model,
args=training_args,
data_collator=data_collator,
train_dataset=train_dataset
)
trainer.train()
trainer.save_model("./gpt2-finetuned")
class AIApp:
def __init__(self, root):
self.root = root
self.root.title("Локальный ИИ")
self.ai = LocalAI()
# Чат-поле
self.chat_area = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=60, height=20)
self.chat_area.pack(padx=10, pady=10)
# Поле ввода
self.entry = tk.Entry(root, width=50)
self.entry.pack(padx=10, pady=5)
self.entry.bind("<Return>", self.send_message)
# Кнопки
self.btn_frame = tk.Frame(root)
self.btn_frame.pack(pady=5)
self.send_btn = tk.Button(self.btn_frame, text="Отправить", command=self.send_message)
self.send_btn.pack(side=tk.LEFT, padx=5)
self.train_btn = tk.Button(self.btn_frame, text="Обучить", command=self.train_model)
self.train_btn.pack(side=tk.LEFT, padx=5)
def send_message(self, event=None):
message = self.entry.get()
if message:
self.chat_area.insert(tk.END, f"Вы: {message}\n")
self.entry.delete(0, tk.END)
response = self.ai.generate_response(message)
self.chat_area.insert(tk.END, f"ИИ: {response}\n")
self.chat_area.yview(tk.END)
def train_model(self):
file_path = simpledialog.askstring("Обучение", "Введите путь к файлу с данными (txt):")
if file_path and os.path.exists(file_path):
self.chat_area.insert(tk.END, "ИИ начал обучение...\n")
self.root.update()
self.ai.train(file_path)
self.ai.model = GPT2LMHeadModel.from_pretrained("./gpt2-finetuned")
self.chat_area.insert(tk.END, "ИИ завершил обучение!\n")
else:
self.chat_area.insert(tk.END, "Файл не найден!\n")
if __name__ == "__main__":
root = tk.Tk()
app = AIApp(root)
root.mainloop()
local_ai.pypython local_ai.pyХотите упростить или расширить функционал? Могу адаптировать код под ваши нужды.