Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 14 additions & 15 deletions ovos_solver_rivescript_plugin/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import os
from datetime import date
from os.path import dirname, isdir
from typing import Optional
from typing import Optional, List, Tuple

from ovos_plugin_manager.templates.solvers import QuestionSolver
from ovos_plugin_manager.templates.agents import RetrievalEngine
from ovos_utils.log import LOG
from ovos_utils.xdg_utils import xdg_data_home
from rivescript import RiveScript
Expand Down Expand Up @@ -97,31 +97,30 @@ def ask_brain(self, utterance):
LOG.error(e)


class RivescriptSolver(QuestionSolver):
class RivescriptSolver(RetrievalEngine):
def __init__(self, config=None):
config = config or {"lang": "en-us"}
lang = config.get("lang") or "en-us"
if lang != "en-us" and lang not in os.listdir(RivescriptBot.XDG_PATH):
config["lang"] = lang = "en-us"
super().__init__(config, internal_lang=lang, enable_tx=True, priority=96)
self.brain = RivescriptBot(lang, self.config)
config["lang"] = "en-us"
super().__init__(config)
self.brain = RivescriptBot(self.config.get("lang"), self.config)
self.brain.load_brain()

def get_spoken_answer(self, query: str,
lang: Optional[str] = None,
units: Optional[str] = None) -> Optional[str]:
def query(self, query: str, lang: Optional[str] = None, k: int = 3) -> List[Tuple[str, float]]:
"""
Obtain the spoken answer for a given query.
Searches the knowledge base for relevant documents or data.

Args:
query (str): The query text.
lang (Optional[str]): Optional language code. Defaults to None.
units (Optional[str]): Optional units for the query. Defaults to None.
query: The search string.
lang: BCP-47 language code.
k: The maximum number of results to return.

Returns:
str: The spoken answer as a text response.
List of tuples (content, score) for the top k matches.
"""
return self.brain.ask_brain(query)
return [(self.brain.ask_brain(query), 0.5)]



if __name__ == "__main__":
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
rivescript
ovos-plugin-manager>=0.0.26,<3.0.0
ovos-plugin-manager>=2.2.3a1,<3.0.0
6 changes: 3 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,15 @@ def get_version():
setup(
name='ovos-solver-rivescript-plugin',
version=get_version(),
description='A question solver plugin for ovos/neon/mycroft',
description='A chatbot plugin for OpenVoiceOS',
url='https://github.com/OpenVoiceOS/ovos-solver-rivescript-plugin',
author='jarbasai',
author_email='jarbasai@mailfence.com',
license='MIT',
packages=['ovos_solver_rivescript_plugin'],
zip_safe=True,
keywords='mycroft plugin utterance fallback query',
entry_points={'neon.plugin.solver': PLUGIN_ENTRY_POINT},
keywords='OpenVoiceOS OVOS plugin utterance fallback query',
entry_points={'opm.agents.retrieval': PLUGIN_ENTRY_POINT},
install_requires=required("requirements.txt"),
long_description=long_description,
long_description_content_type='text/markdown'
Expand Down