[NOTICKET] add total token logging

#9
by rhbt6767 - opened
Files changed (1) hide show
  1. src/agents/chatbot.py +11 -1
src/agents/chatbot.py CHANGED
@@ -1,5 +1,6 @@
1
  """Chatbot agent with RAG capabilities."""
2
 
 
3
  from langchain_openai import AzureChatOpenAI
4
  from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
5
  from langchain_core.output_parsers import StrOutputParser
@@ -9,6 +10,14 @@ from langchain_core.messages import HumanMessage, AIMessage
9
 
10
  logger = get_logger("chatbot")
11
 
 
 
 
 
 
 
 
 
12
 
13
  class ChatbotAgent:
14
  """Chatbot agent with RAG capabilities."""
@@ -64,7 +73,8 @@ class ChatbotAgent:
64
  async def astream_response(self, messages: list, context: str = ""):
65
  """Stream response tokens as they are generated."""
66
  try:
67
- logger.info("Streaming chatbot response")
 
68
  async for token in self.chain.astream({"messages": messages, "context": context}):
69
  yield token
70
  except Exception as e:
 
1
  """Chatbot agent with RAG capabilities."""
2
 
3
+ import tiktoken
4
  from langchain_openai import AzureChatOpenAI
5
  from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
6
  from langchain_core.output_parsers import StrOutputParser
 
10
 
11
  logger = get_logger("chatbot")
12
 
13
+ _enc = tiktoken.get_encoding("cl100k_base")
14
+
15
+
16
+ def _count_tokens(messages: list, context: str) -> dict:
17
+ msg_tokens = sum(len(_enc.encode(m.content)) for m in messages)
18
+ ctx_tokens = len(_enc.encode(context))
19
+ return {"messages_tokens": msg_tokens, "context_tokens": ctx_tokens, "total": msg_tokens + ctx_tokens}
20
+
21
 
22
  class ChatbotAgent:
23
  """Chatbot agent with RAG capabilities."""
 
73
  async def astream_response(self, messages: list, context: str = ""):
74
  """Stream response tokens as they are generated."""
75
  try:
76
+ token_counts = _count_tokens(messages, context)
77
+ logger.info("LLM input tokens", **token_counts)
78
  async for token in self.chain.astream({"messages": messages, "context": context}):
79
  yield token
80
  except Exception as e: