Fix various agent-chat bugs, add qdrant dependency, WIP memory processing for conversation agent

This commit is contained in:
Shivering Ocelot committed 2025-06-25 20:40:11 -05:00
1 parent e8d80c5495
commit 951ceaa05b
6 files changed
+68 -36

No files matched your search

+24 -19
View File
@@ -7,12 +7,13 @@ import os
from sqlalchemy.orm import Session
from sqlalchemy.sql.expression import select
from quart import Quart, Response, request, send_from_directory, jsonify, websocket
from qdrant_client import QdrantClient
import replicate
import database as db
import agent as agent_mod
from server import start_server
from chat import ChatView
from chat import ChatView, Message
MESSAGE_PAGE_SIZE = 32
@@ -24,11 +25,14 @@ class ChatContext:
class App:
def __init__(self, data_directory, replicate_api_token=None):
self.data_directory = data_directory
self.sql_engine = db.create_sql_engine(self.data_directory)
self.user_connections = {}
self.remote_connections = {}
self.streams = {}
# Initialize Clients
self.sql_engine = db.create_sql_engine(self.data_directory)
self.qdrant_client = QdrantClient(path=f"{self.data_directory}/qdrant_data")
if replicate_api_token:
self.replicate_client = replicate.Client(api_token=replicate_api_token)
else:
@@ -246,26 +250,27 @@ class App:
session.add(message)
session.commit()
session.refresh(message)
# Notify chat owner
if sender != 'user':
chat_owner = session.execute(select(db.Chat.user_id).where(db.Chat.id == chat_id)).scalar()
self.notify_message_to_user(chat_owner, message)
# Notify chat owner
if sender != 'user':
chat_owner = session.execute(select(db.Chat.user_id).where(db.Chat.id == chat_id)).scalar()
self.notify_message_to_user(chat_owner, message)
# Notify participant agents
agent_ids = session.execute(select(db.Membership.agent_id).where(db.Membership.chat_id == chat_id)).scalars().all()
for agent_id in agent_ids:
if agent_id != sender:
self.notify_message_to_agent(agent_id, message)
# Notify participant agents
agent_ids = session.execute(select(db.Membership.agent_id).where(db.Membership.chat_id == chat_id)).scalars().all()
for agent_id in agent_ids:
if agent_id != sender:
self.notify_message_to_agent(agent_id, message)
return {
'id': message.id,
'chatId': message.chat_id,
'time': message.time,
'sender': message.sender,
'kind': message.kind,
'content': message.content,
}
return {
'id': message.id,
'chatId': message.chat_id,
'time': message.time,
'sender': message.sender,
'kind': message.kind,
'content': message.content,
}
def get_chat_context(self, chat_id):
return ChatContext(self.get_chat_messages(chat_id))