Skip to content

Commit 4848321

Browse files
authored
Revert "Add memory module middleware" (#68)
Reverts #67
1 parent f6d455e commit 4848321

File tree

7 files changed

+82
-127
lines changed

7 files changed

+82
-127
lines changed

packages/memory_module/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
UserMessage,
1313
UserMessageInput,
1414
)
15-
from memory_module.utils.teams_bot_middlware import MemoryMiddleware
1615

1716
__all__ = [
1817
"MemoryModule",
@@ -28,5 +27,4 @@
2827
"AssistantMessage",
2928
"AssistantMessageInput",
3029
"ShortTermMemoryRetrievalConfig",
31-
"MemoryMiddleware",
3230
]

packages/memory_module/pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ dependencies = [
1212
"numpy",
1313
"sqlite-vec>=0.1.6",
1414
"litellm==1.54.1",
15-
"botbuilder>=0.0.1",
1615
]
1716

1817
[tool.uv]

packages/memory_module/storage/sqlite_memory_storage.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ async def store_memory(self, memory: BaseMemoryInput, *, embedding_vectors: List
4747
(
4848
memory_id,
4949
memory.content,
50-
memory.created_at.isoformat(),
50+
memory.created_at,
5151
memory.user_id,
5252
memory.memory_type.value,
5353
),
@@ -300,7 +300,7 @@ async def store_short_term_memory(self, message: MessageInput) -> Message:
300300
message.content,
301301
message.author_id,
302302
message.conversation_ref,
303-
created_at.isoformat(),
303+
created_at,
304304
message.type,
305305
deep_link,
306306
),

packages/memory_module/storage/sqlite_message_buffer_storage.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ async def store_buffered_message(self, message: Message) -> None:
3838
(
3939
message.id,
4040
message.conversation_ref,
41-
message.created_at.isoformat(),
41+
message.created_at,
4242
),
4343
)
4444

packages/memory_module/utils/teams_bot_middlware.py

Lines changed: 0 additions & 114 deletions
This file was deleted.

src/bot.py

Lines changed: 79 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import datetime
12
import json
23
import os
34
import sys
@@ -10,12 +11,13 @@
1011
from botbuilder.schema import Activity
1112
from litellm import acompletion
1213
from memory_module import (
14+
AssistantMessageInput,
1315
InternalMessageInput,
1416
LLMConfig,
1517
Memory,
16-
MemoryMiddleware,
1718
MemoryModule,
1819
MemoryModuleConfig,
20+
UserMessageInput,
1921
)
2022
from pydantic import BaseModel, Field
2123
from teams import Application, ApplicationOptions, TeamsAdapter
@@ -61,8 +63,6 @@
6163
)
6264
)
6365

64-
bot_app.adapter.use(MemoryMiddleware(memory_module))
65-
6666

6767
class TaskConfig(BaseModel):
6868
task_name: str
@@ -281,6 +281,75 @@ def get_available_functions():
281281
]
282282

283283

284+
def build_deep_link(context: TurnContext, message_id: str):
285+
conversation_ref = TurnContext.get_conversation_reference(context.activity)
286+
if conversation_ref.conversation and conversation_ref.conversation.is_group:
287+
deeplink_conversation_id = conversation_ref.conversation.id
288+
elif conversation_ref.user and conversation_ref.bot:
289+
user_aad_object_id = conversation_ref.user.aad_object_id
290+
bot_id = conversation_ref.bot.id.replace("28:", "")
291+
deeplink_conversation_id = f"19:{user_aad_object_id}_{bot_id}@unq.gbl.spaces"
292+
else:
293+
return None
294+
return f"https://teams.microsoft.com/l/message/{deeplink_conversation_id}/{message_id}?context=%7B%22contextType%22%3A%22chat%22%7D"
295+
296+
297+
async def add_user_message(context: TurnContext):
298+
conversation_ref_dict = TurnContext.get_conversation_reference(context.activity)
299+
content = context.activity.text
300+
if not content:
301+
print("content is not text, so ignoring...")
302+
return False
303+
if conversation_ref_dict is None:
304+
print("conversation_ref_dict is None")
305+
return False
306+
if conversation_ref_dict.user is None:
307+
print("conversation_ref_dict.user is None")
308+
return False
309+
if conversation_ref_dict.conversation is None:
310+
print("conversation_ref_dict.conversation is None")
311+
return False
312+
user_aad_object_id = conversation_ref_dict.user.aad_object_id
313+
message_id = context.activity.id
314+
await memory_module.add_message(
315+
UserMessageInput(
316+
id=message_id,
317+
content=context.activity.text,
318+
author_id=user_aad_object_id,
319+
conversation_ref=conversation_ref_dict.conversation.id,
320+
created_at=context.activity.timestamp if context.activity.timestamp else datetime.datetime.now(),
321+
deep_link=build_deep_link(context, context.activity.id),
322+
)
323+
)
324+
return True
325+
326+
327+
async def add_agent_message(context: TurnContext, message_id: str, content: str):
328+
conversation_ref_dict = TurnContext.get_conversation_reference(context.activity)
329+
if not content:
330+
print("content is not text, so ignoring...")
331+
return False
332+
if conversation_ref_dict is None:
333+
print("conversation_ref_dict is None")
334+
return False
335+
if conversation_ref_dict.bot is None:
336+
print("conversation_ref_dict.bot is None")
337+
return False
338+
if conversation_ref_dict.conversation is None:
339+
print("conversation_ref_dict.conversation is None")
340+
return False
341+
await memory_module.add_message(
342+
AssistantMessageInput(
343+
id=message_id,
344+
content=content,
345+
author_id=conversation_ref_dict.bot.id,
346+
conversation_ref=conversation_ref_dict.conversation.id,
347+
deep_link=build_deep_link(context, message_id),
348+
)
349+
)
350+
return True
351+
352+
284353
async def add_internal_message(context: TurnContext, content: str):
285354
conversation_ref_dict = TurnContext.get_conversation_reference(context.activity)
286355
if not content:
@@ -307,12 +376,15 @@ async def add_internal_message(context: TurnContext, content: str):
307376

308377
@bot_app.conversation_update("membersAdded")
309378
async def on_members_added(context: TurnContext, state: TurnState):
310-
await send_string_message(context, "Hello! I'm your IT Support Assistant. How can I assist you today?")
379+
result = await send_string_message(context, "Hello! I'm your IT Support Assistant. How can I assist you today?")
380+
if result:
381+
await add_agent_message(context, result, "Hello! I'm your IT Support Assistant. How can I assist you today?")
311382

312383

313384
@bot_app.activity("message")
314385
async def on_message(context: TurnContext, state: TurnState):
315386
conversation_ref_dict = TurnContext.get_conversation_reference(context.activity)
387+
await add_user_message(context)
316388
system_prompt = """
317389
You are an IT Chat Bot that helps users troubleshoot tasks
318390
@@ -377,7 +449,9 @@ async def on_message(context: TurnContext, state: TurnState):
377449
message = response.choices[0].message
378450

379451
if message.tool_calls is None and message.content is not None:
380-
await send_string_message(context, message.content)
452+
agent_message_id = await send_string_message(context, message.content)
453+
if agent_message_id:
454+
await add_agent_message(context, agent_message_id, message.content)
381455
break
382456
elif message.tool_calls is None and message.content is None:
383457
print("No tool calls and no content")

uv.lock

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)