from guardrails.schema.rail_schema import rail_string_to_schema def test_rail_scalar_string(): rail_spec = """ Hello world Hello world """ rail_string_to_schema(rail_spec) def test_rail_object_with_scalar(): rail_spec = """ Hello world Hello world """ rail_string_to_schema(rail_spec) def test_rail_object_with_list(): rail_spec = """ Hello world """ rail_string_to_schema(rail_spec) def test_rail_object_with_object(): rail_spec = """ Hello world """ rail_string_to_schema(rail_spec) def test_rail_list_with_scalar(): rail_spec = """ Hello world """ rail_string_to_schema(rail_spec) def test_rail_list_with_list(): rail_spec = """ Hello world """ rail_string_to_schema(rail_spec) def test_rail_list_with_object(): rail_spec = """ Hello world """ rail_string_to_schema(rail_spec) def test_rail_outermost_list(): rail_spec = """ Hello world """ rail_string_to_schema(rail_spec) def test_format_not_read_as_validators(): rail_spec = """ Hello world Hello world """ # Declaring Validators in the format field was dropped in 0.5.x # as stated in the previous DeprecationWarning. processed_schema = rail_string_to_schema(rail_spec) assert len(processed_schema.validators) == 0 def test_rail_with_messages(): rail_spec = """ You are a helpful assistant. Tell me a joke. Be brief and concise. It should not be longer than 1-2 sentences. """ schema = rail_string_to_schema(rail_spec) assert len(schema.exec_opts.messages) == 3 assert schema.exec_opts.messages == [ { "role": "system", "content": "You are a helpful assistant.", }, { "role": "user", "content": "Tell me a joke.", }, { "role": "system", "content": "Be brief and concise. \n" " It should not be longer than 1-2 sentences.", }, ]