Пример #1
0
def test_policy_predictions_dont_change_persistence():
    original_user_message = UserUttered("hi", intent={"name": "greet"})
    tracker = DialogueStateTracker.from_events(
        "Vova",
        evts=[
            ActionExecuted(ACTION_LISTEN_NAME),
            UserUttered("hi", intent={"name": "greet"}),
            DefinePrevUserUtteredFeaturization(True),
            EntitiesAdded(entities=[{
                "entity": "entity1",
                "value": "value1"
            }]),
        ],
    )

    user_message: UserUttered = list(tracker.events)[1]
    # The entities from the policy predictions are accessible
    assert user_message.entities

    actual_serialized = user_message.as_dict()

    # Assert entities predicted by policies are not persisted
    assert not actual_serialized["parse_data"]["entities"]

    expected_serialized = original_user_message.as_dict()
    # don't compare timestamps
    expected_serialized.pop("timestamp")
    actual_serialized.pop("timestamp")

    assert actual_serialized == expected_serialized
Пример #2
0
async def prepare_token_serialisation(
    tracker_store: TrackerStore, response_selector_agent: Agent, sender_id: Text
):
    text = "Good morning"
    tokenizer = WhitespaceTokenizer(WhitespaceTokenizer.get_default_config())
    tokens = tokenizer.tokenize(Message(data={"text": text}), "text")
    indices = [[t.start, t.end] for t in tokens]

    tracker = tracker_store.get_or_create_tracker(sender_id=sender_id)
    parse_data = await response_selector_agent.parse_message(text)
    event = UserUttered(
        "Good morning",
        parse_data.get("intent"),
        parse_data.get("entities", []),
        parse_data,
    )

    tracker.update(event)
    tracker_store.save(tracker)

    retrieved_tracker = tracker_store.retrieve(sender_id=sender_id)
    event = retrieved_tracker.get_last_event_for(event_type=UserUttered)
    event_tokens = event.as_dict().get("parse_data").get("text_tokens")

    assert event_tokens == indices
Пример #3
0
async def test_file_broker_properly_logs_newlines(tmp_path: Path):
    log_file_path = str(tmp_path / "events.log")

    actual = await EventBroker.create(
        EndpointConfig(**{"type": "file", "path": log_file_path})
    )

    event_with_newline = UserUttered("hello \n there")

    actual.publish(event_with_newline.as_dict())

    # reading the events from the file one event per line
    recovered = []
    with open(log_file_path, "r") as log_file:
        for line in log_file:
            recovered.append(Event.from_parameters(json.loads(line)))

    assert recovered == [event_with_newline]