> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gp.scale.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Generate an Application Report Card

> Generate a report card for an application variant

<AccordionGroup>
  <Accordion title="1. Instantiate Client">
    Follow the instructions in the [Quickstart Guide](/docs/getting-started) to setup the SGP Client

    ```py theme={null}
    from scale_gp import SGPClient

    client = SGPClient(api_key=api_key)
    ```
  </Accordion>

  <Accordion title="2. Create an evaluation">
    Create an evaluation by following any previous evaluation recipe such as [Multistage Evaluation](/recipes/flexible-evaluations)

    ```py theme={null}
    evaluation = client.evaluations.create(
        type="builder",
        account_id=account_id,
        application_spec_id=spec_id,
        application_variant_id=variant_id,
        description="description",
        evaluation_dataset_id=evaluation_dataset.id,
        name="Report card evaluation",
        evaluation_config_id=evaluation_config.id,
    )
    ```
  </Accordion>

  <Accordion title="3. Generate a report card for the application variant">
    A report card will provide a summary of the performance of the application variant against an evaluation dataset
    Three main scores will be produced: Accuracy, Quality and Trust & Safety.
    The performance in each category will contribute to an overall Scale Confidence Score for the variant.

    You can view generated report cards in the UI at:
    [https://egp.dashboard.scale.com/applications/\{application\_spec\_id}/\{application\_variant\_id}/report-card/overview](https://egp.dashboard.scale.com/applications/\{application_spec_id}/\{application_variant_id}/report-card/overview)

    ```py theme={null}
    create_response = client.application_variant_reports.create(
        application_variant_id=variant_id,
        evaluation_dataset_ids=[manual_evaluation_dataset.id],
        account_id=account_id,
    )
    # retrieve the application variant report, will still be PENDING if immediately retrieved
    application_variant_report = client.application_variant_reports.retrieve(
        application_variant_report_id=create_response.id,
        view=["AsyncJobs"],
    )
    ```
  </Accordion>
</AccordionGroup>

<RequestExample>
  ```python Python theme={null}
  import os
  import time

  from scale_gp import SGPClient

  client = SGPClient(api_key=api_key)

  evaluation = client.evaluations.create(
      type="builder",
      account_id=account_id,
      application_spec_id=spec_id,
      application_variant_id=variant_id,
      description="description",
      evaluation_dataset_id=manual_evaluation_dataset.id,
      name="Report card evaluation",
      evaluation_config_id=evaluation_config.id,
  )
  create_response = client.application_variant_reports.create(
      application_variant_id=builder.application.variant_id,
      evaluation_dataset_ids=[manual_evaluation_dataset.id],
      account_id=account_id,
  )
  print(create_response)
  # retrieve the application variant report, will still be PENDING if immediately retrieved
  application_variant_report = client.application_variant_reports.retrieve(
      application_variant_report_id=create_response.id,
      view=["AsyncJobs"],
  )
  print(application_variant_report)

  ```
</RequestExample>

<ResponseExample>
  ```python Create Response theme={null}
  ApplicationVariantWithScores(
      id='cba0f08d-cb98-4221-a96d-d3eacb1c7a38',
      account_id='66049ada2fc77c99ef015be7',
      application_spec_id='ef0f2d50-1304-4b40-a0cc-1faf449b9555',
      application_variant_id='37d7d6ed-b7e8-4c3b-a488-03c96bb23d5d',
      created_at=datetime.datetime(2024, 9, 26, 20, 34, 6, 45000),
      updated_at=datetime.datetime(2024, 9, 26, 20, 34, 6, 45000),
      category_scores=None,
      evaluation_datasets=None,
      score=None
  )
  ```

  ```python Application Variant Report theme={null}
  ApplicationVariantWithScoresAndViews(
      id='cba0f08d-cb98-4221-a96d-d3eacb1c7a38',
      account_id='66049ada2fc77c99ef015be7',
      application_spec_id='ef0f2d50-1304-4b40-a0cc-1faf449b9555',
      application_variant_id='37d7d6ed-b7e8-4c3b-a488-03c96bb23d5d',
      created_at=datetime.datetime(2024, 9, 26, 20, 34, 6, 45000),
      updated_at=datetime.datetime(2024, 9, 26, 20, 34, 6, 45000),
      async_jobs=[
          AsyncJob(
              id='ddc6d3fd-bc23-4ee1-a84b-77cc485b5b31',
              created_at=datetime.datetime(2024, 9, 26, 20, 34, 6, 45479),
              job_type='application-variant-report-generation',
              status='Running',
              updated_at=datetime.datetime(2024, 9, 26, 20, 35, 12, 963088),
              job_metadata=None,
              progress=AsyncJobProgress(
                  completed=166,
                  failed=0,
                  pending=400
              )
          )
      ],
      category_scores=[
          CategoryScoreApplicationCategoryScoreQuality(
              category='quality',
              metric_scores=[
                  CategoryScoreApplicationCategoryScoreQualityMetricScoreApplicationMetricScoreCoherence(
                      category='quality',
                      metric_type='coherence',
                      score=100.0
                  ),
                  CategoryScoreApplicationCategoryScoreQualityMetricScoreApplicationMetricScoreGrammar(
                      category='quality',
                      metric_type='grammar',
                      score=100.0
                  )
              ],
              score=100.0
          ),
          CategoryScoreApplicationCategoryScoreTrustAndSafety(
              category='trust-and-safety',
              metric_scores=[
                  CategoryScoreApplicationCategoryScoreTrustAndSafetyMetricScoreApplicationMetricScoreModeration(
                      category='trust-and-safety',
                      metric_type='moderation',
                      score=100.0
                  )
              ],
              score=100.0
          ),
          CategoryScoreApplicationCategoryScoreAccuracy(
              category='accuracy',
              metric_scores=[
                  CategoryScoreApplicationCategoryScoreAccuracyMetricScoreApplicationMetricScoreAnswerRelevance(
                      category='accuracy',
                      metric_type='answer-relevance',
                      score=79.33333333333333
                  ),
                  CategoryScoreApplicationCategoryScoreAccuracyMetricScoreApplicationMetricScoreAnswerCorrectness(
                      category='accuracy',
                      metric_type='answer-correctness',
                      score=83.33333333333333
                  )
              ],
              score=81.33333333333333
          )
      ],
      evaluation_datasets=[
          EvaluationDataset(
              evaluation_dataset=EvaluationDataset(
                  id='04f7fdf5-cdb6-490b-ae59-b1e14659e064',
                  account_id='66049ada2fc77c99ef015be7',
                  created_at=datetime.datetime(2024, 9, 26, 20, 31, 28, 553621),
                  created_by_user_id='42a5c8af-f698-43d0-923e-ba70102a2887',
                  draft=None,
                  name='manual_evaluation_dataset',
                  schema_type='GENERATION',
                  updated_at=datetime.datetime(2024, 9, 26, 20, 31, 28, 553621),
                  archived_at=None,
                  evaluation_dataset_metadata=None,
                  knowledge_base_id=None,
                  out_of_date=None,
                  vendor=None
              ),
              evaluation_dataset_version_num=1,
              generation_status='Completed',
              scored_test_case_count=3
          ),
          EvaluationDataset(
              evaluation_dataset=EvaluationDataset(
                  id='89154549-6867-4d84-8bfd-435a3769e675',
                  account_id='66049ada2fc77c99ef015be7',
                  created_at=datetime.datetime(2024, 7, 11, 8, 38, 40),
                  created_by_user_id='5c102f95-7142-4cdc-899e-823aae3fdb9e',
                  draft=None,
                  name='Trust and Safety Evaluation Dataset v0.0.0',
                  schema_type='GENERATION',
                  updated_at=datetime.datetime(2024, 7, 11, 8, 38, 40),
                  archived_at=None,
                  evaluation_dataset_metadata=None,
                  knowledge_base_id=None,
                  out_of_date=None,
                  vendor='scale'
              ),
              evaluation_dataset_version_num=1,
              generation_status='Pending',
              scored_test_case_count=0
          )
      ],
      score=93.40938696795908
  )
  ```
</ResponseExample>
