Closed orhansonmeztr closed 2 months ago
Hi,
We've replicated the bug! We're working on changing the interface of this validator as well, to fit more with the patterns that other validators use - sit tight, and we'll have a fix out shortly. Thanks again for your patience, and helping report this issue.
(edited to reflect @bgg01590 's correction)
Hey, we've merged in a fix for this issue.
Try initializing the Guard as follows:
import os
from dotenv import load_dotenv
load_dotenv()
# Import Guard and Validator
from guardrails.hub import RelevancyEvaluator
from guardrails import Guard
# Setup Guard
guard = Guard().use(
RelevancyEvaluator(llm_callable="gpt-3.5-turbo")
)
# Example values
metadata = {
"original_prompt": "What is the capital of France?",
}
guard.parse("The capital of France is Paris.", metadata=metadata) # Validator passes if the text is relevant
...
guard.parse("The capital of France is Paris.", metadata) # Validator passes if the text is relevant
should be
...
guard.parse("The capital of France is Paris.", metadata=metadata) # Validator passes if the text is relevant
It only worked when I explicitly passed the metadata parameter.
Hey, we've merged in a fix for this issue.
Try initializing the Guard as follows:
import os from dotenv import load_dotenv load_dotenv() # Import Guard and Validator from guardrails.hub import RelevancyEvaluator from guardrails import Guard # Setup Guard guard = Guard().use( RelevancyEvaluator(llm_callable="gpt-3.5-turbo") ) # Example values metadata = { "original_prompt": "What is the capital of France?", } guard.parse("The capital of France is Paris.", metadata) # Validator passes if the text is relevant
Thank you @nichwch But it gives the following error after upgrading the guardrails-ai library to 0.5.5 version and running your new script:
Traceback (most recent call last):
File "C:\Users\orhan\PycharmProjects\test1\guardrail_test.py", line 19, in <module>
guard.parse("The capital of France is Paris.", metadata) # Validator passes if the text is relevant
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\guard.py", line 1025, in parse
return trace_guard_execution(
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\guard_tracing.py", line 181, in trace_guard_execution
raise e
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\guard_tracing.py", line 172, in trace_guard_execution
result = _execute_fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\guard.py", line 842, in _execute
return guard_context.run(
^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\common.py", line 99, in wrapped_func
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\guard.py", line 819, in __exec
return self._exec(
^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\guard.py", line 920, in _exec
call = runner(call_log=call_log, prompt_params=prompt_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\run\runner.py", line 242, in __call__
raise e
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\run\runner.py", line 197, in __call__
iteration = self.step(
^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\runner_tracing.py", line 79, in trace_step_wrapper
raise e
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\runner_tracing.py", line 73, in trace_step_wrapper
response = fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\run\runner.py", line 335, in step
raise e
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\run\runner.py", line 320, in step
validated_output = self.validate(
^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\run\runner.py", line 596, in validate
validated_output, metadata = validator_service.validate(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\validator_service.py", line 1014, in validate
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\validator_service.py", line 795, in run_validators
result = await self.run_validator(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\validator_service.py", line 733, in run_validator
result = await self.run_validator_async(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\validator_service.py", line 702, in run_validator_async
result: ValidatorResult = self.execute_validator(
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\validator_service.py", line 69, in execute_validator
result = traced_validator(value, metadata)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\validator_tracing.py", line 134, in trace_validator_wrapper
raise e
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\validator_tracing.py", line 106, in trace_validator_wrapper
resp = fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\hub\arize_ai\relevancy_evaluator\validator\main.py", line 115, in validate
original_prompt = value.get("original_prompt")
^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'
The command @bgg01590 wrote gave the same error. What am I doing wrong?
... guard.parse("The capital of France is Paris.", metadata) # Validator passes if the text is relevant
should be
... guard.parse("The capital of France is Paris.", metadata=metadata) # Validator passes if the text is relevant
It only worked when I explicitly passed the metadata parameter.
My mistake, you do need to explicitly pass the metadata parameter, thanks for calling that out
Hey, we've merged in a fix for this issue. Try initializing the Guard as follows:
import os from dotenv import load_dotenv load_dotenv() # Import Guard and Validator from guardrails.hub import RelevancyEvaluator from guardrails import Guard # Setup Guard guard = Guard().use( RelevancyEvaluator(llm_callable="gpt-3.5-turbo") ) # Example values metadata = { "original_prompt": "What is the capital of France?", } guard.parse("The capital of France is Paris.", metadata) # Validator passes if the text is relevant
Thank you @nichwch But it gives the following error after upgrading the guardrails-ai library to 0.5.5 version and running your new script:
Traceback (most recent call last): File "C:\Users\orhan\PycharmProjects\test1\guardrail_test.py", line 19, in <module> guard.parse("The capital of France is Paris.", metadata) # Validator passes if the text is relevant ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\guard.py", line 1025, in parse return trace_guard_execution( ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\guard_tracing.py", line 181, in trace_guard_execution raise e File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\guard_tracing.py", line 172, in trace_guard_execution result = _execute_fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\guard.py", line 842, in _execute return guard_context.run( ^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\common.py", line 99, in wrapped_func return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\guard.py", line 819, in __exec return self._exec( ^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\guard.py", line 920, in _exec call = runner(call_log=call_log, prompt_params=prompt_params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\run\runner.py", line 242, in __call__ raise e File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\run\runner.py", line 197, in __call__ iteration = self.step( ^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\runner_tracing.py", line 79, in trace_step_wrapper raise e File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\runner_tracing.py", line 73, in trace_step_wrapper response = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\run\runner.py", line 335, in step raise e File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\run\runner.py", line 320, in step validated_output = self.validate( ^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\run\runner.py", line 596, in validate validated_output, metadata = validator_service.validate( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\validator_service.py", line 1014, in validate ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\validator_service.py", line 795, in run_validators result = await self.run_validator( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\validator_service.py", line 733, in run_validator result = await self.run_validator_async( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\validator_service.py", line 702, in run_validator_async result: ValidatorResult = self.execute_validator( ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\validator_service.py", line 69, in execute_validator result = traced_validator(value, metadata) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\validator_tracing.py", line 134, in trace_validator_wrapper raise e File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\telemetry\validator_tracing.py", line 106, in trace_validator_wrapper resp = fn(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^ File "C:\Users\orhan\PycharmProjects\test1\.venv\Lib\site-packages\guardrails\hub\arize_ai\relevancy_evaluator\validator\main.py", line 115, in validate original_prompt = value.get("original_prompt") ^^^^^^^^^ AttributeError: 'str' object has no attribute 'get'
The command @bgg01590 wrote gave the same error. What am I doing wrong?
Can you try reinstalling the relevancy_evaluator validator?
it works now, thanks
Glad I could help!
Hi, I run the following sample script given in the README.md file after the installation of this evaluator with the command
guardrails hub install hub://arize-ai/relevancy_evaluator
.When I run this code, I get the following error.
I load the openai_api_key with load_dotenv() and ensure that the openai_api_key loaded correctly via
print(os.environ['OPENAI_API_KEY'])
that prints 'sk-...'.Python version: 3.11.8
library versions: guardrails-ai==0.5.4 litellm==1.43.18 openai==1.41.0
Could you explain how to use relevancy_evaluator without this error? Any help is appreciated. Orhan