Test Case

Reference for the Test Case classes in the Future AGI Python SDK.

Test Case Classes

The Test Case classes define the structure for test cases used in evaluations, including support for text, conversational, LLM, multimodal (image/audio), and more.


TestCase Class

Represents a general test case for evaluation.

class TestCase(BaseModel):
    text: Optional[str] = None
    document: Optional[str] = None
    input: Optional[str] = None
    output: Optional[str] = None
    prompt: Optional[str] = None
    criteria: Optional[str] = None
    actual_json: Optional[dict] = None
    expected_json: Optional[dict] = None
    expected_text: Optional[str] = None
    query: Optional[str] = None
    response: Optional[str] = None
    context: Union[List[str], str] = None

Attributes:

  • text (Optional[str]): Text for the test case.
  • document (Optional[str]): Document content.
  • input (Optional[str]): Input string.
  • output (Optional[str]): Output string.
  • prompt (Optional[str]): Prompt used.
  • criteria (Optional[str]): Evaluation criteria.
  • actual_json (Optional[dict]): Actual JSON object.
  • expected_json (Optional[dict]): Expected JSON object.
  • expected_text (Optional[str]): Expected text output.
  • query (Optional[str]): Query string.
  • response (Optional[str]): Response string.
  • context (Union[List[str], str]): Context for the test case.

ConversationalTestCase Class

Represents a conversational test case, consisting of a list of LLM test cases (messages).

class ConversationalTestCase(BaseModel):
    messages: List[LLMTestCase]

Attributes:

  • messages (List[LLMTestCase]): List of LLM test case messages.

LLMTestCase Class

Represents a test case for LLM (Language Model) evaluation.

class LLMTestCase(BaseModel):
    query: str
    response: str
    context: Optional[Union[str, List[str]]] = None
    expected_response: Optional[str] = None

Attributes:

  • query (str): The input query.
  • response (str): The model’s response.
  • context (Optional[Union[str, List[str]]]): Context for the test case.
  • expected_response (Optional[str]): The expected response.

MLLMImage Class

Represents an image input for multimodal LLM test cases.

class MLLMImage(BaseModel):
    url: str
    local: Optional[bool] = None

Attributes:

  • url (str): URL or local path to the image.
  • local (Optional[bool]): Whether the image is local.

MLLMAudio Class

Represents an audio input for multimodal LLM test cases.

class MLLMAudio(BaseModel):
    url: str
    local: Optional[bool] = None
    is_plain_text: bool = False

Attributes:

  • url (str): URL or local path to the audio file.
  • local (Optional[bool]): Whether the audio is local.
  • is_plain_text (bool): Whether the input is plain text (not audio).

MLLMTestCase Class

Represents a multimodal LLM test case, supporting image and audio inputs.

class MLLMTestCase(TestCase):
    image_url: Optional[Union[str, MLLMImage]] = None
    input_image_url: Optional[Union[str, MLLMImage]] = None
    output_image_url: Optional[Union[str, MLLMImage]] = None
    input_audio: Optional[Union[str, MLLMAudio]] = None
    call_type: Optional[str] = None

Attributes:

  • image_url (Optional[Union[str, MLLMImage]]): Image input.
  • input_image_url (Optional[Union[str, MLLMImage]]): Input image.
  • output_image_url (Optional[Union[str, MLLMImage]]): Output image.
  • input_audio (Optional[Union[str, MLLMAudio]]): Input audio.
  • call_type (Optional[str]): Type of call (if applicable).

Example Usage

from fi.testcase import TestCase, LLMTestCase, ConversationalTestCase, MLLMTestCase

# Simple test case
tc = TestCase(input="What is the capital of France?", output="Paris")

# LLM test case
llm_tc = LLMTestCase(query="Who wrote 1984?", response="George Orwell")

# Conversational test case
conv_tc = ConversationalTestCase(messages=[llm_tc])

# Multimodal test case
mllm_tc = MLLMTestCase(
    input="Describe this image.",
    image_url="path/to/image.jpg"
)

Was this page helpful?

Questions & Discussion