GPT4ALL_CHAT / app.py
AEUPH's picture
Update app.py
6da337d
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM
class RPG_Game:
def __init__(self):
self.model_name = "nomic-ai/gpt4all-j"
self.tokenizer = AutoTokenizer.from_pretrained(self.model_name)
self.model = AutoModelForCausalLM.from_pretrained(self.model_name)
self.inventory = {}
def generate_response(self, prompt):
input_tokens = self.tokenizer.encode(prompt, return_tensors="pt")
response = self.model.generate(input_tokens)
response_text = self.tokenizer.decode(response[:, input_tokens.shape[-1]:][0], skip_special_tokens=True)
return response_text
def process_game_input(self, game_input):
game_input = game_input.strip().lower()
# Check for specific commands to manage the inventory
if game_input.startswith("pick up") or game_input.startswith("get"):
item = game_input.split(" ", 1)[-1].strip()
if item not in self.inventory:
self.inventory[item] = 1
else:
self.inventory[item] += 1
return f"You have picked up {item}."
elif game_input == "inventory":
return "Your inventory: " + ", ".join(f"{k}: {v}" for k, v in self.inventory.items())
# Generate the GPT4ALL response
else:
response = self.generate_response(game_input)
return response
game = RPG_Game()
def gradio_interface(prompt: str):
return game.process_game_input(prompt)
inputs = gr.inputs.Textbox(lines=5, label="Your Input")
outputs = gr.outputs.Textbox(label="Game Response")
iface = gr.Interface(fn=gradio_interface, inputs=inputs, outputs=outputs)
if __name__ == "__main__":
iface.launch()