mirror of
https://github.com/ijaric/voice_assistant.git
synced 2025-05-24 06:23:28 +00:00
Changes by ijaric
This commit is contained in:
parent
b9393d7072
commit
6f84918506
|
@ -23,6 +23,28 @@ class OpenAIFunctions:
|
||||||
self.pg_async_session = pg_async_session
|
self.pg_async_session = pg_async_session
|
||||||
self.repository = repository
|
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:
|
async def get_movie_by_description(self, description: str) -> list[models.Movie] | None:
|
||||||
"""Provide a movie data by description."""
|
"""Provide a movie data by description."""
|
||||||
|
|
||||||
|
|
|
@ -11,17 +11,22 @@ import langchain.chat_models
|
||||||
import langchain.prompts
|
import langchain.prompts
|
||||||
import langchain.schema
|
import langchain.schema
|
||||||
import langchain.tools.render
|
import langchain.tools.render
|
||||||
|
import langchain.memory
|
||||||
|
import langchain.memory.chat_memory
|
||||||
|
|
||||||
import lib.models as models
|
import lib.models as models
|
||||||
import lib.agent.openai_functions as openai_functions
|
import lib.agent.openai_functions as openai_functions
|
||||||
import lib.app.settings as app_settings
|
import lib.app.settings as app_settings
|
||||||
|
import lib.agent.chat_repository as _chat_repository
|
||||||
logging.basicConfig(level=logging.INFO)
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class AgentService:
|
class AgentService:
|
||||||
def __init__(self, settings: app_settings.Settings, tools: openai_functions.OpenAIFunctions) -> None:
|
def __init__(
|
||||||
|
self,
|
||||||
|
settings: app_settings.Settings,
|
||||||
|
tools: openai_functions.OpenAIFunctions,
|
||||||
|
chat_repository: _chat_repository.ChatHistoryRepository,
|
||||||
|
) -> None:
|
||||||
self.settings = settings
|
self.settings = settings
|
||||||
self.tools = tools
|
self.tools = tools
|
||||||
self.llm = langchain.chat_models.ChatOpenAI(
|
self.llm = langchain.chat_models.ChatOpenAI(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user