subashpoudel commited on
Commit
c47663e
·
1 Parent(s): 50af289

validated business interaction

Browse files
my_agent/utils/business_interaction.py CHANGED
@@ -9,10 +9,7 @@ from .models_loader import llm,ST
9
  from .prompts import introduction_prompt , business_interaction_prompt, business_retrieval_prompt
10
  from .tools import retrieve_tool
11
  from langgraph.prebuilt import create_react_agent
12
- from langmem.short_term import SummarizationNode
13
- from langchain_core.messages.utils import count_tokens_approximately
14
- from langchain_core.messages import RemoveMessage
15
- from .data_loader import load_influencer_data
16
 
17
 
18
 
@@ -28,22 +25,9 @@ business_state = State()
28
  class BusinessInteractionChatbot:
29
  def __init__(self):
30
  self.messages = []
31
-
32
- self.react_agent=create_react_agent(
33
- model=llm.bind_tools([retrieve_tool]),
34
- tools=[retrieve_tool]
35
- )
36
- self.summarization_model = llm.bind(max_tokens=128)
37
-
38
- self.summarization_node = SummarizationNode(
39
- token_counter=count_tokens_approximately,
40
- model=self.summarization_model,
41
- max_tokens=300,
42
- max_tokens_before_summary=256,
43
- max_summary_tokens=128,
44
- )
45
  self.memory = MemorySaver()
46
- # self.llm = ChatGroq(model_name="Gemma2-9b-It")
47
  self.workflow = self._initialize_workflow()
48
  self.interact_agent = self.workflow.compile(checkpointer=self.memory)
49
 
@@ -51,53 +35,33 @@ class BusinessInteractionChatbot:
51
  def _initialize_workflow(self):
52
  workflow = StateGraph(MessagesState)
53
  workflow.add_node("chatbot", self._call_model)
54
- workflow.add_node("summarize",self.summarization_node)
55
  workflow.add_node("remove_message",self.delete_messages)
56
 
57
- workflow.add_edge(START, "summarize")
58
- workflow.add_edge("summarize", "chatbot")
59
  workflow.add_edge("chatbot","remove_message")
60
  workflow.add_edge("chatbot", END)
61
  return workflow
62
 
63
  def delete_messages(self,state):
64
  print('Entered message deletion....')
65
- if len(self.messages) > 5:
66
  print('satisfied...')
67
  self.messages = self.messages[2:]
68
 
69
- def manual_retrieval(self):
70
- embedded_query = ST.encode(str([msg['content'] for msg in self.messages if msg['role'] == 'user'])) # Embed each topic
71
- data = load_influencer_data()
72
- scores, retrieved_examples = data.get_nearest_examples("embeddings", embedded_query, k=1)
73
-
74
- # Construct a list of dictionaries for this topic
75
- result = [{user: story} for user, story in zip(retrieved_examples['username'], retrieved_examples['agentic_story'])]
76
- return result
77
-
78
-
79
  def _call_model(self, state):
80
  print('Entered into callmodel')
81
- template = business_interaction_prompt
 
82
  messages = [SystemMessage(content=template)] + state["messages"]
83
- # response = self.react_agent.invoke({'messages':messages})['messages'][-2]
84
- response = self.react_agent.invoke({'messages':messages})['messages']
85
- if response [-2].name == None:
86
- print('Entered into manual retrieval')
87
- retrievals = self.manual_retrieval()
88
- template = business_retrieval_prompt(retrievals)
89
- messages = [SystemMessage(content=template)] + state["messages"]
90
- backup_response = self.react_agent.invoke({'messages':messages})['messages'][-1]
91
- print('Backup response:',backup_response.content)
92
- return {"messages": [backup_response.content]}
93
 
94
- else:
95
- return {"messages": [response[-1]]}
96
 
97
- def chat(self, user_input: str):
98
  print('Entered into chat')
99
-
100
- self.messages.append({"role": "user", "content": user_input})
101
  config = {"configurable": {"thread_id": "2"}}
102
  response = self.interact_agent.invoke({"messages":self.messages}, config)['messages'][-1].content
103
  print('The response:',response)
 
9
  from .prompts import introduction_prompt , business_interaction_prompt, business_retrieval_prompt
10
  from .tools import retrieve_tool
11
  from langgraph.prebuilt import create_react_agent
12
+ from .utils import manual_retrieval
 
 
 
13
 
14
 
15
 
 
25
  class BusinessInteractionChatbot:
26
  def __init__(self):
27
  self.messages = []
28
+ self.business_details = None
29
+ self.react_agent=create_react_agent(model=llm,tools=[])
 
 
 
 
 
 
 
 
 
 
 
 
30
  self.memory = MemorySaver()
 
31
  self.workflow = self._initialize_workflow()
32
  self.interact_agent = self.workflow.compile(checkpointer=self.memory)
33
 
 
35
  def _initialize_workflow(self):
36
  workflow = StateGraph(MessagesState)
37
  workflow.add_node("chatbot", self._call_model)
 
38
  workflow.add_node("remove_message",self.delete_messages)
39
 
40
+ workflow.add_edge(START, "chatbot")
 
41
  workflow.add_edge("chatbot","remove_message")
42
  workflow.add_edge("chatbot", END)
43
  return workflow
44
 
45
  def delete_messages(self,state):
46
  print('Entered message deletion....')
47
+ if len(self.messages) > 4:
48
  print('satisfied...')
49
  self.messages = self.messages[2:]
50
 
 
 
 
 
 
 
 
 
 
 
51
  def _call_model(self, state):
52
  print('Entered into callmodel')
53
+ retrievals = manual_retrieval(str([msg['content'] for msg in self.messages if msg['role'] == 'user']),self.business_details)
54
+ template = business_retrieval_prompt(str([msg['content'] for msg in self.messages if msg['role'] == 'user']),retrievals)
55
  messages = [SystemMessage(content=template)] + state["messages"]
56
+ backup_response = self.react_agent.invoke({'messages':messages})['messages'][-1]
57
+ print('Backup response:',backup_response.content)
58
+ return {"messages": [backup_response.content]}
 
 
 
 
 
 
 
59
 
 
 
60
 
61
+ def chat(self, user_input: str, business_details:dict):
62
  print('Entered into chat')
63
+ self.business_details=business_details
64
+ self.messages.append({"role": "user", "content": f'{user_input}'})
65
  config = {"configurable": {"thread_id": "2"}}
66
  response = self.interact_agent.invoke({"messages":self.messages}, config)['messages'][-1].content
67
  print('The response:',response)