ai_chatbot 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc3178f23280f489a71840d4b605097868f6c0aeb35b7790701232441a06e000
4
- data.tar.gz: 0f64ab1e191a453914e2b42e4bcee8dc350e93672b393c8e475e72c66ba9e061
3
+ metadata.gz: 06bf16d383baea57ccc0bdbdcd1e041683130f0ef85120ca5af04b24cf64bbf9
4
+ data.tar.gz: d98da511ebcfbc645ffd5182db2e3c31703786714f98fb0374ec203386644439
5
5
  SHA512:
6
- metadata.gz: 63f32775fefb298627912c672ad243a64a8b3dd70a4e2995f87ce980d73071c11823ecede02b6a31622f70a6d5dcdb131bc1615afa68387817af778821cbd9f0
7
- data.tar.gz: 21b5d01971f6d897c18c85acc55417cfdca2bfbb56f857f0427ec0e47d6c236272a604b3f7c8fe759fb9001bc7b490e0e47ac5b813276d3412a150d3e583883c
6
+ metadata.gz: c4e7bf28f9d9b7568aa3dbe736b546018315f1d4dabd5b2d3ceff26dc3e12fc396f8ae35f32236900b8c39f8a1eadf889c93e8ba6bb37cebc14ef7402bcc0606
7
+ data.tar.gz: 8fdba9ecec76779184a18098395ba4a6d3b173c4e788ed40d0c3f2c2300a4ad2fb4a05a41928e82995fe7ad39d95576b996aa5e78d17dc54826a48243d2bab64
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AiChatbot
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.5"
5
5
  end
data/lib/ai_chatbot.rb CHANGED
@@ -23,5 +23,39 @@ module AiChatbot
23
23
  raise "Error: #{stderr}"
24
24
  end
25
25
  end
26
+
27
+
28
+ # Method to train the model with a new question-answer pair
29
+ def self.update_answer(existing_question, new_answer)
30
+ stdout, stderr, status = Open3.capture3("python3", "#{__dir__}/ml_model.py", "update_answer", new_question, new_answer)
31
+
32
+ if status.success?
33
+ return stdout.strip
34
+ else
35
+ raise "Error: #{stderr}"
36
+ end
37
+ end
38
+
39
+ def self.update_question(existing_question, new_question)
40
+ stdout, stderr, status = Open3.capture3("python3", "#{__dir__}/ml_model.py", "update_question", new_question, new_answer)
41
+
42
+ if status.success?
43
+ return stdout.strip
44
+ else
45
+ raise "Error: #{stderr}"
46
+ end
47
+ end
48
+
49
+ def self.list_of_questions
50
+ stdout, stderr, status = Open3.capture3("python3", "#{__dir__}/ml_model.py", "list_questions")
51
+
52
+ if status.success?
53
+ return stdout.strip
54
+ else
55
+ raise "Error: #{stderr}"
56
+ end
57
+ end
58
+
59
+
26
60
  end
27
61
  end
data/lib/ml_model.py CHANGED
@@ -34,9 +34,11 @@ def main(action, query=None, new_answer=None):
34
34
  return get_prediction(query)
35
35
  elif action == "train":
36
36
  return train_model(query, new_answer)
37
- elif action == "update":
37
+ elif action == "update_answer":
38
38
  return update_answer(query, new_answer)
39
- elif action == "list":
39
+ elif action == "update_question":
40
+ return update_answer(query, new_question)
41
+ elif action == "list_questions":
40
42
  return list_questions()
41
43
 
42
44
  # Function to predict the response with confidence check
@@ -48,7 +50,7 @@ def get_prediction(query):
48
50
  similarities = cosine_similarity(query_vec, question_vecs)
49
51
  max_similarity = similarities.max()
50
52
 
51
- threshold = 0.70
53
+ threshold = 0.65
52
54
  if max_similarity < threshold:
53
55
  return "No good match found. Please provide the correct answer."
54
56
  else:
@@ -89,6 +91,23 @@ def update_answer(existing_question, new_answer):
89
91
  else:
90
92
  return "Question not found. Please provide a valid question."
91
93
 
94
+ def update_question(existing_question, new_question):
95
+ global questions, new_question
96
+
97
+ if existing_question in questions:
98
+ # Find the index of the existing question
99
+ index = questions.index(existing_question)
100
+ # Update the answer
101
+ existing_question[index] = new_question
102
+ # Retrain the model with updated data
103
+ model.fit(questions, answers)
104
+ # Save the updated model and data
105
+ with open("qa_model.pkl", "wb") as f:
106
+ pickle.dump({"questions": questions, "answers": answers}, f)
107
+ return f"New question updated for the question: '{existing_question}'"
108
+ else:
109
+ return "Question not found. Please provide a valid question."
110
+
92
111
  def list_questions():
93
112
  global questions
94
113
  return questions
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ai_chatbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sanket
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-19 00:00:00.000000000 Z
11
+ date: 2024-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: open3
@@ -38,7 +38,8 @@ files:
38
38
  homepage: https://github.com/tikhandesanket/ai-chatbot
39
39
  licenses:
40
40
  - MIT
41
- metadata: {}
41
+ metadata:
42
+ source_code_uri: https://github.com/tikhandesanket/ai-chatbot
42
43
  post_install_message:
43
44
  rdoc_options: []
44
45
  require_paths: