This commit introduces a new bot type called Person. It behaves and speaks like a particular Person. For this two app types: PersonApp and PersonOpenSourceApp
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
from embedchain.config.BaseConfig import BaseConfig
|
|
from string import Template
|
|
import re
|
|
|
|
DEFAULT_PROMPT = """
|
|
Use the following pieces of context to answer the query at the end.
|
|
If you don't know the answer, just say that you don't know, don't try to make up an answer.
|
|
|
|
$context
|
|
|
|
Query: $query
|
|
|
|
Helpful Answer:
|
|
"""
|
|
|
|
DEFAULT_PROMPT_TEMPLATE = Template(DEFAULT_PROMPT)
|
|
query_re = re.compile(r"\$\{*query\}*")
|
|
context_re = re.compile(r"\$\{*context\}*")
|
|
|
|
|
|
class QueryConfig(BaseConfig):
|
|
"""
|
|
Config for the `query` method.
|
|
"""
|
|
def __init__(self, template: Template = None):
|
|
"""
|
|
Initializes the QueryConfig instance.
|
|
|
|
:param template: Optional. The `Template` instance to use as a template for prompt.
|
|
:raises ValueError: If the template is not valid as template should contain $context and $query
|
|
"""
|
|
if template is None:
|
|
template = DEFAULT_PROMPT_TEMPLATE
|
|
if not (re.search(query_re, template.template) \
|
|
and re.search(context_re, template.template)):
|
|
raise ValueError("`template` should have `query` and `context` keys")
|
|
self.template = template
|