Skip to content

client.evals.create throws NameError #2574

@jreeter

Description

@jreeter

Confirm this is an issue with the Python library and not an underlying OpenAI API

  • This is an issue with the Python library

Describe the bug

When creating the eval below the following error is surfaced: NameError: name 'Input' is not defined

Code

eval_cfg = client.evals.create(
  name="visio_json_exact_match",
  data_source_config={
    "type": "custom",
    "item_schema": {
      "type": "object",
      "properties": {
        "prompt": {"type": "string"},
        "expected": {"type": "string"}     # canonical JSON string
      },
      "required": ["prompt","expected"]
    },
    "include_sample_schema": True
  },
  testing_criteria=[
    {
      "type": "string_check",
      "name": "Exact JSON match",
      "operation": "eq",
      # Compare the model's (string) output to your canonical expected string
      "input": "{{sample.output_text}}",
      "reference": "{{item.expected}}"
    }
  ]
)

Stacktrace

Traceback (most recent call last):
  File "api_test.py", line 7, in <module>
    result = client.evals.create(name='Hello World Eval', data_source_config={"type": "custom",
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/openai/resources/evals/evals.py", line 113, in create
    body=maybe_transform(
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/openai/_utils/_transform.py", line 86, in maybe_transform
    return transform(data, expected_type)
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/openai/_utils/_transform.py", line 109, in transform
    transformed = _transform_recursive(data, annotation=cast(type, expected_type))
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/openai/_utils/_transform.py", line 176, in _transform_recursive
    return _transform_typeddict(data, stripped_type)
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/openai/_utils/_transform.py", line 274, in _transform_typeddict
    result[_maybe_transform_key(key, type_)] = _transform_recursive(value, annotation=type_)
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/openai/_utils/_transform.py", line 203, in _transform_recursive
    return [_transform_recursive(d, annotation=annotation, inner_type=inner_type) for d in data]
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/openai/_utils/_transform.py", line 203, in <listcomp>
    return [_transform_recursive(d, annotation=annotation, inner_type=inner_type) for d in data]
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/openai/_utils/_transform.py", line 211, in _transform_recursive
    data = _transform_recursive(data, annotation=annotation, inner_type=subtype)
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/openai/_utils/_transform.py", line 176, in _transform_recursive
    return _transform_typeddict(data, stripped_type)
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/openai/_utils/_transform.py", line 262, in _transform_typeddict
    annotations = get_type_hints(expected_type, include_extras=True)
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/openai/_utils/_transform.py", line 447, in get_type_hints
    return _get_type_hints(obj, globalns=globalns, localns=localns, include_extras=include_extras)
  File "/Users/joshreeter/PycharmProjects/ZendeskAgentClassification/venv/lib/python3.8/site-packages/typing_extensions.py", line 1319, in get_type_hints
    hint = typing.get_type_hints(obj, globalns=globalns, localns=localns)
  File "/Users/joshreeter/.pyenv/versions/3.8.13/lib/python3.8/typing.py", line 1232, in get_type_hints
    value = _eval_type(value, base_globals, localns)
  File "/Users/joshreeter/.pyenv/versions/3.8.13/lib/python3.8/typing.py", line 270, in _eval_type
    return t._evaluate(globalns, localns)
  File "/Users/joshreeter/.pyenv/versions/3.8.13/lib/python3.8/typing.py", line 518, in _evaluate
    eval(self.__forward_code__, globalns, localns),

To Reproduce

Create an eval like so:

eval_cfg = client.evals.create(
  name="visio_json_exact_match",
  data_source_config={
    "type": "custom",
    "item_schema": {
      "type": "object",
      "properties": {
        "prompt": {"type": "string"},
        "expected": {"type": "string"}     # canonical JSON string
      },
      "required": ["prompt","expected"]
    },
    "include_sample_schema": True
  },
  testing_criteria=[
    {
      "type": "string_check",
      "name": "Exact JSON match",
      "operation": "eq",
      # Compare the model's (string) output to your canonical expected string
      "input": "{{sample.output_text}}",
      "reference": "{{item.expected}}"
    }
  ]
)

Code snippets

OS

macOS

Python version

3.8.13

Library version

1.100.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions