nagarmayank commited on
Commit
c7eddb5
·
1 Parent(s): 2bdf9a9

Refactor datetime logging to use a single timezone variable for consistency in transaction message processing

Browse files
Files changed (1) hide show
  1. app.py +8 -7
app.py CHANGED
@@ -32,6 +32,7 @@ HF_TOKEN = os.getenv("HF_TOKEN")
32
  GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
33
  GROQ_MODEL = "meta-llama/llama-4-scout-17b-16e-instruct"
34
  GOOGLE_MODEL = "gemini-2.5-flash-preview-05-20"
 
35
 
36
  class TransactionParser(BaseModel):
37
  """This Pydantic class is used to parse the transaction message. The message is taken and the output is structured in a specific format based upon below definitions."""
@@ -65,17 +66,17 @@ class Agent:
65
  self.model = model
66
 
67
  def classify_txn_type(self, state: AgentState) -> AgentState:
68
- print(f"{datetime.now(timezone("Asia/Kolkata"))}: Classifying transaction type...")
69
  messages = state["messages"]
70
  if self.system:
71
  messages = [SystemMessage(content=self.system)] + messages
72
 
73
  message = self.model.invoke(messages)
74
- print(f"{datetime.now(timezone("Asia/Kolkata"))}: Classifying transaction type completed.")
75
  return {"messages": [message]}
76
 
77
  def parse_message(self, state: AgentState) -> AgentState:
78
- print(f"{datetime.now(timezone("Asia/Kolkata"))}: Parsing transaction message...")
79
  message = state["messages"][0]#.content
80
  system = """
81
  You are a helpful assistant skilled at parsing transaction messages and providing structured responses.
@@ -85,12 +86,12 @@ class Agent:
85
  prompt = ChatPromptTemplate.from_messages([("system", system), ("human", human)])
86
  chain = prompt | self.model.with_structured_output(TransactionParser)
87
  result = chain.invoke({"topic": message})
88
- print(f"{datetime.now(timezone("Asia/Kolkata"))}: Parsing transaction message completed.")
89
 
90
  return {"messages": [result]}
91
 
92
  def write_message(self, state: AgentState) -> AgentState:
93
- print(f"{datetime.now(timezone("Asia/Kolkata"))}: Writing transaction message to Google Sheets...")
94
  result = state["messages"][-1]
95
 
96
  SCOPES = ('https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive')
@@ -107,10 +108,10 @@ class Agent:
107
  wk.update_value(f'B{nrows+2}', result.dr_or_cr)
108
  wk.update_value(f'C{nrows+2}', result.receiver)
109
  wk.update_value(f'D{nrows+2}', result.category)
110
- wk.update_value(f'E{nrows+2}', datetime.now(timezone("Asia/Kolkata")).strftime("%Y-%m-%d")) #result.transaction_date)
111
  wk.update_value(f'F{nrows+2}', result.transaction_origin)
112
  wk.update_value(f'G{nrows+2}', state["messages"][0])
113
- print(f"{datetime.now(timezone("Asia/Kolkata"))}: Writing transaction message to Google Sheets completed.")
114
  return {"messages": ["Transaction Completed"]}
115
 
116
  def check_txn_and_decide(self, state: AgentState):
 
32
  GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
33
  GROQ_MODEL = "meta-llama/llama-4-scout-17b-16e-instruct"
34
  GOOGLE_MODEL = "gemini-2.5-flash-preview-05-20"
35
+ ist_tz = timezone("Asia/Kolkata")
36
 
37
  class TransactionParser(BaseModel):
38
  """This Pydantic class is used to parse the transaction message. The message is taken and the output is structured in a specific format based upon below definitions."""
 
66
  self.model = model
67
 
68
  def classify_txn_type(self, state: AgentState) -> AgentState:
69
+ print(f"{datetime.now(ist_tz)}: Classifying transaction type...")
70
  messages = state["messages"]
71
  if self.system:
72
  messages = [SystemMessage(content=self.system)] + messages
73
 
74
  message = self.model.invoke(messages)
75
+ print(f"{datetime.now(ist_tz)}: Classifying transaction type completed.")
76
  return {"messages": [message]}
77
 
78
  def parse_message(self, state: AgentState) -> AgentState:
79
+ print(f"{datetime.now(ist_tz)}: Parsing transaction message...")
80
  message = state["messages"][0]#.content
81
  system = """
82
  You are a helpful assistant skilled at parsing transaction messages and providing structured responses.
 
86
  prompt = ChatPromptTemplate.from_messages([("system", system), ("human", human)])
87
  chain = prompt | self.model.with_structured_output(TransactionParser)
88
  result = chain.invoke({"topic": message})
89
+ print(f"{datetime.now(ist_tz)}: Parsing transaction message completed.")
90
 
91
  return {"messages": [result]}
92
 
93
  def write_message(self, state: AgentState) -> AgentState:
94
+ print(f"{datetime.now(ist_tz)}: Writing transaction message to Google Sheets...")
95
  result = state["messages"][-1]
96
 
97
  SCOPES = ('https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive')
 
108
  wk.update_value(f'B{nrows+2}', result.dr_or_cr)
109
  wk.update_value(f'C{nrows+2}', result.receiver)
110
  wk.update_value(f'D{nrows+2}', result.category)
111
+ wk.update_value(f'E{nrows+2}', datetime.now(ist_tz).strftime("%Y-%m-%d"))
112
  wk.update_value(f'F{nrows+2}', result.transaction_origin)
113
  wk.update_value(f'G{nrows+2}', state["messages"][0])
114
+ print(f"{datetime.now(ist_tz)}: Writing transaction message to Google Sheets completed.")
115
  return {"messages": ["Transaction Completed"]}
116
 
117
  def check_txn_and_decide(self, state: AgentState):