def upload_eval_results(
    project_name: str, app_name: str, results: Dict[str, List[EvaluationResult]]
) -> None:
    """
    Upload the evaluation results to LlamaCloud.

    Args:
        project_name (str): The name of the project.
        app_name (str): The name of the app.
        results (Dict[str, List[EvaluationResult]]):
            The evaluation results, a mapping of metric name to a list of EvaluationResult objects.

    Examples:
        ```python
        from llama_index.core.evaluation.eval_utils import upload_eval_results

        result = evaluator.evaluate(...)
        upload_eval_results(
            project_name="my_project",
            app_name="my_app",
            results={"evaluator_name": [result]}
        )
        ```

    """
    from llama_cloud import ProjectCreate

    client = get_client()

    project = client.projects.upsert_project(request=ProjectCreate(name=project_name))
    assert project.id is not None

    client.projects.create_local_eval_set_for_project(
        project_id=project.id,
        app_name=app_name,
        results=results,
    )

    for key, val in results.items():
        print(
            f"Uploaded {len(val)} results for metric {key} under project {project_name}/{app_name}."
        )

    Upload the evaluation results to LlamaCloud.

    Args:
        project_name (str): The name of the project.
        app_name (str): The name of the app.
        results (Dict[str, List[EvaluationResult]]):
            The evaluation results, a mapping of metric name to a list of EvaluationResult objects.

    Examples:
        ```python
        from llama_index.core.evaluation.eval_utils import upload_eval_results

        result = evaluator.evaluate(...)
        upload_eval_results(
            project_name="my_project",
            app_name="my_app",
            results={"evaluator_name": [result]}
        )
        ```

    
llama-index-core/llama_index/core/evaluation/eval_utils.py