mirror of
https://github.com/hwchase17/langchain
synced 2024-10-29 17:07:25 +00:00
38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
|
"""Test in memory docstore."""
|
||
|
from langchain.output_parsers.regex_dict import RegexDictParser
|
||
|
|
||
|
DEF_EXPECTED_RESULT = {"action": "Search", "action_input": "How to use this class?"}
|
||
|
|
||
|
DEF_OUTPUT_KEY_TO_FORMAT = {"action": "Action", "action_input": "Action Input"}
|
||
|
|
||
|
DEF_README = """We have just received a new result from the LLM, and our next step is
|
||
|
to filter and read its format using regular expressions to identify specific fields,
|
||
|
such as:
|
||
|
|
||
|
- Action: Search
|
||
|
- Action Input: How to use this class?
|
||
|
- Additional Fields: "N/A"
|
||
|
|
||
|
To assist us in this task, we use the regex_dict class. This class allows us to send a
|
||
|
dictionary containing an output key and the expected format, which in turn enables us to
|
||
|
retrieve the result of the matching formats and extract specific information from it.
|
||
|
|
||
|
To exclude irrelevant information from our return dictionary, we can instruct the LLM to
|
||
|
use a specific command that notifies us when it doesn't know the answer. We call this
|
||
|
variable the "no_update_value", and for our current case, we set it to "N/A". Therefore,
|
||
|
we expect the result to only contain the following fields:
|
||
|
{
|
||
|
{key = action, value = search}
|
||
|
{key = action_input, value = "How to use this class?"}.
|
||
|
}"""
|
||
|
|
||
|
|
||
|
def test_regex_dict_result() -> None:
|
||
|
"""Test regex dict result."""
|
||
|
regex_dict_parser = RegexDictParser(
|
||
|
output_key_to_format=DEF_OUTPUT_KEY_TO_FORMAT, no_update_value="N/A"
|
||
|
)
|
||
|
result_dict = regex_dict_parser.parse(DEF_README)
|
||
|
print("parse_result:", result_dict)
|
||
|
assert DEF_EXPECTED_RESULT == result_dict
|