diff --git a/src/assistant/lib/agent/__init__.py b/src/assistant/lib/agent/__init__.py index ff2f391..262d5aa 100644 --- a/src/assistant/lib/agent/__init__.py +++ b/src/assistant/lib/agent/__init__.py @@ -1,3 +1,5 @@ -from .chat_repository import ChatHistoryRepository +from .services import AgentService -__all__ = ["ChatHistoryRepository"] +__all__ = [ + "AgentService", +] diff --git a/src/assistant/lib/agent/repositories/__init__.py b/src/assistant/lib/agent/repositories/__init__.py new file mode 100644 index 0000000..85fac89 --- /dev/null +++ b/src/assistant/lib/agent/repositories/__init__.py @@ -0,0 +1,9 @@ +from .chat_repository import ChatHistoryRepository +from .embedding_repository import EmbeddingRepository +from .openai_functions import OpenAIFunctions + +__all__ = [ + "ChatHistoryRepository", + "EmbeddingRepository", + "OpenAIFunctions", +] diff --git a/src/assistant/lib/agent/repositories.py b/src/assistant/lib/agent/repositories/embedding_repository.py similarity index 100% rename from src/assistant/lib/agent/repositories.py rename to src/assistant/lib/agent/repositories/embedding_repository.py diff --git a/src/assistant/lib/agent/openai_functions.py b/src/assistant/lib/agent/repositories/openai_functions.py similarity index 50% rename from src/assistant/lib/agent/openai_functions.py rename to src/assistant/lib/agent/repositories/openai_functions.py index 811fd6b..9a463d4 100644 --- a/src/assistant/lib/agent/openai_functions.py +++ b/src/assistant/lib/agent/repositories/openai_functions.py @@ -1,7 +1,5 @@ import logging -import uuid -import langchain.agents import sqlalchemy as sa import sqlalchemy.exc import sqlalchemy.ext.asyncio as sa_asyncio @@ -23,28 +21,6 @@ class OpenAIFunctions: self.pg_async_session = pg_async_session self.repository = repository - @langchain.agents.tool - async def artem_get_movie_by_description(self, description: str) -> list[models.Movie] | None: - """Provide a movie data by description.""" - - self.logger.info("Request to get movie by description: %s", description) - embedded_description = await self.repository.aget_embedding(description) - try: - async with self.pg_async_session() as session: - result: list[models.Movie] = [] - stmt = ( - sa.select(orm_models.FilmWork) - .order_by(orm_models.FilmWork.embeddings.cosine_distance(embedded_description.root)) - .limit(5) - ) - response = await session.execute(stmt) - neighbours = response.scalars() - for neighbour in neighbours: - result.append(models.Movie(**neighbour.__dict__)) - return result - except sqlalchemy.exc.SQLAlchemyError as error: - self.logger.exception("Error: %s", error) - async def get_movie_by_description(self, description: str) -> list[models.Movie] | None: """Provide a movie data by description.""" @@ -65,16 +41,3 @@ class OpenAIFunctions: return result except sqlalchemy.exc.SQLAlchemyError as error: self.logger.exception("Error: %s", error) - - @langchain.agents.tool - def get_movie_by_id(self, id: uuid.UUID = None) -> models.Movie | None: - """Provide a movie data by movie id.""" - # self.logger.info("Request to get movie by id: %s", id) - return f"hello world {id}" - - @langchain.agents.tool - def get_similar_movies(self, id: uuid.UUID) -> list[models.Movie] | None: - """Provide similar movies for the given movie ID.""" - - self.logger.info("Request to get movie by id: %s", id) - return None diff --git a/src/assistant/lib/agent/services.py b/src/assistant/lib/agent/services.py index 66dcf70..984110a 100644 --- a/src/assistant/lib/agent/services.py +++ b/src/assistant/lib/agent/services.py @@ -15,16 +15,15 @@ import langchain.memory import langchain.memory.chat_memory import lib.models as models -import lib.agent.openai_functions as openai_functions +import lib.agent.repositories as lib_agent_repositories import lib.app.settings as app_settings -import lib.agent.chat_repository as _chat_repository +import lib.agent.repositories.chat_repository as _chat_repository class AgentService: def __init__( self, settings: app_settings.Settings, - tools: openai_functions.OpenAIFunctions, chat_repository: _chat_repository.ChatHistoryRepository, ) -> None: self.settings = settings diff --git a/src/assistant/lib/api/v1/handlers/agent.py b/src/assistant/lib/api/v1/handlers/agent.py index bd584e0..b1f627c 100644 --- a/src/assistant/lib/api/v1/handlers/agent.py +++ b/src/assistant/lib/api/v1/handlers/agent.py @@ -7,7 +7,7 @@ import lib.models as models class AgentHandler: - def __init__(self, chat_history_repository: agent.ChatHistoryRepository): + def __init__(self, chat_history_repository: agent_repositories.ChatHistoryRepository): self.chat_history_repository = chat_history_repository self.router = fastapi.APIRouter() self.router.add_api_route( diff --git a/src/assistant/lib/api/v1/handlers/voice_responce_handler.py b/src/assistant/lib/api/v1/handlers/voice_responce_handler.py index 80d8ecc..1884ce3 100644 --- a/src/assistant/lib/api/v1/handlers/voice_responce_handler.py +++ b/src/assistant/lib/api/v1/handlers/voice_responce_handler.py @@ -28,6 +28,8 @@ class VoiceResponseHandler: async def voice_response( self, + channel: str, + user_id: str, voice: bytes = fastapi.File(...), ) -> fastapi.responses.StreamingResponse: voice_text: str = await self.stt.recognize(voice) diff --git a/src/assistant/lib/app/app.py b/src/assistant/lib/app/app.py index 3ad25c1..2a210ff 100644 --- a/src/assistant/lib/app/app.py +++ b/src/assistant/lib/app/app.py @@ -6,7 +6,6 @@ import typing import fastapi import uvicorn -import lib.agent as agent import lib.api.v1.handlers as api_v1_handlers import lib.app.errors as app_errors import lib.app.settings as app_settings