Hardik5456 commited on
Commit
906ce9f
·
verified ·
1 Parent(s): fdb904d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -26
app.py CHANGED
@@ -2,22 +2,22 @@ import os
2
  import threading
3
  import discord
4
  import torch
5
- import gradio as gr
6
  from transformers import AutoModelForCausalLM, AutoTokenizer
7
  from dotenv import load_dotenv
8
 
9
- # Load environment variables (from Hugging Face Secrets and .env if available)
10
  load_dotenv()
11
  DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")
12
- HF_TOKEN = os.getenv("HF_TOKEN") # Optional: only if needed for private models
13
 
14
  if not DISCORD_TOKEN:
15
  raise ValueError("Discord bot token is missing. Set DISCORD_TOKEN in the environment variables.")
16
 
17
- # Set the model repository name (public model)
18
  MODEL_NAME = "agentica-org/DeepScaleR-1.5B-Preview"
19
 
20
- # Load the tokenizer and model. Use token=HF_TOKEN if provided.
 
21
  if HF_TOKEN:
22
  tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, token=HF_TOKEN)
23
  model = AutoModelForCausalLM.from_pretrained(
@@ -29,29 +29,18 @@ else:
29
  MODEL_NAME, torch_dtype=torch.float16, device_map="auto"
30
  )
31
 
32
- # Function to generate AI responses
33
  def generate_response(prompt):
34
  device = "cuda" if torch.cuda.is_available() else "cpu"
35
  inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=1024).to(device)
36
  outputs = model.generate(**inputs, max_new_tokens=200, do_sample=True, top_p=0.9, temperature=0.7)
37
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
38
- # Ensure the bot always identifies as "Shiv Yantra AI"
39
  response = response.replace("DeepScaleR", "Shiv Yantra AI")
40
  return response
41
 
42
  # ==========================
43
- # Gradio Interface (optional UI)
44
- # ==========================
45
- def gradio_api(input_text):
46
- return generate_response(input_text)
47
-
48
- iface = gr.Interface(fn=gradio_api, inputs="text", outputs="text", title="Shiv Yantra AI")
49
-
50
- def run_gradio():
51
- iface.launch(server_name="0.0.0.0", server_port=7860, share=False)
52
-
53
- # ==========================
54
- # Discord Bot Setup (Directly uses local generate_response)
55
  # ==========================
56
  intents = discord.Intents.default()
57
  intents.message_content = True # Required for reading message content
@@ -63,16 +52,17 @@ async def on_ready():
63
 
64
  @client.event
65
  async def on_message(message):
66
- # Avoid replying to itself
67
  if message.author == client.user:
68
  return
69
 
70
  user_input = message.content.strip()
71
  if user_input:
72
  try:
73
- # Directly call the local generate_response function
74
  ai_response = generate_response(user_input)
75
  except Exception as e:
 
76
  ai_response = "Error processing your request."
77
  await message.channel.send(ai_response)
78
 
@@ -80,14 +70,12 @@ def run_discord_bot():
80
  client.run(DISCORD_TOKEN)
81
 
82
  # ==========================
83
- # Start Both Services Concurrently
84
  # ==========================
85
  if __name__ == "__main__":
86
- # Start the Gradio interface in a separate thread (optional UI)
87
- threading.Thread(target=run_gradio, daemon=True).start()
88
- # Start the Discord bot in a separate thread
89
  threading.Thread(target=run_discord_bot, daemon=True).start()
90
 
91
- # Keep the main thread alive indefinitely
92
  while True:
93
  pass
 
2
  import threading
3
  import discord
4
  import torch
 
5
  from transformers import AutoModelForCausalLM, AutoTokenizer
6
  from dotenv import load_dotenv
7
 
8
+ # Load environment variables from Hugging Face Secrets and .env (if available)
9
  load_dotenv()
10
  DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")
11
+ HF_TOKEN = os.getenv("HF_TOKEN") # Optional: only needed if your model repository is private
12
 
13
  if not DISCORD_TOKEN:
14
  raise ValueError("Discord bot token is missing. Set DISCORD_TOKEN in the environment variables.")
15
 
16
+ # Specify the model repository name. For DeepScaleR-1.5B-Preview use the official repo:
17
  MODEL_NAME = "agentica-org/DeepScaleR-1.5B-Preview"
18
 
19
+ # Load the tokenizer and model.
20
+ # If HF_TOKEN is provided, use it for authentication.
21
  if HF_TOKEN:
22
  tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, token=HF_TOKEN)
23
  model = AutoModelForCausalLM.from_pretrained(
 
29
  MODEL_NAME, torch_dtype=torch.float16, device_map="auto"
30
  )
31
 
32
+ # Define a function to generate responses using the model.
33
  def generate_response(prompt):
34
  device = "cuda" if torch.cuda.is_available() else "cpu"
35
  inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=1024).to(device)
36
  outputs = model.generate(**inputs, max_new_tokens=200, do_sample=True, top_p=0.9, temperature=0.7)
37
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
38
+ # Replace any instance of "DeepScaleR" with "Shiv Yantra AI" to enforce the bot's identity.
39
  response = response.replace("DeepScaleR", "Shiv Yantra AI")
40
  return response
41
 
42
  # ==========================
43
+ # Discord Bot Setup
 
 
 
 
 
 
 
 
 
 
 
44
  # ==========================
45
  intents = discord.Intents.default()
46
  intents.message_content = True # Required for reading message content
 
52
 
53
  @client.event
54
  async def on_message(message):
55
+ # Skip messages from the bot itself.
56
  if message.author == client.user:
57
  return
58
 
59
  user_input = message.content.strip()
60
  if user_input:
61
  try:
62
+ # Directly call the local function instead of making an HTTP request.
63
  ai_response = generate_response(user_input)
64
  except Exception as e:
65
+ print(f"Error generating response: {e}")
66
  ai_response = "Error processing your request."
67
  await message.channel.send(ai_response)
68
 
 
70
  client.run(DISCORD_TOKEN)
71
 
72
  # ==========================
73
+ # Start the Discord Bot
74
  # ==========================
75
  if __name__ == "__main__":
76
+ # Run the Discord bot on a separate thread.
 
 
77
  threading.Thread(target=run_discord_bot, daemon=True).start()
78
 
79
+ # Keep the main thread alive.
80
  while True:
81
  pass