Full Code of athina-ai/athina-evals for AI

main 8891c2b44c8f cached
199 files
1.0 MB
233.7k tokens
971 symbols
1 requests
Download .txt
Showing preview only (1,092K chars total). Download the full file or copy to clipboard to get everything.
Repository: athina-ai/athina-evals
Branch: main
Commit: 8891c2b44c8f
Files: 199
Total size: 1.0 MB

Directory structure:
gitextract_fpungzut/

├── .github/
│   └── workflows/
│       ├── mypy_linter.yml
│       ├── pyflakes_and_flake8_and_compileall_linter.py.yml
│       └── python-publish.yml
├── .gitignore
├── .pre-commit-config.yaml
├── README.md
├── athina/
│   ├── __init__.py
│   ├── cli/
│   │   ├── __init__.py
│   │   └── cli.py
│   ├── constants/
│   │   ├── __init__.py
│   │   └── messages.py
│   ├── datasets/
│   │   ├── __init__.py
│   │   ├── conversations.json
│   │   ├── dataset.py
│   │   ├── summarization_sample.py
│   │   └── yc_query_mini.py
│   ├── errors/
│   │   ├── __init__.py
│   │   └── exceptions.py
│   ├── evals/
│   │   ├── __init__.py
│   │   ├── base_evaluator.py
│   │   ├── conversation/
│   │   │   ├── conversation_coherence/
│   │   │   │   ├── evaluator.py
│   │   │   │   └── prompt.py
│   │   │   └── conversation_resolution/
│   │   │       ├── evaluator.py
│   │   │       └── prompt.py
│   │   ├── eval_type.py
│   │   ├── function/
│   │   │   ├── __init__.py
│   │   │   ├── function_evaluator.py
│   │   │   ├── functions.py
│   │   │   └── wrapper.py
│   │   ├── grounded/
│   │   │   ├── __init__.py
│   │   │   ├── grounded_evaluator.py
│   │   │   ├── similarity.py
│   │   │   └── wrapper.py
│   │   ├── guardrails/
│   │   │   ├── correct_language/
│   │   │   │   └── evaluator.py
│   │   │   ├── detect_pii/
│   │   │   │   └── evaluator.py
│   │   │   ├── gibberish_text/
│   │   │   │   └── evaluator.py
│   │   │   ├── no_secrets_present/
│   │   │   │   └── evaluator.py
│   │   │   ├── politeness_check/
│   │   │   │   └── evaluator.py
│   │   │   ├── profanity_free/
│   │   │   │   └── evaluator.py
│   │   │   ├── reading_time/
│   │   │   │   └── evaluator.py
│   │   │   ├── restrict_to_topic/
│   │   │   │   └── evaluator.py
│   │   │   ├── sensitive_topics/
│   │   │   │   └── evaluator.py
│   │   │   ├── sfw/
│   │   │   │   └── evaluator.py
│   │   │   ├── toxic_language/
│   │   │   │   └── evaluator.py
│   │   │   └── unusual_prompt/
│   │   │       └── evaluator.py
│   │   ├── llm/
│   │   │   ├── __init__.py
│   │   │   ├── context_contains_enough_information/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── evaluator.py
│   │   │   │   └── examples.py
│   │   │   ├── custom_prompt/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── does_response_answer_query/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── evaluator.py
│   │   │   │   └── examples.py
│   │   │   ├── example.py
│   │   │   ├── faithfulness/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── evaluator.py
│   │   │   │   └── examples.py
│   │   │   ├── grading_criteria/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── groundedness/
│   │   │   │   ├── evaluator.py
│   │   │   │   └── prompt.py
│   │   │   ├── llm_evaluator.py
│   │   │   └── summary_accuracy/
│   │   │       └── evaluator.py
│   │   ├── ragas/
│   │   │   ├── __init__.py
│   │   │   ├── answer_correctness/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── answer_relevancy/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── answer_semantic_similarity/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── coherence/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── conciseness/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── context_precision/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── context_recall/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── faithfulness/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── harmfulness/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── maliciousness/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   └── ragas_evaluator.py
│   │   └── safety/
│   │       ├── content_moderation/
│   │       │   └── evaluator.py
│   │       ├── pii_detection/
│   │       │   └── evaluator.py
│   │       └── prompt_injection/
│   │           └── evaluator.py
│   ├── guard/
│   │   ├── exception.py
│   │   └── guard.py
│   ├── helpers/
│   │   ├── __init__.py
│   │   ├── athina_logging_helper.py
│   │   ├── config.py
│   │   ├── constants.py
│   │   ├── dataset_helper.py
│   │   ├── eval_helper.py
│   │   ├── function_eval_util.py
│   │   ├── get_evaluator.py
│   │   ├── jinja_helper.py
│   │   ├── json.py
│   │   ├── kwparser.py
│   │   ├── loader_helper.py
│   │   ├── logger.py
│   │   ├── package_helper.py
│   │   ├── run_helper.py
│   │   └── step_helper.py
│   ├── interfaces/
│   │   ├── __init__.py
│   │   ├── athina.py
│   │   ├── custom_model_config.py
│   │   ├── data.py
│   │   ├── model.py
│   │   ├── openai.py
│   │   └── result.py
│   ├── keys/
│   │   ├── __init__.py
│   │   ├── athina_api_key.py
│   │   └── openai_api_key.py
│   ├── llms/
│   │   ├── __init__.py
│   │   ├── abstract_llm_service.py
│   │   ├── litellm_service.py
│   │   ├── openai_service.py
│   │   ├── question_answerer.py
│   │   ├── question_answerer_bulk.py
│   │   ├── question_answerer_cot.py
│   │   ├── question_answerer_with_retrieval.py
│   │   └── question_generator.py
│   ├── loaders/
│   │   ├── __init__.py
│   │   ├── base_loader.py
│   │   ├── conversation_loader.py
│   │   ├── json_loader.py
│   │   ├── loader.py
│   │   ├── response_loader.py
│   │   ├── summary_loader.py
│   │   └── text_loader.py
│   ├── metrics/
│   │   ├── agreement_score.py
│   │   ├── contradiction_score.py
│   │   ├── groundedness.py
│   │   ├── hallucination_score.py
│   │   ├── metric.py
│   │   ├── metric_type.py
│   │   ├── passed.py
│   │   ├── ragas_metric.py
│   │   └── similarity_score.py
│   ├── runner/
│   │   ├── __init__.py
│   │   ├── run.py
│   │   └── run_wrapper.py
│   ├── scripts/
│   │   └── guardrails.py
│   ├── services/
│   │   └── athina_api_service.py
│   └── steps/
│       ├── __init__.py
│       ├── api.py
│       ├── base.py
│       ├── browser_use_step.py
│       ├── chain.py
│       ├── chroma_retrieval.py
│       ├── classify_text.py
│       ├── code_execution.py
│       ├── code_execution_v2.py
│       ├── conditional.py
│       ├── debug.py
│       ├── extract_entities.py
│       ├── extract_json_path.py
│       ├── iterator.py
│       ├── llm.py
│       ├── loop.py
│       ├── open_ai_assistant.py
│       ├── parse_document.py
│       ├── pinecone_retrieval.py
│       ├── qdrant_retrieval.py
│       ├── research_agent_step.py
│       ├── search.py
│       ├── spider_crawl.py
│       ├── tool_call_agent.py
│       ├── transcribe_speech_to_text.py
│       ├── transform.py
│       ├── utils/
│       │   └── metadata.py
│       └── weaviate_retrieval.py
├── examples/
│   ├── chain.ipynb
│   ├── conditional_flow.ipynb
│   ├── conversation_coherence.ipynb
│   ├── conversation_eval.ipynb
│   ├── conversation_resolution.ipynb
│   ├── custom_grading_criteria.ipynb
│   ├── dataset_creation.ipynb
│   ├── execute_node.ipynb
│   ├── groundedness.ipynb
│   ├── guard.ipynb
│   ├── guardrails.ipynb
│   ├── load_athina_data.ipynb
│   ├── question_answerer.ipynb
│   ├── ragas.ipynb
│   ├── run_custom_eval.ipynb
│   ├── run_eval.ipynb
│   ├── run_eval_llama_index.ipynb
│   ├── run_eval_suite.ipynb
│   ├── run_experiment.ipynb
│   ├── run_function_eval.ipynb
│   ├── run_single_datapoint.ipynb
│   └── text_summarization.ipynb
└── pyproject.toml

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/workflows/mypy_linter.yml
================================================
name: MyPy static type checker

on:
  pull_request:
    branches: [ main ]

jobs:
  static_type_checker:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v3
    
    - name: Set up Python 3.9
      uses: actions/setup-python@v4
      with:
        python-version: '3.9'
    
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install mypy

    - name: Run Mypy
      id: mypy
      continue-on-error: true
      run: |
        mypy . \
        --exclude 'venv|.git|__pycache__' \
        --ignore-missing-imports \
        --allow-untyped-defs \
        --allow-untyped-decorators \
        --allow-subclassing-any \
        --disable-error-code="var-annotated" \
        --disable-error-code="union-attr" \
        --disable-error-code="assignment" \
        --implicit-optional \
        --no-error-summary \
        --no-pretty \
        --explicit-package-bases \
        --namespace-packages \
        --check-untyped-defs

    - name: Check for Failures
      if: ${{ steps.mypy.outcome == 'failure' }}
      run: |
        echo "::error::Linting checks failed! Please check the logs above for Mypy errors"
        exit 1


================================================
FILE: .github/workflows/pyflakes_and_flake8_and_compileall_linter.py.yml
================================================
name: Flake8, Pyflakes and Compileall Linter

on:
  pull_request:
    branches: [ main ]
  workflow_dispatch:

jobs:
  lint:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v3
    
    - name: Set up Python 3.9
      uses: actions/setup-python@v4
      with:
        python-version: '3.9'
    
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install flake8 pyflakes isort

    - name: Run Flake8
      id: flake8
      continue-on-error: true
      run: |
        flake8 . \
        --exclude=venv,.git,__pycache__ \
        --ignore=E123,E128,E222,E225,E226,E241,E251,E266,E275,E301,E302,E303,E402,E41,E501,W291,W292,W293,W391,W503,E203,F401,F841,F541,C901 \
        --max-line-length=120 \
        --max-complexity=20

    - name: Check syntax with compileall
      id: compileall
      continue-on-error: true
      run: python -m compileall .
          
    - name: Check syntax with pyflakes
      id: pyflakes
      continue-on-error: true
      run: pyflakes .

    - name: Check for Failures
      if: ${{ steps.flake8.outcome == 'failure' || steps.compileall.outcome == 'failure' || steps.pyflakes.outcome == 'failure' }}
      run: |
        echo "::error::Linting checks failed! The following linters reported issues:"
        if [[ "${{ steps.flake8.outcome }}" == "failure" ]]; then
          echo "::error::- Flake8 failed"
        fi
        if [[ "${{ steps.compileall.outcome }}" == "failure" ]]; then
          echo "::error::- Compileall failed"
        fi
        if [[ "${{ steps.pyflakes.outcome }}" == "failure" ]]; then
          echo "::error::- Pyflakes failed"
        fi
        exit 1


================================================
FILE: .github/workflows/python-publish.yml
================================================
name: Publish to PyPi
on:
  release:
    types: [published]
permissions:
  contents: read
jobs:
  publish:
    runs-on: ubuntu-latest
    environment:
      name: pypi
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.x"
      - name: Install Poetry
        run: |
          curl -sSL https://install.python-poetry.org | python3 -
      - name: Configure Poetry timeout
        run: |
          poetry config repositories.pypi.http-basic.timeout 30
      - name: Configure Poetry PyPI token
        run: |
          poetry config pypi-token.pypi ${{ secrets.PYPI_TOKEN }}
      - name: Build and publish
        run: |
          poetry publish --build


================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
*.pyc

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
#   For a library or package, you might want to ignore these files since the code is
#   intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
#   However, in case of collaboration, if having platform-specific dependencies or dependencies
#   having no cross-platform support, pipenv may install dependencies that don't work, or not
#   install all needed dependencies.
#Pipfile.lock

# poetry
#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
#   This is especially recommended for binary packages to ensure reproducibility, and is more
#   commonly ignored for libraries.
#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
#   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
#   in version control.
#   https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.DS_Store
.env
.venv*
env/
venv/
ENV/
env.bak/
venv.bak/
athina_config.yml

# Project related
data/results_full
data/datasets_full
data/build_datasets

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# Stores VSCode versions used for testing VSCode extensions
.vscode-test
.vscode/settings.json

# PyCharm
#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can
#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
#  and can be added to the global gitignore or merged into this file.  For a more nuclear
#  option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

================================================
FILE: .pre-commit-config.yaml
================================================
repos:
-   repo: https://github.com/psf/black
    rev: stable
    hooks:
    - id: black

================================================
FILE: README.md
================================================
# Overview

Athina is an Observability and Experimentation platform for AI teams.

This SDK is an open-source repository of [50+ preset evals](https://docs.athina.ai/evals/preset-evals/overview). You can also use [custom evals](https://docs.athina.ai/evals/custom-evals/overview).

This SDK also serves as a companion to [Athina IDE](https://athina.ai/develop) where you can prototype pipelines, run experiments and evaluations, and compare datasets.

---

### Quick Start
Follow [this notebook](https://github.com/athina-ai/athina-evals/blob/main/examples/run_eval_suite.ipynb) for a quick start guide.

To get an Athina API key, sign up at https://app.athina.ai

---

### Run Evals

These evals can be run [programmatically](https://athina.ai/videos/run-evals-programmatically.mp4), or [via the UI](https://docs.athina.ai/ide/run-eval) on Athina IDE.

<img width="1530" alt="image" src="https://github.com/athina-ai/athina-evals/assets/7515552/98494736-31b6-458f-bd0a-a5b2cbca9d70">

---

### Compare datasets side-by-side ([Docs](https://docs.athina.ai/ide/compare-datasets))

Once a dataset is logged to Athina IDE, you can also compare it against another dataset.

![image](https://github.com/athina-ai/athina-evals/assets/7515552/90640acc-495e-45e0-b590-d6ddee8c5727)


Once you run evals using Athina, they will be visible in [Athina IDE](https://athina.ai/develop) where you can run experiments, evals, and compare datasets side-by-side.

---

### Preset Evals



---

### Athina Steps

To use CodeExecutionV2, you need to install e2b.

```bash
pip install e2b-code-interpreter
```


================================================
FILE: athina/__init__.py
================================================
# __init__.py
from .guard.guard import guard
from .guard.exception import AthinaGuardException
from . import evals
from . import keys
from .runner.run_wrapper import run


================================================
FILE: athina/cli/__init__.py
================================================


================================================
FILE: athina/cli/cli.py
================================================
#!/usr/bin/env python3

import argparse
from athina.helpers.config import ConfigHelper
from athina.helpers.run_helper import RunHelper
from athina.helpers.kwparser import KeyValueAction
from athina.interfaces.model import Model
from athina.loaders import LoadFormat
from typing import Optional


def main():
    parser = argparse.ArgumentParser(
        prog="athina",
        description="Evaluation framework for your LLM-powered applications",
    )

    subparsers = parser.add_subparsers(title="commands", dest="command")

    # athina init
    parser_init = subparsers.add_parser("init", help="Configure settings")
    parser_init.set_defaults(func=init)

    # athina config
    parser_config = subparsers.add_parser("config", help="Configure settings")
    parser_config.set_defaults(func=config)

    # athina list
    parser_config = subparsers.add_parser("list", help="Lists all available evals")
    parser_config.set_defaults(func=list)

    # athina run [eval_name] [kwargs]
    parser_run = subparsers.add_parser("run", help="Run an eval suite")

    # Add the 'eval_name' positional argument
    parser_run.add_argument(
        "eval_name",
        type=str,
        help="The name of the eval or eval suite to run",
    )

    # Add the 'kwargs' argument for key=value pairs
    parser_run.add_argument(
        "kwargs",
        nargs="*",
        action=KeyValueAction,
        help="Additional named arguments as key=value pairs",
    )

    # Add the '--format' optional argument
    parser_run.add_argument(
        "--model",
        type=str,
        choices=[
            Model.GPT35_TURBO.value,
            Model.GPT4.value,
            Model.GPT4_1106_PREVIEW.value,
        ],
        help="LLM model for evaluation",
    )

    # Add the '--format' optional argument
    parser_run.add_argument(
        "--format",
        type=str,
        choices=[
            LoadFormat.JSON.value,
            LoadFormat.DICT.value,
            LoadFormat.ATHINA.value,
        ],
        help="Output format type",
    )

    # Add the '--filename' optional argument
    parser_run.add_argument(
        "--filename",
        type=str,
        help="Path to the file",
    )

    # Set the default function to be called
    parser_run.set_defaults(func=run_delegator)

    # Parse the arguments
    args = parser.parse_args()

    if hasattr(args, "func"):
        args.func(args)
    else:
        parser.print_help()


def init(args):
    """Initializes Athina and sets the necessary configuration variables"""
    config_data = ConfigHelper.load_config()

    openai_api_key = input("Enter your OpenAI API key: ")
    config_data["openai_api_key"] = openai_api_key

    athina_api_key = input("Enter your Athina API key: ")
    config_data["athina_api_key"] = athina_api_key

    config_data["llm_engine"] = "gpt-4-1106-preview"

    # Add other configuration prompts as needed

    ConfigHelper.save_config(config_data)
    print("Configuration updated successfully. See athina_config.yml for details.")


def config(args):
    """Prints the current configuration"""
    config_data = ConfigHelper.load_config()
    print(config_data)


def list(args):
    """Lists all available evals"""
    evals = RunHelper.all_evals()
    evals_list = "- "
    evals_list += "\n- ".join(evals)
    print(evals_list)


def run_delegator(args):
    """Delegates the run command to the appropriate function"""

    if not ConfigHelper.is_set():
        print("Please run 'athina init' to configure your API keys")
        return

    # Load the eval model
    model = ConfigHelper.load_llm_engine()
    if args.model is not None:
        model = args.model

    filename = args.filename if args.filename else None

    # Check if format is 'athina'
    if args.format == "athina":
        run_batch(args.eval_name, model, format="athina")
        return

    # Check if both format and filename are set
    elif args.format is not None and filename is not None:
        run_batch(args.eval_name, model, format=args.format, filename=filename)
        return

    # If format and filename are both None, call run_datapoint with kwargs
    elif args.format is None and filename is None:
        run_datapoint(args.eval_name, model, **dict(args.kwargs))
        return

    elif args.format is not None and filename is None:
        raise Exception("Filename must be specified for batch process")
        return

    else:
        raise Exception("Invalid run args")


# Define the run_batch function
def run_batch(
    eval_name: str, model: str, format: str, filename: Optional[str] = None, **kwargs
):
    # Implementation for running batch process
    try:
        print(
            f"Running batch with format={format}, model={model}, filename={filename}, kwargs={kwargs}"
        )

        RunHelper.run_eval_on_batch(
            eval_name=eval_name, model=model, format=format, filename=filename, **kwargs
        )
    except Exception as e:
        print(f"{e}")
        return


def run_datapoint(eval_name: str, model: str, **kwargs):
    """Runs a single eval on a single datapoint"""
    try:
        print(f"Running single with {eval_name} and kwargs {kwargs}")
        RunHelper.run_eval(eval_name, model, kwargs)
    except Exception as e:
        print(f"{e}")
        return


if __name__ == "__main__":
    main()


================================================
FILE: athina/constants/__init__.py
================================================


================================================
FILE: athina/constants/messages.py
================================================
class AthinaMessages:
    """
    User facing messages.
    """

    SIGN_UP_FOR_BEST_EXPERIENCE = """
For the best experience, sign up at https://athina.ai and set an Athina API key.

See https://docs.athina.ai/evals/quick_start for more information.
"""

    NO_ATHINA_API_KEY = """
Please set an Athina API key.

See https://docs.athina.ai/evals/quick_start for more info.
    """

    NO_OPENAI_API_KEY = """
Please set an OpenAI API key.

See https://docs.athina.ai/evals/quick_start for more info.
    """


================================================
FILE: athina/datasets/__init__.py
================================================
from athina.datasets.dataset import Dataset

__all__ = ["Dataset"]


================================================
FILE: athina/datasets/conversations.json
================================================
[
    [
        "Customer: Hi, Im interested in purchasing a new smartphone. Can you help me choose the best one?",
        "Salesman: I'm sorry I cannot help you with that.",
        "Customer: Im looking for a laptop that can handle graphic design software. Any recommendations?",
        "Salesman: Absolutely! In order to find the best laptop for your needs, could you provide me with more details about the specific graphic design software youll be using?",
        "Customer: Im considering upgrading my companys server. What options do you have available?",
        "Salesman: Thank you for considering us for your server upgrade. To better understand your requirements, could you please share some information about your current server setup and the specific needs you have in mind?",
        "Customer: Im in the market for a new smartwatch. Can you help me choose the right one?",
        "Salesman: Absolutely! Before we proceed, could you let me know what features are most important to you in a smartwatch? That way, I can recommend the best options that suit your needs.",
        "Customer: Im looking to buy a new printer for my home office. What do you suggest?",
        "Salesman: Certainly! To assist you in finding the perfect printer for your home office, could you please let me know what specific tasks youll be using it for and if there are any specific features you require?",
        "Customer: Im interested in purchasing a gaming console. Which one would you recommend?",
        "Salesman: Great! Before I can recommend the ideal gaming console for you, could you let me know what types of games you enjoy playing and if there are any specific features you are looking for in a console?",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in learning more about your health products.",
        "Salesman: Great! Im happy to help. Tell me, what specific health concerns do you have?",
        "Customer: Ive been experiencing digestive issues lately and Im looking for a solution.",
        "Salesman: I understand how frustrating that can be. Many of our customers have found relief with our digestive health supplements. Would you like me to provide more information?",
        "Customer: Ive tried different products before, but nothing seems to work. Im skeptical.",
        "Salesman: I completely understand your skepticism. Its important to find the right solution that works for you. Our digestive health supplements are backed by scientific research and have helped many people with similar issues. Would you be open to trying them?",
        "Customer: Im concerned about the potential side effects of the supplements. Are they safe?",
        "Salesman: Safety is our top priority. Our digestive health supplements are made with natural ingredients and undergo rigorous testing to ensure their safety and effectiveness. We can provide you with detailed information on the ingredients and any potential side effects. Would that help alleviate your concerns?",
        "Customer: Im still unsure. Can you share some success stories from your customers?",
        "Salesman: Absolutely! We have numerous success stories from customers who have experienced significant improvements in their digestive health after using our supplements. I can provide you with testimonials and reviews to give you a better idea of the positive results people have achieved. Would you like to hear some of their stories?",
        "Customer: I appreciate your assistance. Ill take some time to think about it before making a decision.",
        "Salesman: Of course, take all the time you need. Remember, building rapport is important to us, so feel free to reach out if you have any more questions or if theres anything else I can help you with.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in investing in the stock market. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. Lets start by getting to know each other. What are your investment goals and risk tolerance?",
        "Customer: Ive had some bad experiences with financial advisors in the past. How can I trust you?",
        "Salesman: I understand your concerns. Trust is crucial in this industry. Let me share some success stories from my previous clients and provide you with references to vouch for my expertise and reliability.",
        "Customer: I have specific financial goals and need personalized advice. Can you cater to my unique needs?",
        "Salesman: Absolutely! Building a strong rapport allows me to understand your specific requirements better. By actively listening and tailoring my advice to your goals, I can provide you with a personalized financial plan that meets your needs.",
        "Customer: Im not sure if I should invest in stocks or bonds. What do you recommend?",
        "Salesman: Lets discuss your investment horizon, risk tolerance, and financial objectives in more detail. This will help me determine the best asset allocation strategy for you. Remember, Im here to guide you and find the most suitable investment options based on your needs.",
        "Customer: Ive heard about other investment firms that offer similar services. Why should I choose you?",
        "Salesman: Great question! We differentiate ourselves by placing a strong emphasis on building rapport with our clients. Our dedicated team ensures that you feel understood, valued, and supported throughout your investment journey. We also provide ongoing support and valuable resources to help you achieve your financial goals.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hello, Im interested in your financial planning services.",
        "Salesman: Great to hear! Im here to help. May I ask what specifically you are looking for in financial planning?",
        "Customer: Im concerned about my retirement savings and want to ensure a secure future.",
        "Salesman: I completely understand your concern. Retirement planning is a crucial aspect of financial stability. Lets discuss your goals and create a personalized plan to address them.",
        "Customer: Ive had some bad experiences with financial advisors in the past, so Im hesitant.",
        "Salesman: I appreciate your honesty. Building trust is important, and I want to assure you that Im committed to providing the best service and earning your trust. Lets start by discussing your previous experiences and addressing any concerns you may have.",
        "Customer: Im not sure if I can afford financial planning right now.",
        "Salesman: I understand your concern. Financial planning is an investment in your future, and we can work together to find a solution that fits your budget. Lets explore different options and find a plan that aligns with your financial goals.",
        "Customer: Ive heard mixed reviews about your company. Why should I choose you?",
        "Salesman: Thank you for bringing that up. Building rapport is important, and I want to assure you that we strive for customer satisfaction. Lets discuss your specific needs and how our expertise and personalized approach can benefit you. I can also provide you with testimonials from satisfied clients.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you help me choose the right one?",
        "Salesman: Of course! Id be happy to assist you. Tell me, what are your specific requirements and preferences?",
        "Customer: Im looking for a smartphone with a good camera and long battery life. Any recommendations?",
        "Salesman: Absolutely! I can suggest a few models that meet your criteria. May I ask what other features are important to you?",
        "Customer: Im considering upgrading my internet plan. How can I determine which plan is suitable for my needs?",
        "Salesman: Great question! Lets start by discussing your current internet usage and what you expect from a new plan. That way, we can find the perfect fit for you.",
        "Customer: Im in the market for a new car. Can you help me find one that suits my budget and lifestyle?",
        "Salesman: Absolutely! Understanding your budget and lifestyle is crucial. Could you share more about your preferences, such as the type of car youre interested in and any specific features youd like?",
        "Customer: Im looking for a reliable web hosting service for my business. Any recommendations?",
        "Salesman: Certainly! To recommend the best web hosting service for your business, may I know more about your websites requirements and the level of support youre seeking?",
        "Customer: Im interested in buying a new home theater system. Where do I start?",
        "Salesman: Im glad youre considering a home theater system. Lets begin by discussing your budget, the space you have available, and your audiovisual preferences. That way, we can find the perfect setup for you.",
        "Customer: Im looking to invest in a new software solution for my company. How can I ensure it meets our needs?",
        "Salesman: Excellent! To ensure we find the right software solution for your company, could you provide more details about your specific requirements and any challenges youre currently facing?",
        "Customer: Im thinking of switching my mobile phone provider. What factors should I consider before making a decision?",
        "Salesman: Switching mobile phone providers requires careful consideration. Lets start by discussing your current plan, network coverage preferences, and any specific features or services that are important to you.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your financial planning services.",
        "Salesman: Great! Im glad you reached out. How can I assist you today?",
        "Customer: Im looking for a trustworthy advisor who understands my financial goals.",
        "Salesman: Absolutely. Building trust is essential in our industry. Im here to listen and help you achieve your goals.",
        "Customer: Ive had bad experiences with financial advisors in the past, so trust is a big concern for me.",
        "Salesman: I completely understand your concerns. Lets start by addressing any questions or doubts you may have, and Ill do my best to earn your trust.",
        "Customer: I want to make sure that my investments align with my values and long-term objectives.",
        "Salesman: Thats an important consideration. I believe in creating personalized investment strategies that align with each clients unique goals and values.",
        "Customer: I appreciate a financial advisor who genuinely cares about my success and understands my needs.",
        "Salesman: I couldnt agree more. My primary goal is to see you succeed financially, and Ill always prioritize your needs and aspirations.",
        "Customer: I have some concerns about the current market situation. Can you help me navigate through it?",
        "Salesman: Absolutely. Understanding and addressing market concerns is crucial. Ill provide you with the necessary insights and guide you through any uncertainties.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. What are you looking for in a laptop?",
        "Customer: Ive had some bad experiences with previous laptops. I want to make sure this one is reliable.",
        "Salesman: I completely understand your concern. Our laptops are known for their durability and performance. Let me show you some options that might suit your needs.",
        "Customer: Im on a tight budget. Is there any way to get a good laptop at a lower price?",
        "Salesman: Absolutely! We have some budget-friendly options that still offer great performance and reliability. Lets find the perfect one for you within your budget.",
        "Customer: Im not very tech-savvy. Will I be able to navigate the laptop easily?",
        "Salesman: Dont worry, our laptops are designed with user-friendliness in mind. We can also provide you with personalized assistance to ensure a smooth and comfortable experience.",
        "Customer: Ive heard good things about your customer service. Can you tell me more about it?",
        "Salesman: Thank you for the compliment! We take pride in our excellent customer service. Our team is always ready to assist you with any questions or issues you may have, even after your purchase.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Im looking for a new healthcare provider. Can you tell me more about your services?",
        "Salesman: Of course! We offer a range of healthcare services tailored to meet your specific needs. But before we dive into that, may I ask about your current healthcare situation and any specific requirements you have?",
        "Customer: Ive been having some health issues lately, and Im looking for a doctor who can provide personalized care. Can you assure me of that?",
        "Salesman: Absolutely! We prioritize personalized care and understand the importance of addressing your unique health concerns. Our team of doctors takes the time to listen, understand, and provide tailored treatment plans based on your specific needs.",
        "Customer: Ive had bad experiences with healthcare providers in the past. How can I trust your clinic to provide a better experience?",
        "Salesman: I completely understand your concern. Trust is crucial when it comes to healthcare decisions. Our clinic focuses on building strong relationships with our patients through open communication, empathy, and genuine care. We strive to create a comfortable and trusting environment for every individual who walks through our doors.",
        "Customer: Im hesitant to share my medical history with new doctors. How do you ensure confidentiality and make patients feel comfortable sharing sensitive information?",
        "Salesman: Confidentiality is a top priority for us. We strictly adhere to privacy regulations and have robust systems in place to safeguard your personal information. Our doctors are trained to create a safe and non-judgmental space where you can openly discuss your medical history and concerns. We aim to foster trust and ensure that you feel comfortable sharing sensitive information with our team.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your financial planning services.",
        "Salesman: Great! Im glad you reached out. My name is John, and Id be happy to assist you. How can I help?",
        "Customer: Ive had a bad experience with a previous financial advisor. How can I trust you?",
        "Salesman: I understand your concern. Building trust is essential in our industry. Let me assure you that I prioritize your best interests and have a track record of satisfied clients. Id be happy to share some testimonials and success stories if that would help build your trust.",
        "Customer: Im not sure if I really need financial planning. Can you explain its benefits?",
        "Salesman: Of course! Financial planning can help you achieve your short and long-term financial goals, whether its saving for retirement, buying a house, or funding your childrens education. It provides a comprehensive roadmap to make informed decisions, manage risks, and maximize your financial potential. Lets discuss your specific goals and how financial planning can benefit you.",
        "Customer: Im concerned about the fees involved. Are they worth it?",
        "Salesman: I completely understand your concern. Financial planning is an investment in your future, and the fees are based on the value and expertise we provide. By working with us, you gain access to personalized strategies, professional advice, and ongoing support. Our goal is to help you make informed financial decisions and potentially save you money in the long run. I can provide you with a breakdown of our fees and the value you can expect in return.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in investing in the stock market. Can you help me?",
        "Salesman: Of course, Id be happy to assist you. Tell me more about your investment goals and what youre looking to achieve.",
        "Customer: Ive been researching different banks for a mortgage. Why should I choose your bank?",
        "Salesman: Great question. Lets discuss your specific needs and preferences, and I can explain how our bank can provide you with the best mortgage options.",
        "Customer: Im considering switching insurance providers. What makes your company stand out?",
        "Salesman: Thank you for considering us. Lets talk about your insurance requirements and I can highlight the unique benefits and comprehensive coverage options we offer.",
        "Customer: Ive been approached by several financial advisors. Why should I choose you to manage my investments?",
        "Salesman: I understand your dilemma. Lets explore your investment objectives and I can demonstrate the personalized approach and track record of success our firm has in helping clients achieve their financial goals.",
        "Customer: Im hesitant about investing in cryptocurrencies. Can you convince me why its a good idea?",
        "Salesman: Absolutely. Lets have a discussion about the potential benefits and risks of cryptocurrencies, and I can provide you with insights and strategies to navigate this exciting investment opportunity.",
        "Customer: Im in the market for a new car. Can you help me find the best financing option?",
        "Salesman: Certainly. Lets consider your budget, credit history, and preferences, and I can guide you through the various financing options available to help you make an informed decision.",
        "Customer: Im interested in starting a small business. How can your bank support me?",
        "Salesman: Thats great to hear. Lets discuss your business plan and financial needs, and I can explain how our bank can provide you with tailored solutions, such as business loans and merchant services, to support your entrepreneurial journey.",
        "Customer: Ive had a bad experience with financial advisors in the past. How can you assure me that youre different?",
        "Salesman: I understand your concerns. Lets address the issues you faced previously and I can share how our team of experienced advisors prioritizes transparency, personalized service, and a client-centric approach to ensure your satisfaction and financial well-being.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. What specific requirements do you have in mind?",
        "Customer: Ive had some bad experiences with previous tech purchases. How can I be sure that your product is reliable?",
        "Salesman: I understand your concern. Our company has a strong reputation for quality and reliability. We also offer a warranty to ensure customer satisfaction. Is there anything specific youd like to know about our product?",
        "Customer: Im not sure if this software will meet my business needs. Can you provide more information?",
        "Salesman: Certainly! Could you tell me more about your business requirements? I can then explain how our software can address those needs.",
        "Customer: Im on a tight budget. Can you offer any discounts or special promotions?",
        "Salesman: I completely understand your situation. Let me check if there are any ongoing discounts or promotions that you may qualify for. Can you please provide me with your budget range?",
        "Customer: Im concerned about the customer support after the purchase. How reliable is your support team?",
        "Salesman: We take customer support very seriously. Our support team is highly trained and available to assist you with any issues or questions you may have. We also have a dedicated hotline and email support for prompt assistance. Is there anything specific youd like to know about our support services?",
        "Customer: Im considering buying this product, but Im not sure if it will integrate well with my existing setup. Can you help me with that?",
        "Salesman: Absolutely! If you can provide me with details about your existing setup, I can check compatibility and provide guidance on the integration process. Could you please share some information about your current setup?",
        "Customer: Ive heard mixed reviews about your company. Can you tell me why I should choose your product over your competitors?",
        "Salesman: Thank you for bringing that up. While every company may have mixed reviews, we pride ourselves on our products unique features, superior quality, and excellent customer support. We also offer a satisfaction guarantee to ensure your peace of mind. Is there anything specific youd like to know about our product in comparison to our competitors?",
        "Customer: Im not ready to make a purchase decision yet. Can you keep me updated on any future updates or releases?",
        "Salesman: Certainly! We have a mailing list where we share updates, new releases, and special offers. I can add you to the list so that you stay informed. Can I have your email address?",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a health insurance plan. Can you tell me more about your options?",
        "Salesman: Of course! Id be happy to help. Lets start by getting to know each other a bit. May I ask what specifically youre looking for in a health insurance plan?",
        "Customer: Ive been experiencing some health issues lately, and I want a plan that covers all the necessary medical treatments and surgeries.",
        "Salesman: I understand how important it is to have comprehensive coverage for your health needs. By building rapport, I can better understand your specific requirements and find the best plan for you. Can you please share more about the health issues youve been facing?",
        "Customer: I appreciate your willingness to listen. Ive been diagnosed with a chronic condition that requires regular doctor visits and occasional surgeries. I want a plan that can support me in managing my condition effectively.",
        "Salesman: Thank you for sharing that. Its important for me to understand your needs fully. By actively listening and showing empathy, I can guide you towards the health insurance plan that will provide the necessary support for your condition. Lets explore the options together.",
        "Customer: Ive contacted a few other insurance providers, but I havent been able to find a plan that meets all my requirements. What makes your company different?",
        "Salesman: I completely understand your concerns and the difficulty in finding the right plan. What sets us apart is our commitment to building strong relationships with our customers. We prioritize understanding your unique needs and tailoring our offerings to provide the best solution for you. By building rapport, we aim to create a personalized experience that stands out from our competitors.",
        "Customer: That sounds promising. Can you give me an example of how youve helped a customer with a similar health condition in the past?",
        "Salesman: Certainly! We recently worked with a customer who had a similar chronic condition as yours. By building rapport and understanding their challenges, we were able to recommend a comprehensive health insurance plan that covered their regular doctor visits, surgeries, and medication expenses. Theyve been extremely satisfied with the support they received and have seen a significant improvement in managing their condition.",
        "Customer: I appreciate your insights. How can I stay connected with your company for future updates and information?",
        "Salesman: Im glad you found our conversation helpful. To stay connected, we have a newsletter where we provide relevant and valuable information about health insurance, tips for managing chronic conditions, and updates on any new plans or offers. Would you be interested in subscribing to our newsletter?",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your financial planning services.",
        "Salesman: Great to hear! Im here to assist you. Tell me a bit about your financial goals and what youre looking for.",
        "Customer: Im not sure if investing in the stock market is the right choice for me.",
        "Salesman: I understand your concern. Investing can seem daunting, but with the right guidance, it can be a great opportunity. Lets discuss your risk tolerance and explore options that align with your goals.",
        "Customer: Ive had bad experiences with financial advisors in the past.",
        "Salesman: Im sorry to hear that. Building trust is essential to me. I assure you that I will prioritize your best interests and work together with you every step of the way.",
        "Customer: Im not sure if I have enough savings to start investing.",
        "Salesman: Its important to evaluate your current financial situation. Lets go over your expenses and income to determine a suitable investment plan that aligns with your budget.",
        "Customer: Ive heard mixed reviews about your companys services.",
        "Salesman: Thank you for sharing your concerns. I understand the importance of reputation. Let me provide you with testimonials and success stories from satisfied clients to address any doubts you may have.",
        "Customer: What sets your financial planning services apart from other firms?",
        "Salesman: I appreciate your interest. Our personalized approach, in-depth market research, and commitment to understanding your unique needs make us stand out. Let me explain how we can tailor our services to you.",
        "Customer: Im looking for a long-term partnership with a trusted advisor.",
        "Salesman: Thats wonderful to hear! Building strong and lasting relationships is at the core of our philosophy. Lets discuss how we can work together to achieve your financial goals.",
        "Customer: Im unsure if now is the right time to start planning for retirement.",
        "Salesman: I understand your hesitation. Its never too early to start planning for retirement. Lets review the potential benefits and strategies that can help you secure a comfortable future.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new smartphone.",
        "Salesman: Great! Id be happy to assist you. May I ask what features you are looking for in a smartphone?",
        "Customer: I need a smartphone with a good camera and long battery life.",
        "Salesman: Understood. Those are important factors to consider. Our latest model has a high-quality camera and an extended battery life. Would you like me to provide more information about it?",
        "Customer: Yes, please. I also want a smartphone that is durable and has a sleek design.",
        "Salesman: Absolutely. Our smartphones are built with durability in mind, and they have a sleek and modern design that youll love. Let me show you some images and customer reviews.",
        "Customer: That looks impressive. But Im concerned about the price. Can you offer any discounts?",
        "Salesman: I completely understand your concern. As a valued customer, I can offer you a special discount and some additional accessories free of charge. This way, youll get the best value for your money.",
        "Customer: That sounds great! Can I try the smartphone before making a decision?",
        "Salesman: Of course! We have a demo unit available at our store. You can test all the features, explore the interface, and experience the overall performance. Would you like to schedule a visit?",
        "Customer: Yes, that would be helpful. I appreciate your assistance.",
        "Salesman: Youre welcome! Im here to help you make an informed decision. Lets find a convenient time for you to visit our store. Is there anything else I can assist you with?",
        "Customer: Not at the moment. Thank you for your help.",
        "Salesman: Youre welcome! If you have any further questions or need any additional information, feel free to reach out to me anytime. Have a great day!",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplements. Can you tell me more about them?",
        "Salesman: Of course! Our health supplements are carefully formulated to meet the specific needs of our customers. What specific health goals are you looking to achieve?",
        "Customer: Ive been experiencing low energy levels lately. Do you have any products that can help with that?",
        "Salesman: Absolutely! We have a range of supplements that are designed to boost energy levels and improve overall vitality. Would you like me to recommend some options for you?",
        "Customer: Im concerned about my immune system. Are there any supplements that can help strengthen it?",
        "Salesman: Definitely! We have a variety of immune-boosting supplements that can support and enhance your immune system. Let me provide you with some information on our top-selling products in that category.",
        "Customer: Ive heard a lot about the benefits of antioxidants. Can you explain how your products incorporate antioxidants?",
        "Salesman: Certainly! Antioxidants play a crucial role in neutralizing harmful free radicals in the body. Our supplements are enriched with powerful antioxidants that can help protect your cells and promote overall health. Let me give you more details on our antioxidant-rich products.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Im interested in purchasing a new laptop, but Im not sure which one is the best for me.",
        "Salesman: I completely understand your dilemma. Choosing the right laptop can be overwhelming. Can you tell me a bit more about your specific needs and preferences?",
        "Customer: Ive had some bad experiences with previous tech purchases, so Im a bit hesitant.",
        "Salesman: I can empathize with your concerns. Its important to find a product that meets your expectations and gives you peace of mind. Im here to help you make an informed decision.",
        "Customer: Im looking for a smartphone with a good camera. Any recommendations?",
        "Salesman: Absolutely! Camera quality is a crucial factor for many customers. Could you tell me more about your photography needs and what specific features you prioritize in a smartphone camera?",
        "Customer: Ive been doing some research online, but Im still unsure about the best software for my business.",
        "Salesman: I understand that researching software options can be overwhelming. Could you provide more details about your business requirements? This will help me suggest the most suitable software solutions for you.",
        "Customer: Ive had some negative experiences with customer support in the past. How can I be sure that your company provides excellent service?",
        "Salesman: I completely understand your concern. Customer support is crucial, and we prioritize providing exceptional service. Allow me to share some testimonials from our satisfied customers, which highlight our commitment to excellent support.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi there! Im in the market for a new laptop, but Im not sure which one to choose.",
        "Salesman: I understand how overwhelming it can be to choose the right laptop. Dont worry, Im here to help! Tell me more about your needs and preferences, and together we can find the perfect fit for you.",
        "Customer: Ive had a bad experience with a previous tech company, so Im a bit skeptical about making another purchase.",
        "Salesman: I completely understand your concerns. Building trust is important to us, and we strive to provide a positive experience for all our customers. What specifically went wrong with your previous purchase? I want to ensure we address any issues and make sure you have a smooth and enjoyable experience with us.",
        "Customer: Im on a tight budget and Im not sure if I can afford a high-end smartphone.",
        "Salesman: I hear you. Budget is an important consideration when making a purchase. Rest assured, we have a range of options to fit different budgets. By understanding your requirements, we can find a smartphone that meets your needs while staying within your budget. Lets explore some affordable and value-for-money options together.",
        "Customer: Ive been researching different brands and their laptops, but I cant seem to decide which one is the best.",
        "Salesman: I totally get it. The variety of options available in the market can be overwhelming. Lets narrow down the choices by discussing your specific requirements and priorities. By understanding your needs, we can identify the key features youre looking for and find the best laptop that ticks all the boxes for you.",
        "Customer: Ive had some bad experiences with customer service in the past. Can you assure me that your company values customer satisfaction?",
        "Salesman: I completely understand your concerns. Customer satisfaction is our top priority, and we pride ourselves on providing excellent service. We have a dedicated customer support team that is always available to address any issues or concerns you may have. We value your feedback and strive to ensure that you have a positive experience throughout your journey with us.",
        "Customer: Im looking for a smartphone that has a great camera. Photography is my passion.",
        "Salesman: Thats wonderful to hear! We have some fantastic smartphones with advanced camera technology that will definitely suit your passion for photography. Lets discuss your specific requirements and explore the options together. Im confident we can find the perfect smartphone that captures stunning photos and enhances your photography experience.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your financial planning services.",
        "Salesman: Great! Im glad youre considering our services. How can I assist you?",
        "Customer: Ive been struggling with managing my finances. Can you help me with that?",
        "Salesman: Absolutely! We specialize in providing personalized financial solutions. Lets discuss your goals and challenges in more detail.",
        "Customer: Ive had bad experiences with financial advisors in the past. How do I know I can trust you?",
        "Salesman: I understand your concern. Trust is vital in our industry. Let me assure you that we prioritize building strong relationships with our clients. Well work together to earn your trust.",
        "Customer: Im not sure if I really need financial planning. Can you explain its benefits?",
        "Salesman: Of course! Financial planning helps you achieve your long-term goals, manage your investments, and safeguard your financial future. Lets delve into your specific needs to illustrate the value of our services.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplement. Can you tell me more about it?",
        "Salesman: Of course! Our health supplement is specially formulated to support overall well-being. It contains essential vitamins and minerals that promote a healthy immune system and improve energy levels. Would you like to know more about its specific benefits?",
        "Customer: Ive been experiencing some digestive issues lately. Do you have any products that can help?",
        "Salesman: Absolutely! We have a range of digestive health products that can address your concerns. Our probiotics are known to restore the balance of good bacteria in the gut, promoting better digestion and alleviating discomfort. Would you like me to provide more information on our probiotic options?",
        "Customer: Ive been trying different weight loss methods, but nothing seems to work. Can you recommend something effective?",
        "Salesman: I understand your frustration. We have a weight loss program that combines a healthy diet plan and exercise regimen with our specially formulated weight loss supplements. Our supplements are designed to boost metabolism and control appetite, aiding in successful weight management. Would you be interested in learning more about our weight loss program?",
        "Customer: Im concerned about my joint health as I age. Do you have any products for that?",
        "Salesman: Absolutely! We have a range of joint health supplements that are specifically formulated to support joint mobility and reduce inflammation. Our products contain key ingredients like glucosamine and chondroitin, known to promote healthy joints. Would you like more information on our joint health supplements?",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health coaching services.",
        "Salesman: Great! Im glad you reached out. Tell me a bit about yourself and what youre looking to achieve.",
        "Customer: Ive been struggling with maintaining a healthy diet and exercise routine. I need guidance and support to stay on track.",
        "Salesman: I understand how challenging it can be. Building a healthy lifestyle is a journey, and having a support system in place can make a big difference. Im here to help you every step of the way.",
        "Customer: Ive tried different programs before, but I always lose motivation after a while. How can you help me stay motivated?",
        "Salesman: Motivation is essential, and I completely understand your concern. One way I can support you is by providing personalized strategies to keep you motivated and accountable. Well work together to set achievable goals and celebrate your progress along the way.",
        "Customer: Im also worried about my busy schedule. Will your program be flexible enough to fit into my lifestyle?",
        "Salesman: Absolutely! I believe in tailoring our program to fit your unique needs and schedule. Well work together to create a plan that is realistic and manageable for you. Your success is my priority, and I want to ensure that our program aligns with your lifestyle.",
        "Customer: Ive had negative experiences with health coaches in the past. How can I trust that your approach will be different?",
        "Salesman: I completely understand your concern, and I want you to feel confident in choosing our services. I pride myself on providing a supportive and personalized approach. To build trust, I offer a free consultation where we can discuss your goals, challenges, and how my approach can benefit you. This gives you an opportunity to see if were the right fit before making any commitments.",
        "Customer: Im excited to start this journey with you. What are the next steps?",
        "Salesman: Im thrilled to have you on board! The next step would be to schedule a consultation where we can dive deeper into your goals and expectations. From there, we can create a customized plan that will set you up for success. Im looking forward to helping you achieve your health and wellness goals!",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health products. Can you tell me more about them?",
        "Salesman: Of course! Our health products are designed to improve overall well-being and address specific health concerns. What specific areas are you looking to improve?",
        "Customer: Ive been experiencing joint pain lately. Do you have any products that can help with that?",
        "Salesman: Absolutely! We have a range of supplements that are known to support joint health and reduce inflammation. I can provide you with more information on how they work and their benefits.",
        "Customer: Ive tried a few different products before, but none of them seemed to work. How can I be sure yours will be effective?",
        "Salesman: I completely understand your concern. We pride ourselves on the effectiveness of our products, and many of our customers have reported positive results. Let me share some testimonials and scientific studies that back up the efficacy of our products.",
        "Customer: Im not sure if I can trust this product. How do I know its safe?",
        "Salesman: Safety is our top priority. All our products go through rigorous testing and meet the highest quality standards. We ensure that they are free from any harmful substances and are safe for consumption. I can provide you with detailed information on our quality assurance processes.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplements. Can you tell me more about them?",
        "Salesman: Of course! Our health supplements are designed to support overall well-being and address specific health concerns. What specific concerns do you have?",
        "Customer: Ive been experiencing joint pain lately. Do you have any supplements that can help with that?",
        "Salesman: Absolutely! We have a joint support formula that is specifically formulated to reduce joint pain and improve mobility. Its been highly effective for many of our customers. Would you like me to provide more information?",
        "Customer: Im looking for a weight loss solution. What do you recommend?",
        "Salesman: We have a range of weight loss supplements that can assist you in reaching your goals. Our products are designed to boost metabolism, suppress appetite, and increase energy levels. Are you looking for something specific?",
        "Customer: Im concerned about my immune system. What can you recommend to strengthen it?",
        "Salesman: We have a variety of immune support supplements that are packed with essential vitamins and minerals to strengthen your immune system. They can help boost your bodys natural defenses against infections. Would you like to know more about them?",
        "Customer: Im interested in improving my sleep quality. Do you have any products for that?",
        "Salesman: Certainly! We have a sleep aid supplement that promotes relaxation and helps you achieve a restful sleep. It contains natural ingredients that support healthy sleep patterns. Would you like me to provide more details?",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplements. Can you tell me more about them?",
        "Salesman: Of course! Our health supplements are carefully formulated to support various aspects of your well-being. May I ask what specific health concerns or goals you have in mind?",
        "Customer: Ive been experiencing low energy levels lately. Do you have any products that can help with that?",
        "Salesman: Absolutely! We have a range of energy-boosting supplements that can provide you with the support you need. Would you like me to recommend some options for you?",
        "Customer: Im looking for a natural solution to manage my stress. Can your products help with that?",
        "Salesman: Definitely! We have stress-relief supplements that are formulated with natural ingredients known for their calming effects. They can help promote relaxation and reduce stress levels. Would you like more information about them?",
        "Customer: Im concerned about my joint health. Are there any supplements you would recommend for that?",
        "Salesman: Absolutely! We have joint support supplements that are designed to promote joint health and mobility. They contain ingredients known for their anti-inflammatory properties and can help alleviate discomfort. Shall I provide you with more details?",
        "Customer: Im looking to improve my overall immune system. What products do you have for that?",
        "Salesman: Great! We have immune-boosting supplements that are formulated with powerful antioxidants and immune-supportive ingredients. They can help strengthen your immune system and support your overall wellness. Would you like me to suggest some options?",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop.",
        "Salesman: Great! Id be happy to help. May I ask what youll be using the laptop for?",
        "Customer: I need it for graphic design and video editing.",
        "Salesman: Thats fantastic! Those are demanding tasks that require a powerful machine. Would you like a laptop with a dedicated graphics card?",
        "Customer: Yes, definitely. I want to ensure smooth performance.",
        "Salesman: Understandable. We have some excellent options with high-end graphics cards that will meet your needs. May I ask if you have any specific preferences in terms of brand or budget?",
        "Customer: I dont have a specific brand in mind, but Im willing to invest in a quality laptop that will last me a long time.",
        "Salesman: Thats a wise decision. Investing in a reliable laptop is important for your work. We have some top-of-the-line models that offer excellent durability and performance. Let me show you a few options.",
        "Customer: I appreciate that. Can you also recommend any additional accessories I may need for graphic design?",
        "Salesman: Of course! For graphic design, having a high-resolution external monitor and a graphics tablet can greatly enhance your workflow. I can provide you with some recommendations.",
        "Customer: That would be great. Im really looking for a comprehensive setup.",
        "Salesman: Not a problem. Ill make sure to provide you with everything you need to create an optimal work environment. Lets discuss the options in detail.",
        "Customer: Thank you for your help. I feel confident that Im making the right choice.",
        "Salesman: Youre welcome! Its my pleasure to assist you. Im confident that the products Ive recommended will meet your requirements and exceed your expectations. If you have any more questions, feel free to ask.",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your tech product. Can you tell me more about it?",
        "Salesman: Certainly! Thank you for your interest. Our tech product is designed to simplify daily tasks and improve productivity. It has a user-friendly interface and offers various features that can greatly benefit you. How can I assist you further?",
        "Customer: Im concerned about the cost. Is it worth the investment?",
        "Salesman: I understand your concern. Our tech product may seem like an investment at first, but it provides excellent value for its capabilities. It streamlines processes, saving time and resources in the long run. Additionally, we offer a flexible payment plan to make it more affordable for you. Let me provide you with more details.",
        "Customer: Ive had bad experiences with similar products in the past. How can I be sure this will be different?",
        "Salesman: I completely understand your previous experiences may have left you hesitant. However, we pride ourselves on exceptional customer satisfaction. Our tech product has been carefully developed, taking into account customer feedback and ensuring a seamless user experience. We also offer a satisfaction guarantee, allowing you to try it risk-free. Let me share some success stories from our satisfied customers.",
        "Customer: Im not sure if this tech product is the right fit for my specific needs.",
        "Salesman: I appreciate your concern. Understanding your needs is crucial to finding the right solution. Lets discuss your specific requirements in detail, and Ill provide you with personalized insights on how our tech product can address them. We can also explore any customization options if needed.",
        "Customer: Ive been considering other options as well. What makes your tech product stand out?",
        "Salesman: Thats a great question. We know there are various options out there, but what sets us apart is our commitment to customer satisfaction. Our tech product not only offers advanced features but also focuses on providing a seamless user experience and excellent support. We have a dedicated team ready to assist you throughout your journey with our product. Let me share some testimonials from our satisfied customers who chose us over competitors.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your tech product. Can you tell me more about it?",
        "Salesman: Of course! Id be happy to provide more information. May I ask what specifically caught your interest?",
        "Customer: Im not sure if your product is the right fit for my needs. Ive had bad experiences before.",
        "Salesman: I understand your concern. Building rapport is important to me, so lets address your previous experiences and find a solution that meets your needs.",
        "Customer: Im considering other options as well. Why should I choose your product?",
        "Salesman: Great question! Building rapport with our customers is a priority, and we pride ourselves on understanding their unique requirements. Let me explain how our product stands out from the competition and why it would be a great fit for you.",
        "Customer: Ive had some challenges with similar products in the past. How will your product address those concerns?",
        "Salesman: Thank you for sharing your concerns. Building rapport is important to me, and I want to ensure our product meets your expectations. Lets discuss your past challenges in detail, and Ill explain how our product addresses them to provide a better experience.",
        "Customer: Im not sure if I can trust your company. How do I know you genuinely care about my success?",
        "Salesman: I completely understand the importance of trust. Building rapport with our customers is a core value for us. Lets delve into your concerns, and Ill demonstrate how we prioritize your success and go above and beyond to support you.",
        "Customer: Ive had a negative experience with a salesperson before. How can I be sure youre different?",
        "Salesman: Im sorry to hear about your past experience. Building rapport is crucial to me, and I want to show you how we approach sales differently. Lets address your concerns, and Ill make sure you have a positive and personalized experience with us.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health products. Can you tell me more about them?",
        "Salesman: Of course! Our products are designed to promote overall health and well-being. They are made with natural ingredients and have been proven to be effective. How can I assist you further?",
        "Customer: Ive been experiencing some health issues lately. Do you have anything that can help?",
        "Salesman: Im sorry to hear that. We have a range of products that target specific health concerns. If you tell me more about your symptoms, I can recommend something suitable for you.",
        "Customer: Ive tried different health products in the past, but none of them worked for me. Why should I trust your products?",
        "Salesman: I understand your skepticism. Our products are backed by extensive research and have received positive feedback from many satisfied customers. We also offer a satisfaction guarantee, so if youre not happy with the results, you can get a refund. We genuinely want to help you improve your health.",
        "Customer: Im not sure if I can afford your health products. Are they expensive?",
        "Salesman: Our prices are competitive compared to similar products on the market. We also offer flexible payment options and occasional discounts to make our products more accessible. We prioritize your health and strive to provide value for your investment.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health insurance plans. Can you provide me with some information?",
        "Salesman: Of course! Id be happy to help. Lets start by getting to know each other a little. What are your specific needs and concerns when it comes to health insurance?",
        "Customer: Ive been dealing with a chronic condition, and I need a health insurance plan that covers the necessary treatments and medications. I also want to make sure the plan is affordable.",
        "Salesman: Thank you for sharing that with me. I understand how important it is for you to have comprehensive coverage and affordable options. Rest assured, Im here to find the best plan that meets your needs and fits your budget.",
        "Customer: Ive had bad experiences with insurance companies in the past. Im skeptical about the whole process.",
        "Salesman: I completely understand your concerns. Building trust is a top priority for me, and I aim to provide you with a positive experience. Lets address any doubts or questions you may have, and Ill do my best to earn your trust throughout this process.",
        "Customer: Im not sure if I really need health insurance. Can you convince me why its important?",
        "Salesman: Absolutely! Health insurance is crucial because it provides financial protection in case of unexpected medical expenses. It ensures that you have access to quality healthcare without having to worry about exorbitant costs. I can explain in more detail and provide examples if youd like.",
        "Customer: Ive heard a lot of negative things about health insurance companies. How can I be sure I wont face any issues?",
        "Salesman: I understand your concerns, as the reputation of insurance companies can vary. However, I assure you that we prioritize customer satisfaction and have a track record of providing excellent service. Ill be happy to share testimonials and reviews from our satisfied customers to put your mind at ease.",
        "Customer: Im not comfortable sharing personal health information. How can I trust you with that?",
        "Salesman: I completely respect your privacy. Rest assured that any personal health information you provide will be treated with the utmost confidentiality and will only be used to find the most suitable health insurance options for you. Your trust is important to me.",
        "Customer: Ive been considering other health insurance providers. What sets you apart from the competition?",
        "Salesman: Great question! What sets us apart is our commitment to building strong relationships with our customers. We not only offer comprehensive health insurance plans but also provide personalized assistance and support throughout your journey. Our goal is to make you feel understood, valued, and confident in your decision.",
        "Customer: Ive had a bad experience with a previous health insurance provider. How can you ensure that wont happen again?",
        "Salesman: Im sorry to hear about your past experience. I assure you that we prioritize customer satisfaction and have measures in place to address any issues promptly. Our dedicated customer support team is available to assist you at any time, ensuring a smooth and hassle-free experience. Your satisfaction is our top priority.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your financial planning services.",
        "Salesman: Great! Id be happy to help. Can you tell me a bit more about your financial goals and concerns?",
        "Customer: Im looking to invest in the stock market, but Im not sure where to start.",
        "Salesman: I understand. Investing can be overwhelming, especially if youre new to it. Let me guide you through the process and help you make informed decisions.",
        "Customer: Ive had some bad experiences with financial advisors in the past. How can I trust you?",
        "Salesman: I completely understand your concerns. Building trust is important to me too. Let me share some success stories from satisfied clients to help you feel more confident in my services.",
        "Customer: Im worried about losing money if I invest. How can you address this concern?",
        "Salesman: Your concern is valid, and risk management is a crucial part of investing. Lets discuss your risk tolerance and explore investment options that align with your comfort level.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you help me find the right one?",
        "Salesman: Of course! Id be happy to assist you. Tell me more about your requirements and what youre looking for in a laptop.",
        "Customer: Ive been having trouble with my current smartphone. It keeps freezing and the battery life is terrible. Im considering switching to a different brand. What do you recommend?",
        "Salesman: I understand your frustration. It can be really frustrating when technology doesnt work as expected. Lets explore some alternative smartphone options that can better meet your needs and provide a smoother experience.",
        "Customer: Ive heard mixed reviews about this new software. Im not sure if its worth the investment. Can you help me understand its benefits and if its the right fit for my business?",
        "Salesman: Absolutely! Its important to make informed decisions when it comes to software investments. Lets discuss your business requirements and how this software can address them. Together, we can evaluate its benefits and determine if it aligns with your goals.",
        "Customer: Im looking for a reliable web hosting service for my e-commerce website. There are so many options out there, and Im not sure which one to choose. Can you give me some guidance?",
        "Salesman: I completely understand. Choosing the right web hosting service is crucial for the success of your online business. Lets discuss your websites needs and explore different hosting options that offer reliability, security, and scalability.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplement. Can you tell me more about it?",
        "Salesman: Of course! Our health supplement is designed to support overall well-being and boost immune function. Its made with natural ingredients and has been highly recommended by our satisfied customers.",
        "Customer: Ive tried a few different products before, but they didnt work for me. How can I be sure this one will?",
        "Salesman: I understand your concern. Many of our customers have had similar experiences before finding our product. What sets us apart is our commitment to quality and customer satisfaction. We offer a money-back guarantee if youre not completely satisfied with the results.",
        "Customer: Im worried about potential side effects. Are there any known side effects with this supplement?",
        "Salesman: Thats a valid concern. Our supplement is made with all-natural ingredients and has been thoroughly tested for safety. We have not received any reports of significant side effects. However, its always a good idea to consult with your healthcare professional before starting any new dietary supplement.",
        "Customer: Im not sure if I really need a health supplement. Can you explain how it can benefit me?",
        "Salesman: Absolutely! Our health supplement is formulated to provide essential nutrients that may be lacking in your diet. It can help support your immune system, increase energy levels, and promote overall wellness. Many customers have reported feeling more vibrant and experiencing improved well-being after incorporating our supplement into their daily routine.",
        "Customer: Ive heard mixed reviews about this product. How can I trust that it will work for me?",
        "Salesman: I understand your concern. Its important to remember that everyones body is unique, and results may vary. However, we have a high customer satisfaction rate and many positive testimonials from individuals who have benefited from our product. To give you peace of mind, we offer a money-back guarantee if youre not completely satisfied with your purchase.",
        "Customer: Is this supplement suitable for vegetarians?",
        "Salesman: Absolutely! Our supplement is made with vegetarian-friendly ingredients. It does not contain any animal-derived components, making it suitable for individuals following a vegetarian lifestyle.",
        "Customer: Im interested in trying your health supplement, but Im on medication. Will it interact with my current medications?",
        "Salesman: Its always important to consider potential interactions with medications. While our supplement is generally safe, I recommend consulting with your healthcare professional to ensure it does not interfere with your current medications. They will be able to provide personalized guidance based on your specific situation.",
        "Customer: Im concerned about the taste of the supplement. Does it have a strong flavor?",
        "Salesman: Our supplement has a mild and pleasant taste. Weve carefully selected the ingredients to ensure a palatable experience. Many customers have actually complimented the taste, making it easier to incorporate into their daily routine.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplements. Can you tell me more about them?",
        "Salesman: Of course! Our health supplements are carefully formulated to support various aspects of health. What specific concerns do you have?",
        "Customer: Ive been struggling with low energy levels lately. Do you have any products that can help with that?",
        "Salesman: Absolutely! We have a range of energy-boosting supplements that can help improve your energy levels naturally. Let me tell you more about them.",
        "Customer: Im looking for a solution to manage my stress levels. Can you recommend something?",
        "Salesman: Definitely! We have stress-relief supplements that are designed to promote relaxation and reduce anxiety. Let me provide you with more information.",
        "Customer: Ive heard about the benefits of antioxidants for overall health. Do you have any antioxidant supplements?",
        "Salesman: Absolutely! Our antioxidant supplements are formulated to provide powerful protection against free radicals and support your overall health. Let me explain how they work.",
        "Customer: Im interested in improving my immune system. What do you have for that?",
        "Salesman: Great! We have immune-boosting supplements that are packed with essential vitamins and minerals to support a strong immune system. Let me share the details with you.",
        "Customer: Im looking for natural remedies for better sleep. Can you help?",
        "Salesman: Certainly! We have sleep support supplements that contain natural ingredients to promote restful sleep and help you wake up refreshed. Let me provide you with more information.",
        "Customer: Im concerned about joint health. Do you have any supplements for that?",
        "Salesman: Absolutely! Our joint support supplements are designed to promote joint flexibility and support overall joint health. Let me explain how they can benefit you.",
        "Customer: Im interested in weight management. What options do you have?",
        "Salesman: We have a range of weight management supplements that can support your journey towards a healthier weight. Let me tell you more about them and how they can help you reach your goals.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in investing in the stock market. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. Tell me, what are your investment goals and risk tolerance?",
        "Customer: Ive heard about your financial advisory services. Are you trustworthy?",
        "Salesman: Absolutely. We have a proven track record of providing reliable financial advice and helping our clients achieve their goals. Here are some testimonials from satisfied customers.",
        "Customer: Im not sure if I can afford your services. Can you explain the costs involved?",
        "Salesman: Certainly. Our fees are based on a percentage of your invested assets, and we offer various pricing options to accommodate different budgets. Lets discuss your financial situation further to find the best plan for you.",
        "Customer: Ive had bad experiences with financial advisors in the past. How can I trust you?",
        "Salesman: I understand your concern. Trust is crucial in our industry, and we prioritize building strong relationships with our clients. Lets schedule a meeting where I can listen to your past experiences and address any doubts or questions you may have.",
        "Customer: Im hesitant to invest because Im worried about market volatility. How can you help me navigate that?",
        "Salesman: Market volatility is a valid concern, and we have strategies in place to minimize potential risks. Our experienced team closely monitors the market and develops personalized investment plans tailored to your risk tolerance. Lets discuss your options and create a plan that gives you peace of mind.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health products. Can you tell me more about them?",
        "Salesman: Of course! Our health products are designed to improve overall well-being and address specific health concerns. What are your specific needs or concerns?",
        "Customer: Ive been experiencing digestive issues lately. Do you have any products that can help?",
        "Salesman: Absolutely! We have a range of digestive health products that can help alleviate your symptoms and support a healthy digestive system. Let me provide you with more information.",
        "Customer: Ive tried various products for my joint pain, but nothing has worked so far. Can you suggest something?",
        "Salesman: I understand your frustration. We have a line of joint health products that have shown great results for many customers. Let me share some testimonials and information about our products with you.",
        "Customer: Im concerned about my energy levels. Are there any products that can boost my energy naturally?",
        "Salesman: Absolutely! We have natural energy-boosting supplements that can help improve your energy levels without any harmful side effects. Lets discuss your lifestyle and specific needs to find the most suitable product for you.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing your tech product. Can you tell me more about it?",
        "Salesman: Of course! Id be happy to provide you with all the information you need. But first, may I ask what specific features youre looking for in a tech product?",
        "Customer: Im concerned about the durability of your product. How long does it usually last?",
        "Salesman: Thats a great question. Our tech product is designed with high-quality materials and undergoes rigorous testing for durability. It typically lasts for several years, but we also offer a warranty to ensure customer satisfaction. Is there anything else youd like to know about its durability?",
        "Customer: Ive been researching different tech products, and Im having trouble deciding. Can you help me make the right choice?",
        "Salesman: Absolutely! I understand that choosing the right tech product can be overwhelming. Could you share your specific requirements and preferences? This will allow me to provide you with personalized recommendations and help you make an informed decision.",
        "Customer: Ive heard mixed reviews about your product. How can I be sure its the right choice for me?",
        "Salesman: I appreciate your concern. While every customers experience may vary, I can assure you that we strive for customer satisfaction. Our product goes through extensive quality control measures, and we also offer a return policy if youre not completely satisfied. Additionally, Id be happy to connect you with some of our satisfied customers who can share their positive experiences.",
        "Customer: Im looking for a tech product that suits my budget. Can you offer any discounts or promotions?",
        "Salesman: Certainly! We understand the importance of budget considerations. Currently, we have a special promotion running that offers a discount on our tech product. Let me provide you with the details and see how we can accommodate your budget.",
        "Customer: Ive had a negative experience with a similar tech product in the past. How can I be sure I wont face the same issues with yours?",
        "Salesman: Im sorry to hear about your previous experience. We value customer feedback and continuously strive to improve our products. Our tech product has undergone enhancements and addresses common issues faced by customers in the past. Additionally, we have a dedicated customer support team that is readily available to assist you if any concerns arise.",
        "Customer: Im not sure if this tech product is suitable for my specific needs. Can you provide more information about its capabilities?",
        "Salesman: Certainly! Understanding your needs is crucial in determining if our tech product is the right fit for you. Could you please share the specific requirements or tasks you need the product to fulfill? This will help me provide you with detailed information on its capabilities and whether it aligns with your needs.",
        "Customer: Im hesitant to make a purchase without trying the product first. Do you offer any trial periods or demos?",
        "Salesman: We understand the importance of trying out a tech product before making a commitment. We offer a trial period where you can test the product and assess its suitability for your needs. Additionally, we also provide live demos where you can experience the products features firsthand. Lets discuss the details and find the best way for you to try out the product.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your financial planning services. Can you tell me more about what you offer?",
        "Salesman: Of course! Our financial planning services are designed to help clients achieve their financial goals. We offer personalized plans tailored to each individuals needs and objectives.",
        "Customer: Ive had a bad experience with financial advisors in the past. How can I trust that youll provide the right guidance for me?",
        "Salesman: I understand your concern. Building trust is essential in our industry, and we prioritize establishing a strong rapport with our clients. We take the time to listen to your needs, understand your goals, and develop a plan that aligns with your best interests.",
        "Customer: I have specific financial challenges that I need assistance with. Can you help me with those?",
        "Salesman: Absolutely. We believe in a personalized approach, and we are here to address your unique challenges. By building rapport and actively listening to your concerns, we can tailor our services to meet your specific needs.",
        "Customer: There are so many financial advisors out there. What sets you apart from your competitors?",
        "Salesman: Great question. Building rapport is one of the things that sets us apart. We focus on establishing a strong connection with our clients, understanding their needs, and providing personalized solutions. Our goal is to create a memorable experience that differentiates us from other advisors and builds long-lasting relationships.",
        "Customer: How do you ensure that the rapport-building process continues even after the initial sale?",
        "Salesman: Maintaining the relationship is crucial to us. We stay in touch with our clients, provide regular updates and valuable information, and show continued interest in their financial journey. By nurturing the relationship, we aim to generate repeat business and foster long-term customer loyalty.",
        "Customer: Ive heard that financial advisors can be pushy. How do you strike a balance between building rapport and making a sale?",
        "Salesman: We understand the importance of trust and respect in this industry. While our goal is to help you achieve your financial goals, we also prioritize building a strong rapport with our clients. We ensure that our sales approach is based on understanding your needs and providing the right guidance rather than being pushy. Its about creating a collaborative partnership that benefits both parties.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplements. Can you tell me more about them?",
        "Salesman: Of course! Our health supplements are specially formulated to address various health needs. What specific concerns or goals do you have?",
        "Customer: Ive been having trouble sleeping lately. Do you have any supplements that can help with that?",
        "Salesman: Absolutely! We have a natural sleep aid that promotes relaxation and supports a restful nights sleep. It contains ingredients like melatonin and chamomile. Would you like more information about it?",
        "Customer: Im looking for a way to boost my energy levels. Do you have any suggestions?",
        "Salesman: Certainly! We have an energy-boosting supplement that contains a blend of vitamins, minerals, and herbal extracts. It can help improve focus and enhance stamina. Would you like to know more about it?",
        "Customer: Im concerned about my joint health. Do you have any supplements that could help?",
        "Salesman: Absolutely! We have a joint support formula that contains glucosamine, chondroitin, and MSM. It promotes joint flexibility and helps reduce discomfort. Would you like me to provide more details?",
        "Customer: Im trying to lose weight. Are there any supplements that can assist with weight loss?",
        "Salesman: Yes, we have a weight management supplement that can support your weight loss journey. It contains natural ingredients that help boost metabolism and control cravings. Would you like to learn more about it?",
        "Customer: I have a weak immune system. Are there any supplements that can help strengthen it?",
        "Salesman: Certainly! We have an immune support formula that contains a potent blend of vitamins, antioxidants, and herbal extracts. It helps strengthen the immune system and supports overall wellness. Would you like me to provide more information?",
        "Customer: Im interested in maintaining my heart health. Do you have any supplements for that?",
        "Salesman: Absolutely! We have a heart health formula that contains essential nutrients like omega-3 fatty acids and CoQ10. It supports cardiovascular health and promotes healthy blood pressure levels. Would you like to know more about it?",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi there, Im interested in your health products. Can you tell me more about them?",
        "Salesman: Of course! Our health products are designed to address various needs and improve overall well-being. How can I assist you specifically?",
        "Customer: Ive been experiencing some digestive issues lately. Do you have anything that could help?",
        "Salesman: Absolutely! We have a range of digestive health products that can provide relief and support. Let me share some information with you.",
        "Customer: Im looking for a fitness program that suits my busy schedule. What options do you have?",
        "Salesman: Great! We have fitness programs that are flexible and tailored to meet the needs of busy individuals like yourself. Lets discuss your schedule and find the perfect fit for you.",
        "Customer: Im concerned about my energy levels throughout the day. Can you recommend something to boost my energy?",
        "Salesman: Certainly! We have energy-boosting supplements that can help you maintain high energy levels and combat fatigue. Let me provide you with more details.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in investing in your financial products.",
        "Salesman: Great to hear! Lets start by building some rapport. How long have you been interested in finance?",
        "Customer: Ive been following the finance industry for a few years now.",
        "Salesman: Thats fantastic! Its always exciting to meet someone who shares a genuine interest in finance. What specifically caught your attention in this industry?",
        "Customer: Im fascinated by the dynamic nature of the stock market and the potential for growth.",
        "Salesman: Absolutely, the stock market offers great opportunities for growth. Its wonderful to find someone who appreciates the potential it holds. Have you had any previous experience with investing?",
        "Customer: Ive dabbled in some small investments, but Im looking to explore more substantial options now.",
        "Salesman: Thats a fantastic mindset! Its important to gradually expand your investment portfolio. Im here to help you navigate through various options and find the best fit for your goals. What are some specific financial goals youd like to achieve?",
        "Customer: Im primarily aiming for long-term wealth accumulation and financial stability.",
        "Salesman: Excellent objectives! Long-term wealth accumulation is a smart strategy. Its great that youre focused on building a solid foundation for your financial future. Lets explore some investment opportunities that align with your goals.",
        "Customer: Im also interested in socially responsible investments. Can you provide information on those?",
        "Salesman: Absolutely! Socially responsible investments are gaining popularity, and its wonderful that you care about investing in companies that align with your values. Lets discuss some options that prioritize environmental, social, and governance factors.",
        "Customer: Thank you for taking the time to understand my interests and goals. I feel more confident moving forward with you.",
        "Salesman: Youre welcome! Building rapport and understanding your needs is crucial to me. Im here to guide you through the investment process and ensure we find the best solutions for you. Lets continue this journey together.",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your tech product. Can you tell me more about it?",
        "Salesman: Of course! Id be happy to. Before we dive into the details, may I ask what specifically caught your attention about our product?",
        "Customer: Im considering purchasing your software, but Im not sure if its the right fit for my business. Can you help me with that?",
        "Salesman: Absolutely! Understanding your unique business needs is crucial. Could you tell me a bit more about your business and the specific challenges youre facing? This will help me determine if our software is the right solution for you.",
        "Customer: Ive been researching different tech providers, and Im looking for someone who really understands my industry. Can you demonstrate your expertise?",
        "Salesman: Certainly! I have extensive experience working with clients in your industry. I understand the challenges and trends, and I can tailor our tech solutions to meet your specific needs. Let me give you some examples of how weve successfully helped businesses like yours in the past.",
        "Customer: Im concerned about the price of your product. Can you justify the cost?",
        "Salesman: I completely understand your concern. Our product may seem a bit pricier, but let me explain the value it brings. It offers advanced features and capabilities that can significantly improve your efficiency and productivity. In the long run, it can save you time, resources, and ultimately, money. Would you like me to provide more details?",
        "Customer: Ive had a bad experience with a similar tech product in the past. How can you assure me that your product is different?",
        "Salesman: Im sorry to hear about your previous experience. I want to assure you that our product is unique and has been designed with specific customer pain points in mind. Weve received positive feedback from many customers who had similar concerns initially. Would you be open to a demo or trial period to experience our product firsthand and see the difference?",
        "Customer: Im not sure if I can trust your company. How can I be confident in doing business with you?",
        "Salesman: Building trust is essential to us, and we take it very seriously. We have a proven track record of delivering high-quality products and excellent customer service. We also have numerous satisfied customers who can vouch for our reliability and integrity. Additionally, we offer a money-back guarantee for our product, so you can try it risk-free. Is there anything specific youd like to know to help build your confidence?",
        "Customer: Ive heard good things about your competitor. Why should I choose your tech product instead?",
        "Salesman: Thats a great question. While our competitor may have their strengths, what sets us apart is our dedication to understanding and addressing our customers unique needs. We go above and beyond to provide personalized support, tailored solutions, and a seamless user experience. We have a solid reputation for delivering exceptional value and exceeding customer expectations. Would you like me to provide more details on how we stand out from the competition?",
        "Customer: I want to explore other options before making a decision. Can you convince me to choose your tech product now?",
        "Salesman: I completely understand your desire to explore different options. Our goal is not to rush your decision, but rather to help you make an informed choice. Id be happy to provide you with more information, answer any questions you have, and even offer a trial period so you can experience the benefits of our tech product firsthand. What specific aspects would you like to learn more about?",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Im interested in purchasing a new laptop for my business.",
        "Salesman: Great! Id be happy to assist you. May I ask what specific requirements you have for the laptop?",
        "Customer: Ive had a bad experience with a previous vendor. Can I trust your company?",
        "Salesman: I completely understand your concern. Building trust is important to us, and we value our customers satisfaction. We have a proven track record of delivering high-quality products and excellent customer service.",
        "Customer: Im not sure if this software will meet my needs. Can you help me with that?",
        "Salesman: Absolutely! Id be happy to discuss your requirements and provide you with all the information you need to make an informed decision. Could you please share more details about your specific needs?",
        "Customer: Im hesitant to invest in this new technology. How can you address my concerns?",
        "Salesman: I completely understand your hesitation. Its important to us that our customers feel confident in their purchasing decisions. Lets discuss your concerns in detail, and Ill provide you with all the information and support you need to make an informed choice.",
        "Customer: Ive heard good things about your competitor. Why should I choose your company instead?",
        "Salesman: Thank you for considering us. We pride ourselves on our unique approach and commitment to customer satisfaction. We prioritize understanding your needs and providing tailored solutions. Our customer testimonials and repeat business are a testament to our dedication in delivering exceptional value.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im looking for a new health supplement. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. What are your specific needs or concerns?",
        "Customer: Ive been experiencing joint pain lately. Im looking for something natural to alleviate it.",
        "Salesman: I understand how important it is to find a natural solution. Many of our customers have found relief with our herbal joint support supplement. Would you like to learn more about it?",
        "Customer: Ive tried several supplements in the past, but none of them seem to work. Im hesitant to try something new.",
        "Salesman: I completely understand your hesitation. Its important to find a solution that works for you. Our supplement is backed by scientific research and has received positive feedback from many customers. Would you be interested in hearing some success stories?",
        "Customer: Im concerned about the potential side effects of supplements. How can I be sure that this product is safe?",
        "Salesman: Safety is our top priority. Our supplement is made from high-quality, natural ingredients that are carefully tested for purity and potency. We also follow strict manufacturing standards to ensure the highest level of safety. Would you like to see the detailed product information and certifications?",
        "Customer: Ive been researching different brands, and there are so many options out there. Im not sure which one to choose.",
        "Salesman: I understand how overwhelming it can be to choose the right brand. What sets us apart is our commitment to building a personalized relationship with our customers. We take the time to understand your specific needs and provide tailored recommendations. Would you like some guidance in finding the best product for you?",
        "Customer: I appreciate your assistance. Ive had bad experiences with pushy salespeople in the past. How do I know youre different?",
        "Salesman: I completely understand your concern. Building rapport and trust with our customers is our priority. We strive to provide a comfortable and personalized experience without any pressure to make a purchase. Our goal is to help you find the right solution for your health needs. You can check our customer reviews and testimonials to see how we have successfully built lasting relationships.",
        "Customer: Im interested in trying your supplement, but Im not sure if it will work for me.",
        "Salesman: I completely understand your hesitation. We offer a satisfaction guarantee, so if youre not satisfied with the results, you can return the product within 30 days for a full refund. We believe in the effectiveness of our supplement, and we want you to feel confident in trying it. Would you like to give it a try?",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Im also concerned about the risk involved. How can you address that?",
        "Salesman: I completely understand your concerns. Risk management is a crucial aspect of investing. We have strategies in place to minimize risk and diversify your portfolio. Lets explore these options together and find the right balance for your risk tolerance.",
        "Customer: Im worried about the repayment terms. How flexible are they?",
        "Salesman: Flexibility is a key feature of our loan programs. We understand that businesses have unique cash flow patterns and repayment abilities. We can work together to customize a repayment plan that suits your businesss needs and ensures a smooth repayment process.",
        "Customer: Im concerned about my credit score. Will that affect my eligibility for a loan?",
        "Salesman: Your credit score is certainly a factor we consider, but it doesnt necessarily disqualify you from obtaining a loan. We have programs in place for individuals with varying credit histories. Lets review your credit profile together and determine the best financing solution for your situation.",
        "Customer: Im worried about accessibility. Can I easily access my funds when needed?",
        "Salesman: Accessibility is important, and our savings accounts offer various options for easy access to your funds. We can provide you with a debit card or online banking services to ensure convenient access while maintaining the security of your savings.",
        "Customer: Im concerned about market volatility. How do you address that?",
        "Salesman: Market volatility is a valid concern. We have experienced investment advisors who closely monitor market trends and adjust investment portfolios accordingly. Additionally, we can explore options like index funds or diversifying your investments to minimize the impact of market fluctuations.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplements. Can you tell me more about them?",
        "Salesman: Of course! Our health supplements are designed to support overall well-being and address specific health concerns. What specific needs or goals do you have?",
        "Customer: Ive been experiencing low energy levels lately. Can your supplements help with that?",
        "Salesman: Absolutely! We have a range of supplements that are formulated to boost energy levels. They contain natural ingredients that provide vital nutrients and support your bodys energy production. Would you like me to recommend a specific supplement?",
        "Customer: Ive tried different supplements before, but none of them seem to work. What makes yours different?",
        "Salesman: I understand your concern. Our supplements are carefully formulated using high-quality ingredients and undergo rigorous testing to ensure their effectiveness. We also have many satisfied customers who have experienced positive results. Would you like to hear some testimonials?",
        "Customer: How do I know if your supplements are safe to take?",
        "Salesman: Thats a valid question. Our supplements are produced in FDA-approved facilities and adhere to strict quality standards. They are also third-party tested for safety and purity. We prioritize the well-being of our customers, and we take every precaution to ensure our products are safe to use.",
        "Customer: Im hesitant to try new supplements. Can you provide any guarantees or warranties?",
        "Salesman: I completely understand your concern. We offer a satisfaction guarantee on all our products. If youre not completely satisfied with your purchase, you can return it within 30 days for a full refund. We stand behind the quality and effectiveness of our supplements.",
        "Customer: Ive been recommended some other brands of supplements. Why should I choose yours?",
        "Salesman: Great question! What sets us apart is our commitment to building relationships with our customers. We take the time to understand your unique needs and provide personalized recommendations. Our supplements are also backed by scientific research and have a track record of positive results. We strive to exceed your expectations and provide exceptional customer service.",
        "Customer: Im looking for a long-term solution for my health. How can your supplements help with that?",
        "Salesman: Our supplements are designed to support long-term health and well-being. They are not just a quick fix, but part of a holistic approach to wellness. By incorporating our supplements into your daily routine, you can maintain and improve your health over time. We also offer ongoing support and resources to help you achieve your health goals.",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im considering purchasing a health insurance plan. Can you tell me more about the options available?",
        "Salesman: Of course! Id be happy to help. First, lets build some rapport. How are you doing today?",
        "Customer: Im doing well, thank you. I appreciate your willingness to assist me. Ive had some bad experiences in the past with insurance companies, so Im looking for someone I can trust.",
        "Salesman: I understand your concerns. Building trust is crucial, especially when it comes to insurance. Ill do my best to provide you with the information you need and address any concerns you have.",
        "Customer: Thats reassuring to hear. Can you explain how the claims process works? I want to make sure its hassle-free and efficient.",
        "Salesman: Absolutely. Building rapport is about understanding your needs and providing the right information. The claims process is straightforward, and Ill guide you through it step by step. Our goal is to make it as convenient as possible for you.",
        "Customer: Thats great to know. Ive heard horror stories about delays and complications with insurance claims, so its important for me to find a reliable provider.",
        "Salesman: I completely understand your concerns. Our company prides itself on its efficient claims process. We have a dedicated team that works diligently to ensure timely and hassle-free settlements for our customers.",
        "Customer: Thats reassuring. One more thing Id like to know is how your company handles pre-existing conditions. I have a chronic health issue, and I want to make sure Ill be covered.",
        "Salesman: Thank you for sharing that with me. Building rapport means addressing your specific concerns. I can assure you that we provide coverage for pre-existing conditions, and well work together to find the best plan that suits your needs.",
        "Customer: Im glad to hear that. Its important for me to have peace of mind knowing that my health condition wont be a barrier to getting the coverage I need.",
        "Salesman: Absolutely, your peace of mind is our priority. Building rapport involves understanding your unique requirements, and Im here to ensure you have the coverage you need for your peace of mind.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im looking for a health insurance plan. Can you help me with that?",
        "Salesman: Of course! Id be happy to assist you in finding the right health insurance plan. May I ask a few questions to understand your needs better?",
        "Customer: Ive been experiencing some health issues recently, and Im not sure which specialist to consult. Any suggestions?",
        "Salesman: I understand how challenging it can be to find the right specialist. Could you provide me with more details about your health issues so that I can recommend the most suitable expert for you?",
        "Customer: Im concerned about the rising costs of healthcare. How can I ensure that I get the best value for my money?",
        "Salesman: Cost is a valid concern, and Im here to help you make the most informed decision. Lets discuss your healthcare needs and explore different options that provide high value at an affordable price.",
        "Customer: Ive had a bad experience with a previous health insurance provider. How can I trust that your company will be different?",
        "Salesman: I understand your concern, and building trust is essential to us. Let me share some testimonials from our satisfied customers and explain how our company prioritizes customer satisfaction to ensure a positive experience for you.",
        "Customer: Im not sure if I really need health insurance. Can you explain its importance?",
        "Salesman: Certainly! Health insurance is crucial for protecting yourself from unexpected medical expenses and ensuring access to quality healthcare. Let me provide you with some real-life examples of how health insurance has been a lifesaver for many individuals and families.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hello, Im interested in investing in the stock market. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. Tell me more about your investment goals and preferences.",
        "Customer: Ive been researching different investment options, but Im not sure which one is the best for me.",
        "Salesman: I understand it can be overwhelming. Lets discuss your financial situation and risk tolerance to find the most suitable investment strategy for you.",
        "Customer: Ive had some bad experiences with financial advisors in the past. How can I trust you?",
        "Salesman: I completely understand your concern. Building trust is essential in our industry. Lets start by getting to know each other better and discussing my approach and track record.",
        "Customer: Im worried about losing money in the market. How can you reassure me?",
        "Salesman: Its natural to have concerns about market fluctuations. Lets talk about risk management strategies and how we can minimize potential losses to give you peace of mind.",
        "Customer: Ive had a financial setback recently. Can you help me recover?",
        "Salesman: Im sorry to hear that. Lets explore options to help you get back on track. We can discuss budgeting, debt management, and potentially restructuring your investment portfolio.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop for my business needs.",
        "Salesman: Great! Id be happy to help you find the perfect laptop. Tell me more about your specific requirements and preferences.",
        "Customer: Ive been having trouble with my current software. Do you have any recommendations for a more efficient solution?",
        "Salesman: Certainly! Understanding your pain points is crucial. Could you please elaborate on the issues youre facing with your current software?",
        "Customer: Im considering different options for web hosting services. What sets your company apart from the competition?",
        "Salesman: Thats a great question! Building rapport is key in todays competitive market. Let me explain how we differentiate ourselves and provide a unique experience for our customers.",
        "Customer: I want to ensure that the products I purchase align with my companys values. Can you tell me more about your ethical practices?",
        "Salesman: Absolutely! Building rapport involves establishing shared values. Allow me to explain our ethical practices and how they align with your companys values.",
        "Customer: Ive had negative experiences with previous vendors. How can I trust that your company will deliver on its promises?",
        "Salesman: Trust is crucial in building rapport. Let me address your concerns and share how we prioritize delivering on our promises to earn your trust.",
        "Customer: Ive had a great experience with your company so far. How can I continue to receive the same level of service in the future?",
        "Salesman: Building rapport is an ongoing process. Let me explain how we consistently strive to provide excellent service and maintain a strong customer relationship with you.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health products. Can you tell me more about them?",
        "Salesman: Of course! Our health products are designed to improve overall wellness and address specific health concerns. What specific needs or concerns do you have?",
        "Customer: Ive been struggling with sleep issues lately. Do you have any products that can help with that?",
        "Salesman: Absolutely! We have a range of sleep aids that are specifically formulated to promote better sleep and relaxation. Would you like to hear more about them?",
        "Customer: Ive heard good things about your company. Can you share some success stories or testimonials from your customers?",
        "Salesman: Certainly! We have helped numerous customers achieve their health goals and improve their quality of life. Let me share a few testimonials with you to give you a better idea of the positive impact our products have had.",
        "Customer: Im concerned about the potential side effects of your products. How do you ensure their safety?",
        "Salesman: Safety is our top priority. All our products undergo rigorous testing and comply with industry standards. We also source high-quality ingredients to ensure their effectiveness and minimize any potential side effects. Would you like to learn more about our safety measures?",
        "Customer: Im comparing your products with those of your competitors. What makes yours stand out?",
        "Salesman: Great question! Our products are not only effective but also backed by scientific research. We have a team of experts who carefully formulate each product, ensuring their superior quality and efficacy. Additionally, our customer-centric approach and personalized support set us apart from the competition. Would you like more information on our unique selling points?",
        "Customer: Im hesitant to try new products. How can you assure me that yours will work?",
        "Salesman: We completely understand your concern. Thats why we offer a satisfaction guarantee. If our product doesnt meet your expectations, well provide a full refund. Were confident in the effectiveness of our products, and we want you to feel confident too. Can I provide you with more details on our guarantee?",
        "Customer: Ive been a loyal customer of another brand for years. What can you offer to make me switch?",
        "Salesman: We appreciate your loyalty to your current brand. We believe that our products can offer you even better results and a unique experience. As a valued customer, we can provide you with exclusive discounts and personalized recommendations to ensure a smooth transition. Would you be interested in exploring the benefits of switching to our brand?",
        "Customer: How do you handle customer support after the purchase?",
        "Salesman: We pride ourselves on providing excellent customer support even after youve made a purchase. Our dedicated support team is available to assist you with any questions, concerns, or product-related issues. We value your satisfaction and aim to provide a seamless experience throughout your journey with us.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplements. Can you tell me more about them?",
        "Salesman: Of course! Our health supplements are designed to support overall well-being and address specific health concerns. What specific aspects are you looking to improve?",
        "Customer: Ive been struggling with low energy levels lately. Do you have any supplements that can help with that?",
        "Salesman: Absolutely! We have a range of energy-boosting supplements that can help improve your energy levels. Let me recommend a few options based on your unique needs.",
        "Customer: Im concerned about my joint pain. Are there any supplements that can provide relief?",
        "Salesman: Yes, we have several joint support supplements that can help alleviate joint pain and promote joint health. Let me provide you with more information on those options.",
        "Customer: Ive heard about the benefits of antioxidants. Can you recommend any supplements that are rich in antioxidants?",
        "Salesman: Certainly! Antioxidants play a crucial role in maintaining overall health and protecting against oxidative stress. I can suggest a few antioxidant-rich supplements that may be beneficial for you.",
        "Customer: Im looking for natural supplements to improve my sleep quality. Do you have any recommendations?",
        "Salesman: Absolutely! We offer a range of natural sleep aids that can help promote better sleep quality and relaxation. Let me provide you with more information on those options.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop for my graphic design work.",
        "Salesman: Great! Id be happy to assist you. Can you tell me more about your specific requirements and preferences?",
        "Customer: Im looking for a laptop with a high-performance processor and a dedicated graphics card.",
        "Salesman: Understood. Those are important features for graphic design. May I ask what software you primarily use?",
        "Customer: I mainly use Adobe Photoshop and Illustrator.",
        "Salesman: Excellent choices. These software programs require a powerful machine. Have you considered any specific brands or models?",
        "Customer: Ive heard good things about Apples MacBook Pro, but Im open to other options as well.",
        "Salesman: The MacBook Pro is indeed a popular choice among graphic designers. However, there are other options worth considering. Lets explore some alternatives together.",
        "Customer: Im also concerned about the portability of the laptop. I travel frequently for work.",
        "Salesman: Portability is definitely a factor to consider. We can look for lightweight and compact options without compromising on performance. Do you have any specific weight or size preferences?",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. What specific requirements do you have in mind for your new laptop?",
        "Customer: Im looking for a laptop that is lightweight and has a long battery life. Any recommendations?",
        "Salesman: Absolutely! Based on your preferences, I would suggest considering our XYZ model. Its known for its portability and extended battery performance.",
        "Customer: Ive had bad experiences with previous laptops. How can I be sure that this one will be reliable?",
        "Salesman: I understand your concern. Our XYZ model has received excellent reviews for its durability and reliability. We also offer a comprehensive warranty to ensure your satisfaction.",
        "Customer: Im not very tech-savvy. Will it be easy for me to set up the laptop and use it?",
        "Salesman: Absolutely! Our XYZ model comes with user-friendly setup instructions and an intuitive interface. Additionally, our customer support team is always available to assist you if needed.",
        "Customer: Ive seen similar laptops at lower prices. Why should I choose yours?",
        "Salesman: Thats a valid concern. Our XYZ model offers exceptional value for its price. It not only meets your specific requirements but also comes with additional features and customer support that sets it apart from competitors.",
        "Customer: Im considering other brands as well. What makes your laptops stand out?",
        "Salesman: Great question! Our XYZ model is known for its superior performance, innovative design, and excellent customer satisfaction rates. We also offer a wide range of customization options to tailor the laptop to your exact needs.",
        "Customer: Im still unsure. Can you provide any testimonials from satisfied customers?",
        "Salesman: Absolutely! We have numerous testimonials from satisfied customers who have praised the performance, reliability, and overall satisfaction with our XYZ model. I can provide you with some of these testimonials for your reference.",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in buying a new laptop. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. What are your specific requirements and preferences for a laptop?",
        "Customer: Im looking for a laptop that is lightweight and has a long battery life. Any recommendations?",
        "Salesman: Absolutely! Based on your needs, I would recommend our latest model, which is known for its portability and impressive battery performance. Its perfect for people on the go.",
        "Customer: Ive heard mixed reviews about your companys laptops. Can you assure me of their quality?",
        "Salesman: I understand your concern. Our company takes pride in delivering high-quality products. We have a rigorous quality control process to ensure that every laptop meets the highest standards. Additionally, we offer a warranty and excellent customer support to address any issues that may arise.",
        "Customer: Im comparing prices with other brands. Why should I choose your laptop over the competition?",
        "Salesman: Great question! Apart from the outstanding features and performance, our laptops come with additional benefits such as extended support, exclusive software, and a dedicated online community where you can connect with other users and receive helpful tips and advice.",
        "Customer: Im not sure if this laptop will be suitable for my work requirements. Can you provide more information?",
        "Salesman: Absolutely! Please let me know the specific tasks and software you use for work, and I can provide you with detailed information on how our laptop can meet your needs. We also offer customization options to optimize the laptop for your specific requirements.",
        "Customer: Im interested in purchasing, but Im concerned about the delivery process. How reliable is your shipping?",
        "Salesman: Thank you for your interest! We prioritize customer satisfaction, and our shipping process is reliable and efficient. We work with trusted shipping partners to ensure your laptop arrives safely and on time. We also provide tracking information so you can monitor the progress of your delivery.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your financial planning services. Can you tell me more about them?",
        "Salesman: Of course, Id be happy to! Financial planning is all about helping individuals and businesses manage their money and achieve their financial goals. By understanding your unique needs and objectives, we can create a personalized plan that maximizes your financial potential. How can I assist you specifically?",
        "Customer: Im hesitant to invest because Ive had bad experiences in the past. How can you assure me that it wont happen again?",
        "Salesman: I completely understand your concern. Building trust is a top priority for us. We have a proven track record of delivering successful outcomes for our clients, and we prioritize transparency in our approach. We can provide you with testimonials from satisfied customers and explain our risk management strategies to give you peace of mind. We want to build a strong rapport with you based on trust and understanding.",
        "Customer: Im not sure if I can afford your services. Can you work with my budget?",
        "Salesman: Absolutely, we believe in tailoring our services to fit your financial situation. We offer flexible options and can work within your budget to ensure you receive the guidance and support you need. Our goal is to help you achieve financial success without straining your finances. Lets discuss your budget and explore how we can assist you.",
        "Customer: Ive heard about other financial planners who didnt take my goals into consideration. How do you ensure you understand my needs?",
        "Salesman: We understand the importance of understanding your needs and goals. Our first step is to have a thorough discussion to gain insight into your specific objectives. We ask detailed questions to ensure we have a comprehensive understanding of what you want to achieve. This way, we can develop a personalized financial plan that aligns with your goals and aspirations. Our focus is on your success.",
        "Customer: Im interested, but I need more time to think it over. Can you keep me updated with relevant information?",
        "Salesman: Absolutely! We respect your decision-making process. We can provide you with regular updates, newsletters, and valuable information related to financial planning. By staying in touch, we can ensure you have all the information you need to make an informed decision. We are here to support you throughout your journey, even if you need more time to think it through.",
        "Customer: Ive had a bad experience with a previous financial advisor. How can I trust you wont let me down?",
        "Salesman: Building trust is of utmost importance to us. We prioritize transparency and open communication. We have a strong track record of client satisfaction, and we can provide you with references from our happy clients. Our goal is to establish a solid rapport with you based on trust and understanding. We are committed to your financial success and will work closely with you to ensure your needs are met.",
        "Customer: Im not sure if financial planning is worth the investment. Can you explain its long-term benefits?",
        "Salesman: Certainly! Financial planning offers a range of long-term benefits. It helps you establish clear financial goals, create a roadmap to achieve them, and make informed investment decisions. It also ensures you have a contingency plan in place for unexpected events and helps you optimize your tax strategies. Ultimately, financial planning provides you with peace of mind and confidence in your financial future. Its a wise investment in your financial well-being.",
        "Customer: Ive been burned by risky investments before. How can you assure me that your approach is different?",
        "Salesman: We understand your concern and prioritize risk management. Our approach to financial planning is based on a thorough analysis of your risk tolerance and investment objectives. We focus on diversification and aligning your investments with your goals. By customizing our strategies to your needs and carefully monitoring market trends, we aim to minimize risk and maximize returns. Your financial security is our top priority.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplements. Can you tell me more about them?",
        "Salesman: Of course! Our health supplements are carefully formulated to support overall well-being. They are made from natural ingredients and have been proven to be effective. How can I assist you further?",
        "Customer: Ive been having trouble sleeping lately. Do you have any recommendations?",
        "Salesman: I understand how important a good nights sleep is. We have a range of sleep aids that can help you relax and improve your sleep quality. Let me share some options with you.",
        "Customer: Im concerned about my immune system. What can I do to boost it?",
        "Salesman: Maintaining a strong immune system is crucial, especially in the current times. We have immune-boosting supplements that are rich in vitamins and antioxidants. These can provide the support your immune system needs. Let me provide you with more information.",
        "Customer: Ive tried various weight loss products, but none have worked for me. Can you recommend something effective?",
        "Salesman: Weight loss can be challenging, and finding the right product is important. We have a range of weight loss supplements that have shown promising results for many of our customers. Lets discuss your specific needs and find the best solution for you.",
        "Customer: Im looking for natural remedies for stress and anxiety. Can you suggest anything?",
        "Salesman: Managing stress and anxiety is crucial for overall well-being. We have a variety of natural remedies, such as herbal supplements and relaxation techniques, that can help you find relief. Lets explore these options together.",
        "Customer: Im interested in improving my joint health. What do you recommend?",
        "Salesman: Joint health is important for maintaining mobility and reducing discomfort. We have supplements that are specifically designed to support joint health and reduce inflammation. Let me provide you with more details.",
        "Customer: Ive heard about the benefits of probiotics. Can you explain more about them?",
        "Salesman: Probiotics play a crucial role in maintaining a healthy gut and supporting digestion. They are beneficial bacteria that can improve your overall gut health. We have a range of probiotic supplements that can provide you with these benefits. Let me share more information with you.",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. What specific features are you looking for in a laptop?",
        "Customer: Im not sure which laptop would be the best fit for my needs. There are so many options out there.",
        "Salesman: I completely understand. Choosing the right laptop can be overwhelming. Lets start by discussing your requirements and preferences, and we can narrow down the options together.",
        "Customer: Ive had some bad experiences with laptops in the past. Im worried about making the wrong choice again.",
        "Salesman: I hear you. Its important for us to find a laptop that not only meets your needs but also provides a reliable and positive experience. Lets work together to make sure we find the right one for you.",
        "Customer: Im on a tight budget. Can you recommend a laptop that offers good value for the price?",
        "Salesman: Absolutely. We have several options that fit different budget ranges. Lets explore the options within your budget and find a laptop that offers the best value for your money.",
        "Customer: Im concerned about the performance and speed of the laptop. Can you assure me that your products are top-notch?",
        "Salesman: I completely understand your concern. Our laptops are designed with cutting-edge technology to deliver excellent performance and speed. Let me provide you with more information and address any doubts you may have.",
        "Customer: Ive heard good things about your companys customer service. Can you tell me more about it?",
        "Salesman: Absolutely. We take pride in our exceptional customer service. Our dedicated team is readily available to assist you before, during, and after your purchase. We aim to provide a seamless experience for our customers.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in investing in the stock market. Can you help me?",
        "Salesman: Absolutely! Id be happy to assist you. Lets start by building a rapport and understanding your investment goals and needs.",
        "Customer: Ive had some bad experiences with financial advisors in the past. How can I trust you?",
        "Salesman: I understand your concerns. Building trust is crucial, and Im here to show you that I genuinely care about your financial success. Lets discuss your past experiences and how I can provide a different approach.",
        "Customer: Im not sure if I want to invest in stocks or bonds. What do you recommend?",
        "Salesman: Thats a great question. Building rapport will help me understand your risk tolerance, financial goals, and investment preferences. By gaining a deeper understanding of your needs, I can recommend the most suitable investment options for you.",
        "Customer: Im worried about the current economic situation. How can you address my concerns?",
        "Salesman: I completely understand your apprehension. Building rapport allows me to listen to your concerns and provide personalized advice based on your unique situation. Together, we can explore strategies to mitigate risks and maximize your investment opportunities.",
        "Customer: Ive heard about different investment scams. How can I be sure that I wont fall victim to one?",
        "Salesman: I completely empathize with your concerns. Building rapport with me will help you see that I prioritize your financial security. I am dedicated to providing honest and transparent advice, backed by reliable research and industry expertise. Lets discuss how I can help you distinguish legitimate opportunities from potential scams.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health products. Can you tell me more about them?",
        "Salesman: Of course! Our health products are designed to address various health needs. What specific concerns do you have?",
        "Customer: Ive been having trouble sleeping and feeling tired all the time. Do you have anything that could help with that?",
        "Salesman: Absolutely! We have a range of sleep aids and supplements that can promote a restful nights sleep and boost energy levels. Let me give you more details.",
        "Customer: Ive tried several products in the past, but none of them seem to work. How can I be sure yours will be effective?",
        "Salesman: I understand your concern. Our products are backed by extensive research and have helped many customers with similar issues. We also offer a satisfaction guarantee, so if youre not satisfied, you can return the product for a full refund.",
        "Customer: Im on a tight budget. Can you recommend any affordable options?",
        "Salesman: Certainly! We have budget-friendly options that still deliver great results. Let me show you some cost-effective choices.",
        "Customer: Im not sure if I really need these products. How can you convince me its worth it?",
        "Salesman: I completely understand your hesitation. Our products have been highly recommended by healthcare professionals and have received positive feedback from satisfied customers. Additionally, we offer a free trial period so you can try them out risk-free.",
        "Customer: Ive heard mixed reviews about your brand. How can I trust that your products are reliable?",
        "Salesman: Thank you for bringing up that concern. We value transparency, and all our products undergo rigorous testing and quality control measures. We also have a strong customer support team to address any issues or questions you may have.",
        "Customer: Im interested in maintaining my overall health. What product would you recommend for that?",
        "Salesman: Thats great! We have a comprehensive wellness range that includes multivitamins, immune boosters, and antioxidants. These products can support your overall health and well-being.",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your financial planning services.",
        "Salesman: Great! Im glad you reached out. How can I assist you today?",
        "Customer: Im looking for someone I can trust with my savings and investments.",
        "Salesman: Absolutely, trust is crucial when it comes to finances. Building a strong rapport with my clients is my top priority.",
        "Customer: Ive had bad experiences with previous advisors who didnt understand my goals. Can you ensure that wont happen?",
        "Salesman: I completely understand your concern. Building rapport allows me to truly understand your needs and tailor my approach to help you achieve your specific goals.",
        "Customer: I want someone who is genuinely interested in my success.",
        "Salesman: I couldnt agree more. I believe in building meaningful relationships with my clients and being genuinely invested in their financial success.",
        "Customer: Ive heard that your company provides excellent customer service. Can you tell me more about it?",
        "Salesman: Absolutely! Building rapport and providing exceptional customer service is a core value of our company. We strive to create a comfortable and open environment for our clients to freely express their needs and concerns.",
        "Customer: How do you differentiate yourself from other financial advisors in the market?",
        "Salesman: Building rapport is one of the ways I differentiate myself. By establishing a personal connection and understanding your unique needs, I can provide a tailored financial solution that sets me apart from competitors.",
        "Customer: I want to work with someone who understands my industry. Can you offer that expertise?",
        "Salesman: Absolutely, understanding your industry is essential to provide you with the best financial advice. Through building rapport, Ill ensure that I understand your industry-specific challenges and goals.",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your financial planning services.",
        "Salesman: Great! Im glad you reached out. Tell me a bit about your financial goals and what youre looking to achieve.",
        "Customer: Ive been struggling with managing my investments. I want to find a trustworthy advisor who can help me grow my wealth.",
        "Salesman: I completely understand. It can be challenging to navigate the complexities of investments on your own. My goal is to provide personalized financial guidance that aligns with your objectives. Lets discuss your current financial situation in more detail.",
        "Customer: Ive had negative experiences with financial advisors in the past. How can I trust that you will be different?",
        "Salesman: I hear your concern, and I want to assure you that building trust is a top priority for me. I believe in open and transparent communication, and I strive to provide exceptional service to all my clients. Lets schedule a meeting, and you can see for yourself how I can help you achieve your financial goals.",
        "Customer: Im not sure if I can afford your services. What are your fees?",
        "Salesman: I understand that cost is an important factor. I offer a range of service options to accommodate different budgets. During our meeting, we can discuss the details of each service package and find one that suits your needs and financial capabilities.",
        "Customer: Ive been researching other financial planning firms. What makes your services unique?",
        "Salesman: Thats a great question. At our firm, we prioritize building strong relationships with our clients. We take the time to understand your unique financial situation, goals, and values. Our personalized approach, combined with our expertise and commitment to client success, sets us apart from our competitors.",
        "Customer: Im not ready to make a decision yet. Can I take some time to think about it?",
        "Salesman: Of course! I understand that making a financial decision is a significant step. Take all the time you need to review the information we discussed and think about your goals. When youre ready, feel free to reach out, and Ill be here to assist you.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in investing in the stock market. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. Tell me more about your investment goals and preferences.",
        "Customer: Im looking for a mortgage to buy a house. Can you provide me with the best options?",
        "Salesman: Absolutely! Lets start by discussing your budget, desired loan terms, and any specific requirements you have.",
        "Customer: Ive been having trouble managing my personal finances. Any advice on how to improve?",
        "Salesman: Id be glad to help. Lets talk about your current financial situation and identify areas where we can make improvements.",
        "Customer: Im interested in starting my own business. What financial steps should I take?",
        "Salesman: Thats exciting! Lets explore your business idea and discuss the financial aspects, such as funding options and creating a budget.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. Tell me more about your requirements and preferences.",
        "Customer: Im looking for a laptop with a fast processor and good graphics capabilities.",
        "Salesman: Great choice! We have a range of laptops that meet those specifications. Let me show you some options.",
        "Customer: Im concerned about the battery life. How long can the laptop last on a single charge?",
        "Salesman: Thats a valid concern. Our laptops are designed with energy-efficient components, and the battery life varies depending on the model. Let me provide you with the specific details.",
        "Customer: Ive had some bad experiences with previous laptops. Are your products reliable?",
        "Salesman: I understand your concern. Our laptops undergo rigorous testing to ensure their reliability. We also offer warranty options for added peace of mind. Let me share some customer testimonials to give you a better idea.",
        "Customer: Im comparing prices with other brands. Can you offer any discounts?",
        "Salesman: I appreciate that youre doing your research. We offer competitive pricing and occasional discounts. Let me check if there are any ongoing promotions that can help you save.",
        "Customer: Im not sure if I really need all the features offered. Can you explain their benefits?",
        "Salesman: Absolutely. Each feature is designed to enhance your computing experience. Lets go through them one by one, and Ill explain how they can benefit you based on your requirements.",
        "Customer: Im not ready to make a decision yet. Can I think about it and get back to you?",
        "Salesman: Of course, theres no rush. Take your time to consider all the options. Feel free to reach out to me whenever youre ready, and Ill be here to assist you.",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you help me?",
        "Salesman: Absolutely! Id be happy to assist you. What specific features are you looking for in a laptop?",
        "Customer: Ive been having some issues with my current phone. Do you have any recommendations for a reliable replacement?",
        "Salesman: Of course! I understand how frustrating that can be. Lets discuss your needs and find the perfect phone for you.",
        "Customer: Im in the market for a new software solution for my business. Any suggestions?",
        "Salesman: Definitely! Understanding your business needs is crucial. Could you tell me more about your requirements and goals?",
        "Customer: Ive heard great things about your companys products. Can you tell me more about them?",
        "Salesman: Thank you for your interest! Id be happy to provide you with detailed information on our products. What specific features are you looking for?",
        "Customer: Im not sure if I should upgrade my current computer or buy a new one. What do you recommend?",
        "Salesman: Thats a common dilemma. Lets discuss your current computers specifications and your desired performance level to determine the best course of action.",
        "Customer: Im looking for a smartwatch that can track my fitness activities. Any recommendations?",
        "Salesman: Certainly! Fitness tracking is an important feature. Lets explore the options available and find a smartwatch that suits your needs.",
        "Customer: I need a new camera for my upcoming photography project. What models would you suggest?",
        "Salesman: Great! It would be helpful to know more about your photography needs and preferences. Could you share some details about your project?",
        "Customer: Im interested in upgrading my home theater system. What options do you have?",
        "Salesman: Absolutely! Lets discuss your current setup and your desired audio-visual experience. We have various options to enhance your home theater system.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hello, Im interested in your financial services. Can you tell me more about them?",
        "Salesman: Of course! Id be happy to help. Lets start by getting to know each other a bit. What are your financial goals and concerns?",
        "Customer: Im looking to invest in the stock market, but Im not sure where to start.",
        "Salesman: Thats great! Investing in the stock market can be a smart move. Lets talk about your risk tolerance and investment horizon to find the best approach for you.",
        "Customer: Ive had some bad experiences with financial advisors in the past. How can I trust you?",
        "Salesman: I completely understand your concern. Building trust is essential in our industry. Let me share some testimonials from our satisfied clients and explain how we prioritize your best interests.",
        "Customer: I have a few specific financial needs. Can you customize your services for me?",
        "Salesman: Absolutely! Understanding your unique requirements is crucial for us to provide tailored solutions. Lets discuss your specific needs and how we can address them.",
        "Customer: Ive been struggling to manage my debt. Can you help me with that?",
        "Salesman: Certainly! Managing debt is a common challenge, and we have expertise in debt consolidation and repayment strategies. Lets explore your options and find the best solution for you.",
        "Customer: Im considering switching financial advisors. Why should I choose you?",
        "Salesman: Great question! As your new financial advisor, I will go above and beyond to understand your goals, provide personalized advice, and consistently communicate with you. Lets discuss how we can create a strong partnership.",
        "Customer: Im not sure if I need financial planning. Can you explain its benefits?",
        "Salesman: Absolutely! Financial planning helps you identify and achieve your long-term financial goals while maximizing your resources. It provides a roadmap for your financial success. Let me elaborate on the benefits and how it can make a difference in your life.",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you tell me more about the options available?",
        "Salesman: Of course! Id be happy to help. Firstly, may I ask what are you primarily looking for in a laptop?",
        "Customer: Ive been experiencing some issues with my current software. Do you have any recommendations for a more reliable solution?",
        "Salesman: Absolutely! Its important to find the right software that meets your needs. Could you tell me more about the specific issues youve been facing?",
        "Customer: Im considering upgrading my server infrastructure. What advantages does your company offer over competitors?",
        "Salesman: Great question! We pride ourselves on providing unique advantages. May I ask what features or benefits are most important to you in a server infrastructure?",
        "Customer: Im looking for a new project management tool. Can you explain how your tool stands out from others in the market?",
        "Salesman: Certainly! Our project management tool offers several standout features. Before diving into the details, may I ask what specific requirements or pain points you have in your current project management process?",
        "Customer: Im in the market for a new CRM system. What sets your CRM apart from other options available?",
        "Salesman: Great to hear that youre considering a CRM system! Our CRM stands out in a few key ways. Before I explain further, may I ask what are the main challenges youre facing with your current customer management process?",
        "Customer: Ive heard about your companys reputation for excellent customer support. Can you tell me more about the services you offer in that regard?",
        "Salesman: Absolutely! We take pride in providing exceptional customer support. To start, can you tell me what specific aspects of customer support are most important to you?",
        "Customer: Im interested in implementing a new cybersecurity solution. What makes your companys solution reliable and secure?",
        "Salesman: Excellent choice! Cybersecurity is crucial in todays digital landscape. Before I explain further, may I ask what specific concerns or requirements you have when it comes to cybersecurity?",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. What specific features are you looking for in a laptop?",
        "Customer: Ive been having trouble with my current software. Do you have any recommendations for a better one?",
        "Salesman: Absolutely. Could you tell me more about the issues youve been facing? That way, I can suggest the most suitable software for you.",
        "Customer: Im considering upgrading my smartphone. What advantages does your latest model offer?",
        "Salesman: Great choice! Our latest model offers improved performance, a larger display, and enhanced camera capabilities. Would you like me to show you some demonstrations?",
        "Customer: Ive heard mixed reviews about your company. What sets you apart from your competitors?",
        "Salesman: Thank you for your question. We prioritize building strong relationships with our customers through personalized experiences and exceptional customer service. We go above and beyond to understand and fulfill their unique needs.",
        "Customer: Im hesitant about making a purchase. Can you assure me of the products quality?",
        "Salesman: Absolutely. Our products undergo rigorous testing to ensure the highest quality standards. We also offer a warranty and a customer satisfaction guarantee to provide you with peace of mind.",
        "Customer: Ive had a bad experience with a similar product in the past. How can I trust this product will be different?",
        "Salesman: I understand your concerns. We have a strong track record of customer satisfaction and positive feedback. Our product has been designed based on extensive research and customer feedback to address the shortcomings of similar products in the market.",
        "Customer: Im looking for a tech solution that can streamline my business operations. Can you recommend something suitable?",
        "Salesman: Certainly! Could you provide more details about your business operations and the specific challenges youre facing? That way, I can suggest the most effective tech solution for your needs.",
        "Customer: Ive been a loyal customer of your company for years. Is there any loyalty program or special offers available?",
        "Salesman: Thank you for being a valued customer. We do have a loyalty program that offers exclusive discounts, rewards, and special offers. I would be happy to provide you with more information and help you take advantage of these benefits.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplements. Can you tell me more about them?",
        "Salesman: Of course! Our health supplements are specifically designed to support various aspects of your well-being. Would you like me to explain in detail?",
        "Customer: Ive been having trouble sleeping lately. Do you have any products that can help with that?",
        "Salesman: Absolutely! We have a range of sleep aids that can help improve your sleep quality. Let me tell you about our most popular option.",
        "Customer: Im looking for a fitness program that can help me lose weight. What do you recommend?",
        "Salesman: Great! We have a comprehensive fitness program that combines exercises, meal plans, and guidance from expert trainers. It has helped many people achieve their weight loss goals. Would you like more information?",
        "Customer: Ive tried various diets, but nothing seems to work. Can you suggest something different?",
        "Salesman: I understand your frustration. Our approach focuses not just on dieting but on creating a long-term, sustainable lifestyle change. Let me explain how our program can help you achieve lasting results.",
        "Customer: Im concerned about my immune system. Are there any supplements that can boost it?",
        "Salesman: Absolutely! We have a range of immune support supplements that can help strengthen your immune system. Let me tell you about our best-sellers.",
        "Customer: I want to improve my overall health and well-being. What options do you have?",
        "Salesman: Thats great to hear! We have a variety of products and programs that can enhance your overall health and well-being. Let me guide you through some of our most popular options.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you help me find the right one?",
        "Salesman: Of course! Id be happy to assist you. Tell me, what are your specific requirements and needs for a laptop?",
        "Customer: Im looking for a smartphone with a good camera. Any recommendations?",
        "Salesman: Absolutely! Understanding your needs is important. Could you let me know what other features you prioritize besides the camera?",
        "Customer: Im in the market for a new software solution for my business. Where do I start?",
        "Salesman: Great! Lets start by discussing your business requirements and goals. Understanding them will help me suggest the most suitable software for you.",
        "Customer: I want to upgrade my home entertainment system. Any suggestions?",
        "Salesman: Certainly! Lets begin by discussing your preferences and the specific features youre looking for in a home entertainment system.",
        "Customer: Im a beginner in coding and I need a good laptop for programming. What should I consider?",
        "Salesman: Thats a great choice to start with coding! To recommend the right laptop, its important to consider factors like processing power, memory, and the operating system that best supports your programming needs.",
        "Customer: I need a new printer for my small office. What options do I have?",
        "Salesman: Certainly! Lets talk about the volume of printing you require, any specific features you need, and your budget. This will help me suggest the most suitable printer options for your small office.",
        "Customer: Im interested in buying a virtual reality headset. Can you provide some guidance?",
        "Salesman: Absolutely! Understanding your expectations and the level of immersion you desire will help me narrow down the best virtual reality headset options for you.",
        "Customer: Im considering upgrading my network infrastructure. Where do I start?",
        "Salesman: Great! Lets start by discussing your current network setup, the issues youre facing, and your goals for the upgrade. This will help me recommend the most suitable network infrastructure solutions for you.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplement. Can you tell me more about it?",
        "Salesman: Of course! Our health supplement is made from all-natural ingredients and is designed to improve overall well-being. Its been highly recommended by doctors and has received positive reviews from our customers.",
        "Customer: Ive tried other supplements before, but they didnt work for me. How is yours different?",
        "Salesman: I understand your concern. Our supplement is formulated with specific ingredients that target the areas youre looking to improve. Its important to us that our customers see real results, which is why we offer a satisfaction guarantee.",
        "Customer: Im worried about any potential side effects. Are there any reported cases?",
        "Salesman: Thats a valid concern. Our supplement has undergone rigorous testing and has been found to have minimal side effects, if any. However, everyones body reacts differently, so its always best to consult with your doctor before starting any new supplement.",
        "Customer: Im not sure if this supplement is worth the price. Can you justify the cost?",
        "Salesman: I completely understand your hesitation. Our supplement is priced competitively for the quality and effectiveness it offers. Its important to consider the long-term benefits and overall value it can bring to your health. We also offer a money-back guarantee if youre not satisfied.",
        "Customer: Ive heard mixed reviews about your product. How can I be sure it will work for me?",
        "Salesman: I appreciate your concern. While not every product works for everyone, our supplement has helped many of our customers achieve their health goals. We also offer a 30-day trial period, so you can try it out risk-free and see if it suits your needs.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop for my business. Can you help me find the right one?",
        "Salesman: Of course! Id be happy to assist you. Tell me more about your specific needs and requirements.",
        "Customer: Im looking for a smartphone with a great camera. Which one would you recommend?",
        "Salesman: I understand your preference for a good camera. Let me show you our latest models with advanced camera features.",
        "Customer: Im considering upgrading my internet service. What options do you have available?",
        "Salesman: Thank you for considering our services. Lets discuss your current needs and find the most suitable internet plan for you.",
        "Customer: Im interested in buying a smart home security system. Can you explain how it works?",
        "Salesman: Absolutely! Our smart home security systems provide enhanced protection and convenience. Let me walk you through the features and benefits.",
        "Customer: Im in the market for a new gaming PC. What specifications should I look for?",
        "Salesman: Im glad youre interested in gaming PCs. Lets talk about your gaming preferences and recommend a PC that meets your requirements.",
        "Customer: Im considering switching to a cloud-based storage solution for my business. Can you explain the advantages?",
        "Salesman: Certainly! Cloud-based storage offers numerous benefits such as scalability, accessibility, and data security. Lets discuss how it can optimize your business operations.",
        "Customer: Ive been having trouble with my current software. Can you recommend a more reliable option?",
        "Salesman: I understand your frustration. Lets explore your specific software needs and find a more reliable solution that addresses your challenges.",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health insurance plans.",
        "Salesman: Hello! Im glad to hear that. How can I assist you with your health insurance needs?",
        "Customer: Ive had some bad experiences with insurance companies in the past. Can you assure me that your company is trustworthy?",
        "Salesman: I completely understand your concern. At our company, we prioritize building trust with our customers. We have a strong track record of providing reliable and transparent insurance coverage. Let me share some testimonials from our satisfied customers to give you a better idea.",
        "Customer: What makes your health insurance plans different from other providers?",
        "Salesman: Great question! Apart from offering comprehensive coverage, we focus on building rapport with our customers. We believe in understanding your unique needs and tailoring our plans accordingly. By building a connection with you, we ensure that you receive the best possible health insurance solution.",
        "Customer: Im concerned about the cost. How can you provide affordable health insurance?",
        "Salesman: Affordability is a top priority for us. We offer various flexible payment options and strive to provide value for your money. Additionally, by building rapport with you, we can understand your budgetary constraints and recommend a plan that suits your financial needs.",
        "Customer: Im not sure if I really need health insurance. Can you explain the benefits to me?",
        "Salesman: Absolutely! Health insurance provides you with financial protection in case of unexpected medical expenses. It covers hospitalization, doctor visits, medications, and more. By investing in health insurance, you can have peace of mind knowing that youre protected financially during any health-related emergencies.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you help me find the right one?",
        "Salesman: Of course! Id be happy to assist you. Tell me, what are your specific requirements and preferences for a laptop?",
        "Customer: Ive been having trouble with my current software. It keeps crashing. Do you have any recommendations for a more reliable option?",
        "Salesman: I understand your frustration. Lets explore some software options that are known for their stability and reliability. Could you provide more details about your needs and what features youre looking for?",
        "Customer: Ive heard great things about your companys customer service. Can you tell me more about it?",
        "Salesman: Thank you for your kind words. We pride ourselves on providing excellent customer service. Our team is dedicated to ensuring customer satisfaction by addressing concerns promptly and going above and beyond to meet their needs. Is there anything specific youd like to know?",
        "Customer: Ive been considering upgrading my smartphone, but Im not sure which model to choose. Can you help me make a decision?",
        "Salesman: Absolutely! Choosing the right smartphone can be overwhelming with so many options available. Lets narrow down your requirements and find a model that suits your needs. What are the key features youre looking for in a smartphone?",
        "Customer: Ive had a bad experience with a previous vendor. How can I be sure that I wont face the same issues with your company?",
        "Salesman: I understand your concern. Building trust is essential, and we strive to provide a positive experience for all our customers. Allow me to share some testimonials and case studies that highlight our commitment to customer satisfaction. We value transparency and are here to address any specific concerns you may have.",
        "Customer: Im looking for a reliable web hosting service for my business. Can you recommend one?",
        "Salesman: Certainly! We offer a range of web hosting services tailored to meet different business needs. To suggest the most suitable option for you, could you provide some details about your websites requirements and expected traffic?",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health products. Can you tell me more about them?",
        "Salesman: Of course! Our health products are specially designed to address various health needs. We have a range of supplements and natural remedies that can help improve overall well-being. Is there a specific health concern youd like to address?",
        "Customer: Ive been struggling with sleep issues lately. Do you have anything that can help me sleep better?",
        "Salesman: Absolutely! We have a natural sleep supplement that has been highly effective in promoting restful sleep. It contains soothing herbs and melatonin to help regulate sleep patterns. Many of our customers have experienced significant improvements in their sleep quality after using it.",
        "Customer: Im looking for a solution to manage my stress levels. Any recommendations?",
        "Salesman: Certainly! We have a stress management program that combines mindfulness techniques, herbal supplements, and relaxation exercises. Its designed to help individuals reduce stress and improve overall well-being. It has been highly successful in helping our customers achieve a greater sense of calm and balance.",
        "Customer: Ive heard about your weight loss products. Are they effective?",
        "Salesman: Absolutely! Our weight loss products are backed by scientific research and have helped numerous individuals achieve their weight loss goals. They are formulated with natural ingredients that support metabolism, curb appetite, and promote fat burning. Many of our customers have seen significant results in their weight loss journey with our products.",
        "Customer: Im interested in improving my immune system. What options do you have?",
        "Salesman: Great! We have a range of immune-boosting supplements that can help strengthen your immune system. They contain powerful antioxidants, vitamins, and minerals that support immune function. Our customers have reported fewer instances of illnesses and improved overall immunity after incorporating these supplements into their routine.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your financial planning services.",
        "Salesman: Great! Im glad you reached out. How can I assist you today?",
        "Customer: Ive been researching different investment options. Can you provide some guidance?",
        "Salesman: Of course! Id be happy to help you navigate through the various investment opportunities available.",
        "Customer: Im looking for a reliable financial advisor who understands my goals and concerns.",
        "Salesman: I completely understand. Building a strong rapport with my clients is a top priority for me. Lets discuss your goals and concerns in detail.",
        "Customer: Ive had negative experiences with previous financial advisors. Can I trust you?",
        "Salesman: I completely understand your concern. Building trust is essential. I aim to establish a genuine connection and prove my reliability through transparency and consistent communication.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your financial planning services.",
        "Salesman: Thank you for your interest! Im here to help you. Could you tell me a bit more about your financial goals?",
        "Customer: Im looking to invest my savings in a secure and profitable way.",
        "Salesman: Thats great to hear! Building rapport is crucial in understanding your needs better. May I ask what your risk tolerance is?",
        "Customer: I prefer low-risk investments to ensure the safety of my money.",
        "Salesman: I completely understand your concern. Building rapport helps me tailor the best investment options for you. How would you feel about exploring government bonds?",
        "Customer: Ive heard about government bonds, but Im not sure how they work.",
        "Salesman: No problem at all! Building rapport allows us to have open communication. Let me explain the concept of government bonds in a simple and understandable way.",
        "Customer: That would be helpful. I want to make an informed decision.",
        "Salesman: I appreciate your commitment to making the right choice. Building rapport helps me provide you with all the necessary information. Are you familiar with the concept of compound interest?",
        "Customer: Yes, I understand the benefits of compound interest. Its great for long-term investments.",
        "Salesman: Youre absolutely right! Building rapport helps me understand your knowledge level. Let me show you how compound interest can work in your favor with our investment plans.",
        "Customer: Im glad youre taking the time to explain everything to me.",
        "Salesman: Building rapport is essential for building trust and ensuring your satisfaction. Feel free to ask any further questions, as Im here to help!",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in investing in the stock market. Can you help me?",
        "Salesman: Of course! Id be happy to assist you. Tell me more about what youre looking for.",
        "Customer: Ive had some bad experiences with financial advisors in the past. How can I trust you?",
        "Salesman: I understand your concerns. Building trust is important to me. Let me share some success stories from satisfied clients to show you my credibility.",
        "Customer: Im not sure if I can afford to invest right now. What are my options?",
        "Salesman: I completely understand your financial situation. Lets explore different investment options that align with your budget and goals.",
        "Customer: I have some specific investment preferences. Can you accommodate them?",
        "Salesman: Absolutely! Its important to tailor your investments to your preferences. Lets discuss your specific requirements in more detail.",
        "Customer: Im worried about the risks involved in investing. How can you address those concerns?",
        "Salesman: Risk is a valid concern, and its essential to address it. Lets talk about risk management strategies and how we can minimize potential risks in your investment portfolio.",
        "Customer: Ive heard about other investment opportunities. Why should I choose you?",
        "Salesman: I understand that there are many options out there. What sets us apart is our dedication to building a personal connection with our clients. Let me share some testimonials to demonstrate the value we provide.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop. Can you tell me more about the options available?",
        "Salesman: Of course! Id be happy to help you find the perfect laptop. Lets start by discussing your specific needs and preferences.",
        "Customer: Im looking for a smartphone with a great camera. What would you recommend?",
        "Salesman: I understand the importance of having a smartphone with a superior camera. Lets explore some options that meet your requirements and discuss their features in detail.",
        "Customer: Im considering upgrading my current software. Can you explain the benefits of the latest version?",
        "Salesman: Absolutely! Upgrading your software can offer various benefits, including enhanced security, improved performance, and new features. Lets delve into the specifics and determine if the latest version is the right fit for you.",
        "Customer: Im not sure which smart home device would be best for my needs. Can you provide some guidance?",
        "Salesman: Choosing the right smart home device can be overwhelming, but dont worry, Im here to assist you. Lets explore your requirements and preferences to find the perfect match for your needs.",
        "Customer: Ive heard about the benefits of cloud storage, but Im not sure if its worth investing in. Can you explain its advantages?",
        "Salesman: Certainly! Cloud storage offers numerous advantages like easy accessibility, data backup, and seamless collaboration. Lets discuss how it can benefit you and address any concerns you may have.",
        "Customer: Im considering purchasing a new gaming console. Can you help me understand the differences between the available options?",
        "Salesman: Absolutely, selecting a gaming console can be a tough decision. Lets compare the features, performance, and game libraries of various options to find the perfect fit for your gaming preferences.",
        "Customer: Im interested in upgrading my home internet connection. Can you explain the benefits of high-speed internet?",
        "Salesman: High-speed internet can significantly enhance your online experience. Lets discuss the benefits it offers, such as faster browsing, smoother streaming, and improved productivity, to help you make an informed decision.",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health product. Can you tell me more about it?",
        "Salesman: Of course! Our health product is designed to improve overall wellness and boost energy levels. Its important to note that building rapport with our customers is a crucial step in the sales process. By establishing a connection, we can better understand your specific needs and tailor our approach to address them.",
        "Customer: Ive tried similar products in the past, but they didnt work for me. What makes yours different?",
        "Salesman: Thats a valid concern. Building rapport allows us to have an open and honest conversation. By actively listening to your previous experiences and demonstrating empathy, we can understand your pain points and challenges better. This way, we can recommend the most suitable solution based on your unique needs.",
        "Customer: Im hesitant to try new products. How can you assure me that yours is reliable?",
        "Salesman: Building rapport is essential for establishing trust. By developing a positive and genuine connection, we aim to gain your confidence in our product and company. We genuinely care about your success and want to ensure that the product we recommend is reliable and meets your expectations.",
        "Customer: Ive heard mixed reviews about your company. Why should I choose you over your competitors?",
        "Salesman: Building rapport allows us to differentiate ourselves from competitors. By establishing a personal connection, we aim to create a memorable experience. Our focus on understanding your needs and providing exceptional service sets us apart. We want to make you feel understood and valued, making your decision to choose us easier.",
        "Customer: Im not sure if Ill need more products in the future. Is this a one-time purchase?",
        "Salesman: Building rapport is an ongoing process. We understand that your needs may change over time, and we are committed to maintaining a long-term relationship with you. By staying in touch, providing relevant information, and showing continued interest, we can provide support whenever you may require additional products.",
        "Customer: Ive had a negative experience with a previous salesperson. How can I trust you?",
        "Salesman: Building rapport is all about creating a harmonious relationship based on trust and understanding. We aim to differentiate ourselves by showing genuine care and interest in your well-being. We want to rebuild your trust by providing a positive experience and addressing any concerns you may have.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new smartphone. Can you tell me more about the latest models?",
        "Salesman: Of course! Id be happy to help. Can you share your preferences and requirements for a smartphone?",
        "Customer: Im looking for a laptop that is lightweight and has a long battery life. Any recommendations?",
        "Salesman: Absolutely! I can suggest a few options that meet your criteria. May I ask what specific tasks youll be using the laptop for?",
        "Customer: Im considering upgrading my internet plan. What are the benefits of the higher speed packages?",
        "Salesman: Great question! With the higher speed packages, youll experience faster browsing, smoother video streaming, and improved online gaming. Can you tell me more about your internet usage needs?",
        "Customer: Im in the market for a new camera. What features should I look for to capture high-quality photos?",
        "Salesman: I can help you with that! Some key features to consider are the sensor size, lens quality, and manual controls. Can you share more about the type of photography you enjoy?",
        "Customer: Im interested in upgrading my home theater system. What are the benefits of a surround sound setup?",
        "Salesman: Thats a great choice! A surround sound setup enhances your viewing experience by providing immersive audio. Would you like me to explain the different types of surround sound systems available?",
        "Customer: Im in need of a new printer for my home office. What are the advantages of a wireless printer?",
        "Salesman: Absolutely! A wireless printer offers convenience and flexibility as you can print from multiple devices without the need for cables. Can you tell me more about your printing needs?",
        "Customer: Im considering investing in a new gaming console. What are the advantages of the latest models?",
        "Salesman: Thats an exciting choice! The latest gaming consoles offer advanced graphics, immersive gameplay, and a wide range of exclusive titles. Can you share more about the type of games you enjoy playing?",
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in learning more about your health products.",
        "Salesman: Great! Im here to help. What specific health concerns do you have?",
        "Customer: Ive been experiencing digestive issues lately. Can you recommend any supplements?",
        "Salesman: Absolutely. Its important to understand your needs. Can you tell me more about your symptoms and any dietary restrictions you have?",
        "Customer: Im looking for a fitness program that suits my busy schedule. Any recommendations?",
        "Salesman: Of course. Understanding your lifestyle is crucial. Can you tell me more about your daily routine and how much time you can dedicate to exercise?",
        "Customer: Im interested in improving my sleep quality. What products do you have?",
        "Salesman: Certainly. Lets discuss your sleep patterns and any factors that might be affecting your sleep. Do you have any specific concerns or preferences?",
        "Customer: Im trying to lose weight, but Im struggling. Can you suggest any strategies?",
        "Salesman: Sure. Understanding your current diet and exercise habits is important. Can you tell me more about your daily calorie intake and physical activity level?",
        "Customer: Im looking for natural remedies to manage stress. What do you recommend?",
        "Salesman: I understand. Stress management is crucial for overall well-being. Can you tell me more about your stress triggers and any techniques you have tried in the past?",
        "Customer: I want to improve my immune system. Are there any supplements you suggest?",
        "Salesman: Absolutely. Lets discuss your lifestyle and any specific concerns you have about your immune health. Have you tried any immune-boosting supplements before?",
        "Customer: Im interested in maintaining my heart health. What products do you have?",
        "Salesman: Certainly. Lets talk about your current lifestyle habits and any family history of heart disease. Are there any specific heart health goals you have in mind?",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a new laptop.",
        "Salesman: Great! Id be happy to assist you. What specific features are you looking for in a laptop?",
        "Customer: I need a laptop with a fast processor and a large amount of storage.",
        "Salesman: Understood. Speed and storage are definitely important factors. Can you tell me more about what youll be using the laptop for?",
        "Customer: Ill mainly be using it for graphic design work and video editing.",
        "Salesman: Thats great to know. Graphic design and video editing require powerful hardware. Our laptops with high-performance processors and ample storage would be a perfect fit for your needs.",
        "Customer: Ive heard good things about your brand, but Im not sure if its worth the price.",
        "Salesman: I completely understand your concerns. Our brand focuses on delivering top-notch quality and performance. Let me explain the additional benefits and value youll get with our laptops compared to other brands.",
        "Customer: Im also considering a few other options. What makes your laptops stand out?",
        "Salesman: Great question. In addition to the powerful hardware, our laptops come with a sleek design, exceptional durability, and excellent customer support. We also offer customized software for graphic design and video editing, optimizing your workflow and enhancing your productivity.",
        "Customer: Im impressed with what youve told me so far. Can you provide some testimonials from other graphic designers who have used your laptops?",
        "Salesman: Absolutely. We have a collection of testimonials from satisfied customers who are graphic designers. I can send them to you along with more detailed specifications and pricing options. Would you like me to email them to you?",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health supplements. Can you tell me more about them?",
        "Salesman: Of course! Our health supplements are carefully formulated to meet the specific needs of our customers. We prioritize natural ingredients and rigorous testing to ensure their effectiveness. How can I assist you further?",
        "Customer: Ive been struggling with low energy levels lately. Can your supplements help with that?",
        "Salesman: Absolutely! Our energy-boosting supplements are designed to increase vitality and combat fatigue. They contain a blend of essential nutrients and herbal extracts known to enhance energy levels naturally. Let me provide you with more details.",
        "Customer: Ive tried numerous products in the past but havent found anything that works for my joint pain. Can you recommend something?",
        "Salesman: I understand your concerns. Our joint support supplements have received positive feedback from customers experiencing similar issues. They contain key ingredients known to reduce inflammation and improve joint mobility. Would you like me to share some success stories?",
        "Customer: Im hesitant to try new products. How can I be sure that your supplements are safe and effective?",
        "Salesman: Valid concern! We prioritize safety and quality in our products. All our supplements undergo rigorous testing and adhere to strict quality standards. Additionally, we offer a satisfaction guarantee to ensure your peace of mind. Let me provide more information on our testing process.",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in your health insurance plans.",
        "Salesman: Great! Im glad you reached out. How can I assist you with finding the right plan?",
        "Customer: Im looking for a plan that covers pre-existing conditions. Can you help with that?",
        "Salesman: Absolutely! Understanding your specific needs is important to find the right plan. Could you please share more details about your pre-existing conditions?",
        "Customer: Ive had asthma for several years. I need a plan that provides adequate coverage for my condition.",
        "Salesman: Thank you for sharing that information. I understand how important it is to have comprehensive coverage for your asthma. Our health insurance plans have options specifically designed to address pre-existing conditions like yours.",
        "Customer: Thats reassuring. Can you explain how the coverage for pre-existing conditions works in more detail?",
        "Salesman: Of course! With our health insurance plans, coverage for pre-existing conditions typically kicks in after a waiting period. During that time, youll have access to other benefits, and once the waiting period is over, your coverage for asthma will be fully activated.",
        "Customer: That sounds fair. I appreciate your help in finding a plan that suits my needs.",
        "Salesman: Youre welcome! Its my pleasure to assist you. Building a rapport and understanding your unique requirements is important to me. Is there anything else I can help you with?",
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im looking for a financial advisor to help me with my investments.",
        "Salesman: Hello! Im glad you reached out. My name is John, and I would be happy to assist you. Can you tell me a bit more about your investment goals and what youre looking to achieve?",
        "Customer: Im interested in diversifying my portfolio and maximizing my returns.",
        "Salesman: Thats great to hear! Diversification is essential for managing risk and maximizing potential returns. I have extensive experience in creating diversified investment portfolios tailored to individual goals. Lets discuss your risk tolerance and time horizon to determine the best strategy for you.",
        "Customer: Ive had some bad experiences with previous financial advisors. I want someone I can trust.",
        "Salesman: I completely understand your concern. Building trust is a crucial aspect of my approach. I prioritize transparency and open communication with my clients. I want to create a relationship based on trust, where you feel comfortable discussing your financial goals and concerns. Together, we can work towards achieving your objectives.",
        "Customer: Im not sure if I should invest in stocks or bonds. What do you recommend?",
        "Salesman: Thats a great question, and its important to consider your individual circumstances. Lets dive deeper into your risk tolerance, investment timeframe, and financial objectives to determine the best asset allocation for you. Well explore the potential benefits and risks of both stocks and bonds, and together we can decide on an investment strategy that aligns with your goals.",
        "Customer: Im worried about the current market volatility. How can you help me navigate it?",
        "Salesman: Market volatility can be unsettling, but it also presents opportunities. As your financial advisor, I will closely monitor market trends and provide you with timely information and insights. By staying informed and adjusting our investment strategy if needed, we can navigate the volatility with a focus on your long-term goals. Im here to guide you and ensure that we make informed decisions together.",
        "Customer: Ive heard about other investment options like real estate and cryptocurrencies. Should I consider those?",
        "Salesman: Real estate and cryptocurrencies can be viable investment options, but they come with their own risks and considerations. Lets discuss your risk profile, investment timeframe, and personal preferences to determine if these alternative investments align with your goals. Its important to weigh the potential rewards against the risks before making any investment decisions.",
        "Customer: I appreciate your time and expertise. How do we proceed from here?",
        "Salesman: Thank you for your kind words. To proceed, I suggest we schedule a meeting to further discuss your financial goals and create a personalized investment plan. Ill gather more information about your financial situation, risk tolerance, and time horizon. Well then work together to develop a comprehensive strategy that aligns with your objectives. Does that sound good to you?",
        "Customer: Im still considering my options. Can I contact you later if I have more questions?",
        "Salesman: Absolutely! Im here to help you make informed decisions. Feel free to reach out to me whenever you have additional questions or need further clarification. Im committed to providing ongoing support and guidance throughout your investment journey.",
        null,
        null,
        null,
        null
    ],
    [
        "Customer: Hi, Im interested in purchasing a fitness tracker. Can you help me choose the right one?",
        "Salesman: Of course! Id be happy to assist you. May I ask what features are most important to you in a fitness tracker?",
        "Customer: Ive been having trouble sleeping lately. Do you have any recommendations for sleep aids?",
        "Salesman: I understand how important quality sleep is. Before I suggest anything, may I ask about your sleep patterns and any specific concerns you have?",
        "Customer: Im looking for a natural supplement to boost my energy levels. What do you recommend?",
        "Salesman: I can definitely help you with that. Could you please tell me more about your daily routine and any dietary restrictions you may have?",
        "Customer: Ive been struggling with weight loss. Do you have any advice or products that could help?",
        "Salesman: Weight loss can be a challenging journey. Before we proceed, may I ask about your current lifestyle, dietary habits, and any specific goals you have in mind?",
        "Customer: Ive been experiencing joint pain. Are there any natural remedies yo
Download .txt
gitextract_fpungzut/

├── .github/
│   └── workflows/
│       ├── mypy_linter.yml
│       ├── pyflakes_and_flake8_and_compileall_linter.py.yml
│       └── python-publish.yml
├── .gitignore
├── .pre-commit-config.yaml
├── README.md
├── athina/
│   ├── __init__.py
│   ├── cli/
│   │   ├── __init__.py
│   │   └── cli.py
│   ├── constants/
│   │   ├── __init__.py
│   │   └── messages.py
│   ├── datasets/
│   │   ├── __init__.py
│   │   ├── conversations.json
│   │   ├── dataset.py
│   │   ├── summarization_sample.py
│   │   └── yc_query_mini.py
│   ├── errors/
│   │   ├── __init__.py
│   │   └── exceptions.py
│   ├── evals/
│   │   ├── __init__.py
│   │   ├── base_evaluator.py
│   │   ├── conversation/
│   │   │   ├── conversation_coherence/
│   │   │   │   ├── evaluator.py
│   │   │   │   └── prompt.py
│   │   │   └── conversation_resolution/
│   │   │       ├── evaluator.py
│   │   │       └── prompt.py
│   │   ├── eval_type.py
│   │   ├── function/
│   │   │   ├── __init__.py
│   │   │   ├── function_evaluator.py
│   │   │   ├── functions.py
│   │   │   └── wrapper.py
│   │   ├── grounded/
│   │   │   ├── __init__.py
│   │   │   ├── grounded_evaluator.py
│   │   │   ├── similarity.py
│   │   │   └── wrapper.py
│   │   ├── guardrails/
│   │   │   ├── correct_language/
│   │   │   │   └── evaluator.py
│   │   │   ├── detect_pii/
│   │   │   │   └── evaluator.py
│   │   │   ├── gibberish_text/
│   │   │   │   └── evaluator.py
│   │   │   ├── no_secrets_present/
│   │   │   │   └── evaluator.py
│   │   │   ├── politeness_check/
│   │   │   │   └── evaluator.py
│   │   │   ├── profanity_free/
│   │   │   │   └── evaluator.py
│   │   │   ├── reading_time/
│   │   │   │   └── evaluator.py
│   │   │   ├── restrict_to_topic/
│   │   │   │   └── evaluator.py
│   │   │   ├── sensitive_topics/
│   │   │   │   └── evaluator.py
│   │   │   ├── sfw/
│   │   │   │   └── evaluator.py
│   │   │   ├── toxic_language/
│   │   │   │   └── evaluator.py
│   │   │   └── unusual_prompt/
│   │   │       └── evaluator.py
│   │   ├── llm/
│   │   │   ├── __init__.py
│   │   │   ├── context_contains_enough_information/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── evaluator.py
│   │   │   │   └── examples.py
│   │   │   ├── custom_prompt/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── does_response_answer_query/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── evaluator.py
│   │   │   │   └── examples.py
│   │   │   ├── example.py
│   │   │   ├── faithfulness/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── evaluator.py
│   │   │   │   └── examples.py
│   │   │   ├── grading_criteria/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── groundedness/
│   │   │   │   ├── evaluator.py
│   │   │   │   └── prompt.py
│   │   │   ├── llm_evaluator.py
│   │   │   └── summary_accuracy/
│   │   │       └── evaluator.py
│   │   ├── ragas/
│   │   │   ├── __init__.py
│   │   │   ├── answer_correctness/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── answer_relevancy/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── answer_semantic_similarity/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── coherence/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── conciseness/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── context_precision/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── context_recall/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── faithfulness/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── harmfulness/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   ├── maliciousness/
│   │   │   │   ├── __init__.py
│   │   │   │   └── evaluator.py
│   │   │   └── ragas_evaluator.py
│   │   └── safety/
│   │       ├── content_moderation/
│   │       │   └── evaluator.py
│   │       ├── pii_detection/
│   │       │   └── evaluator.py
│   │       └── prompt_injection/
│   │           └── evaluator.py
│   ├── guard/
│   │   ├── exception.py
│   │   └── guard.py
│   ├── helpers/
│   │   ├── __init__.py
│   │   ├── athina_logging_helper.py
│   │   ├── config.py
│   │   ├── constants.py
│   │   ├── dataset_helper.py
│   │   ├── eval_helper.py
│   │   ├── function_eval_util.py
│   │   ├── get_evaluator.py
│   │   ├── jinja_helper.py
│   │   ├── json.py
│   │   ├── kwparser.py
│   │   ├── loader_helper.py
│   │   ├── logger.py
│   │   ├── package_helper.py
│   │   ├── run_helper.py
│   │   └── step_helper.py
│   ├── interfaces/
│   │   ├── __init__.py
│   │   ├── athina.py
│   │   ├── custom_model_config.py
│   │   ├── data.py
│   │   ├── model.py
│   │   ├── openai.py
│   │   └── result.py
│   ├── keys/
│   │   ├── __init__.py
│   │   ├── athina_api_key.py
│   │   └── openai_api_key.py
│   ├── llms/
│   │   ├── __init__.py
│   │   ├── abstract_llm_service.py
│   │   ├── litellm_service.py
│   │   ├── openai_service.py
│   │   ├── question_answerer.py
│   │   ├── question_answerer_bulk.py
│   │   ├── question_answerer_cot.py
│   │   ├── question_answerer_with_retrieval.py
│   │   └── question_generator.py
│   ├── loaders/
│   │   ├── __init__.py
│   │   ├── base_loader.py
│   │   ├── conversation_loader.py
│   │   ├── json_loader.py
│   │   ├── loader.py
│   │   ├── response_loader.py
│   │   ├── summary_loader.py
│   │   └── text_loader.py
│   ├── metrics/
│   │   ├── agreement_score.py
│   │   ├── contradiction_score.py
│   │   ├── groundedness.py
│   │   ├── hallucination_score.py
│   │   ├── metric.py
│   │   ├── metric_type.py
│   │   ├── passed.py
│   │   ├── ragas_metric.py
│   │   └── similarity_score.py
│   ├── runner/
│   │   ├── __init__.py
│   │   ├── run.py
│   │   └── run_wrapper.py
│   ├── scripts/
│   │   └── guardrails.py
│   ├── services/
│   │   └── athina_api_service.py
│   └── steps/
│       ├── __init__.py
│       ├── api.py
│       ├── base.py
│       ├── browser_use_step.py
│       ├── chain.py
│       ├── chroma_retrieval.py
│       ├── classify_text.py
│       ├── code_execution.py
│       ├── code_execution_v2.py
│       ├── conditional.py
│       ├── debug.py
│       ├── extract_entities.py
│       ├── extract_json_path.py
│       ├── iterator.py
│       ├── llm.py
│       ├── loop.py
│       ├── open_ai_assistant.py
│       ├── parse_document.py
│       ├── pinecone_retrieval.py
│       ├── qdrant_retrieval.py
│       ├── research_agent_step.py
│       ├── search.py
│       ├── spider_crawl.py
│       ├── tool_call_agent.py
│       ├── transcribe_speech_to_text.py
│       ├── transform.py
│       ├── utils/
│       │   └── metadata.py
│       └── weaviate_retrieval.py
├── examples/
│   ├── chain.ipynb
│   ├── conditional_flow.ipynb
│   ├── conversation_coherence.ipynb
│   ├── conversation_eval.ipynb
│   ├── conversation_resolution.ipynb
│   ├── custom_grading_criteria.ipynb
│   ├── dataset_creation.ipynb
│   ├── execute_node.ipynb
│   ├── groundedness.ipynb
│   ├── guard.ipynb
│   ├── guardrails.ipynb
│   ├── load_athina_data.ipynb
│   ├── question_answerer.ipynb
│   ├── ragas.ipynb
│   ├── run_custom_eval.ipynb
│   ├── run_eval.ipynb
│   ├── run_eval_llama_index.ipynb
│   ├── run_eval_suite.ipynb
│   ├── run_experiment.ipynb
│   ├── run_function_eval.ipynb
│   ├── run_single_datapoint.ipynb
│   └── text_summarization.ipynb
└── pyproject.toml
Download .txt
SYMBOL INDEX (971 symbols across 127 files)

FILE: athina/cli/cli.py
  function main (line 12) | def main():
  function init (line 93) | def init(args):
  function config (line 111) | def config(args):
  function list (line 117) | def list(args):
  function run_delegator (line 125) | def run_delegator(args):
  function run_batch (line 163) | def run_batch(
  function run_datapoint (line 180) | def run_datapoint(eval_name: str, model: str, **kwargs):

FILE: athina/constants/messages.py
  class AthinaMessages (line 1) | class AthinaMessages:

FILE: athina/datasets/dataset.py
  class DatasetRow (line 7) | class DatasetRow:
  class Dataset (line 15) | class Dataset:
    method create (line 25) | def create(
    method add_rows (line 73) | def add_rows(dataset_id: str, rows: List[DatasetRow]):
    method fetch_dataset_rows (line 93) | def fetch_dataset_rows(dataset_id: str, number_of_rows: Optional[int] ...
    method dataset_link (line 103) | def dataset_link(dataset_id: str):

FILE: athina/errors/exceptions.py
  class CustomException (line 5) | class CustomException(Exception):
    method __init__ (line 6) | def __init__(
    method __str__ (line 13) | def __str__(self):
  class NoAthinaApiKeyException (line 19) | class NoAthinaApiKeyException(CustomException):
    method __init__ (line 20) | def __init__(self, message: str = AthinaMessages.SIGN_UP_FOR_BEST_EXPE...
  class NoOpenAiApiKeyException (line 24) | class NoOpenAiApiKeyException(CustomException):
    method __init__ (line 25) | def __init__(self, message: str = AthinaMessages.NO_OPENAI_API_KEY):

FILE: athina/evals/base_evaluator.py
  class BaseEvaluator (line 17) | class BaseEvaluator(ABC):
    method name (line 22) | def name(self) -> str:
    method display_name (line 28) | def display_name(self) -> str:
    method metric_ids (line 34) | def metric_ids(self) -> List[str]:
    method required_args (line 40) | def required_args(self) -> List[str]:
    method examples (line 46) | def examples(self):
    method is_failure (line 51) | def is_failure(self, *args) -> Optional[bool]:
    method _evaluate (line 56) | def _evaluate(self, **kwargs) -> EvalResult:
    method to_config (line 60) | def to_config(self) -> Optional[Dict]:
    method _examples_str (line 64) | def _examples_str(self) -> str:
    method validate_args (line 67) | def validate_args(self, **kwargs) -> None:
    method _validate_batch_args (line 77) | def _validate_batch_args(self, data: List[DataPoint]) -> bool:
    method _log_evaluation_request (line 94) | def _log_evaluation_request(self, data) -> Optional[str]:
    method _log_evaluation_results (line 107) | def _log_evaluation_results(
    method run (line 128) | def run(self, **kwargs) -> BatchRunResult:
    method guard (line 147) | def guard(self, **kwargs):
    method _run_batch_generator_async (line 157) | def _run_batch_generator_async(
    method _run_batch_generator (line 182) | def _run_batch_generator(self, data: List[DataPoint]):
    method _log_dataset_to_athina (line 195) | def _log_dataset_to_athina(self, data: List[DataPoint]) -> Optional[str]:
    method _log_eval_results_to_athina (line 206) | def _log_eval_results_to_athina(
    method run_batch (line 233) | def run_batch(

FILE: athina/evals/conversation/conversation_coherence/evaluator.py
  class ConversationCoherence (line 13) | class ConversationCoherence(LlmEvaluator):
    method __init__ (line 20) | def __init__(self, failure_threshold: Optional[float] = None, *args, *...
    method name (line 28) | def name(self):
    method display_name (line 32) | def display_name(self):
    method metric_ids (line 36) | def metric_ids(self) -> List[str]:
    method default_model (line 40) | def default_model(self):
    method required_args (line 44) | def required_args(self):
    method examples (line 50) | def examples(self):
    method _user_message (line 53) | def _user_message(self, **kwargs) -> str:
    method is_failure (line 56) | def is_failure(self, score) -> Optional[bool]:
    method score (line 63) | def score(self, details):
    method reason (line 72) | def reason(self, details):
    method _evaluate (line 86) | def _evaluate(self, messages: List[str]) -> EvalResult:

FILE: athina/evals/conversation/conversation_resolution/evaluator.py
  class ConversationResolution (line 13) | class ConversationResolution(LlmEvaluator):
    method __init__ (line 20) | def __init__(self, failure_threshold: Optional[float] = None, *args, *...
    method name (line 28) | def name(self):
    method display_name (line 32) | def display_name(self):
    method metric_ids (line 36) | def metric_ids(self) -> List[str]:
    method default_model (line 40) | def default_model(self):
    method required_args (line 44) | def required_args(self):
    method examples (line 50) | def examples(self):
    method is_failure (line 53) | def is_failure(self, score) -> Optional[bool]:
    method _user_message (line 60) | def _user_message(self, **kwargs) -> str:
    method reason (line 63) | def reason(self, messages_with_resolution_status: List[dict]) -> str:
    method _evaluate (line 77) | def _evaluate(self, messages: List[str]) -> EvalResult:

FILE: athina/evals/eval_type.py
  class ConversationEvalTypeId (line 4) | class ConversationEvalTypeId(Enum):
  class LlmEvalTypeId (line 9) | class LlmEvalTypeId(Enum):
  class RagasEvalTypeId (line 19) | class RagasEvalTypeId(Enum):
  class FunctionEvalTypeId (line 33) | class FunctionEvalTypeId(Enum):
  class GroundedEvalTypeId (line 74) | class GroundedEvalTypeId(Enum):
  function is_llm_eval (line 79) | def is_llm_eval(evaluator_type: str) -> bool:
  function is_ragas_eval (line 83) | def is_ragas_eval(evaluator_type: str) -> bool:
  function is_function_eval (line 87) | def is_function_eval(evaluator_type: str) -> bool:
  function is_grounded_eval (line 91) | def is_grounded_eval(evaluator_type: str) -> bool:
  function is_conversation_eval (line 95) | def is_conversation_eval(evaluator_type: str) -> bool:

FILE: athina/evals/function/function_evaluator.py
  class FunctionEvaluator (line 12) | class FunctionEvaluator(BaseEvaluator):
    method _model (line 22) | def _model(self):
    method name (line 26) | def name(self):
    method display_name (line 30) | def display_name(self):
    method metric_ids (line 34) | def metric_ids(self) -> List[str]:
    method default_function_arguments (line 38) | def default_function_arguments(self):
    method required_args (line 42) | def required_args(self):
    method examples (line 46) | def examples(self):
    method validate_args (line 49) | def validate_args(self, **kwargs) -> None:
    method __init__ (line 52) | def __init__(
    method is_failure (line 69) | def is_failure(self, eval_response) -> Optional[bool]:
    method to_config (line 76) | def to_config(self) -> Optional[Dict]:
    method _evaluate (line 82) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/function/functions.py
  function _standardize_url (line 19) | def _standardize_url(url):
  function _preprocess_strings (line 35) | def _preprocess_strings(keywords, text, case_sensitive):
  function regex (line 61) | def regex(pattern, text, **kwargs):
  function contains_any (line 82) | def contains_any(keywords, text: str, case_sensitive=False, **kwargs):
  function contains_all (line 112) | def contains_all(keywords, text, case_sensitive=False, **kwargs):
  function contains (line 140) | def contains(keyword, text, case_sensitive=False, **kwargs):
  function contains_none (line 165) | def contains_none(keywords, text, case_sensitive=False, **kwargs):
  function contains_json (line 195) | def contains_json(text, **kwargs):
  function contains_email (line 239) | def contains_email(text, **kwargs):
  function is_json (line 252) | def is_json(text, **kwargs):
  function is_email (line 279) | def is_email(text, **kwargs):
  function contains_link (line 292) | def contains_link(text, **kwargs):
  function contains_valid_link (line 310) | def contains_valid_link(text, **kwargs):
  function no_invalid_links (line 346) | def no_invalid_links(text, **kwargs):
  function api_call (line 382) | def api_call(
  function equals (line 450) | def equals(expected_text, text, case_sensitive=False, **kwargs):
  function starts_with (line 474) | def starts_with(substring, text, case_sensitive=False, **kwargs):
  function ends_with (line 496) | def ends_with(substring, text, case_sensitive=False, **kwargs):
  function length_less_than (line 518) | def length_less_than(max_length, text, **kwargs):
  function length_greater_than (line 541) | def length_greater_than(min_length, text, **kwargs):
  function length_between (line 564) | def length_between(min_length, max_length, text, **kwargs):
  function one_line (line 588) | def one_line(text, **kwargs):
  function json_schema (line 604) | def json_schema(actual_json: Union[dict, str], **kwargs) -> Dict[str, Any]:
  function json_validation (line 635) | def json_validation(
  function _bandit_check (line 666) | def _bandit_check(code: str) -> None:
  function custom_code_eval (line 686) | def custom_code_eval(code, **kwargs):
  function _load_json (line 719) | def _load_json(json_data: Union[dict, str]) -> dict:
  function _get_schema (line 725) | def _get_schema(kwargs: Dict[str, Any]) -> dict:
  function _validate_json_with_schema (line 732) | def _validate_json_with_schema(json_data: dict, schema: dict) -> Tuple[b...
  function _apply_validation (line 736) | def _apply_validation(actual_json: dict, expected_json: dict, validation...
  function _validate_equals (line 758) | def _validate_equals(
  function _validate_cosine_similarity (line 776) | def _validate_cosine_similarity(
  function _validate_llm_similarity (line 790) | def _validate_llm_similarity(
  function _get_messages (line 827) | def _get_messages(validation: dict, actual_value: Any, expected_value: A...

FILE: athina/evals/function/wrapper.py
  class ContainsAny (line 6) | class ContainsAny(FunctionEvaluator):
    method __init__ (line 7) | def __init__(
  class Regex (line 27) | class Regex(FunctionEvaluator):
    method __init__ (line 28) | def __init__(
  class ContainsNone (line 46) | class ContainsNone(FunctionEvaluator):
    method __init__ (line 47) | def __init__(
  class Contains (line 70) | class Contains(FunctionEvaluator):
    method __init__ (line 71) | def __init__(
  class ContainsAll (line 94) | class ContainsAll(FunctionEvaluator):
    method __init__ (line 95) | def __init__(
  class ContainsJson (line 118) | class ContainsJson(FunctionEvaluator):
    method __init__ (line 119) | def __init__(self, display_name: Optional[str] = None):
  class ContainsEmail (line 129) | class ContainsEmail(FunctionEvaluator):
    method __init__ (line 130) | def __init__(self, display_name: Optional[str] = None):
  class IsJson (line 141) | class IsJson(FunctionEvaluator):
    method __init__ (line 142) | def __init__(self, display_name: Optional[str] = None):
  class IsEmail (line 153) | class IsEmail(FunctionEvaluator):
    method __init__ (line 154) | def __init__(self, display_name: Optional[str] = None):
  class NoInvalidLinks (line 165) | class NoInvalidLinks(FunctionEvaluator):
    method __init__ (line 166) | def __init__(self, display_name: Optional[str] = None):
  class ContainsLink (line 177) | class ContainsLink(FunctionEvaluator):
    method __init__ (line 178) | def __init__(self, display_name: Optional[str] = None):
  class ContainsValidLink (line 189) | class ContainsValidLink(FunctionEvaluator):
    method __init__ (line 190) | def __init__(self, display_name: Optional[str] = None):
  class Equals (line 201) | class Equals(FunctionEvaluator):
    method __init__ (line 202) | def __init__(
  class StartsWith (line 222) | class StartsWith(FunctionEvaluator):
    method __init__ (line 223) | def __init__(
  class EndsWith (line 246) | class EndsWith(FunctionEvaluator):
    method __init__ (line 247) | def __init__(
  class LengthLessThan (line 270) | class LengthLessThan(FunctionEvaluator):
    method __init__ (line 271) | def __init__(self, max_length: int, display_name: Optional[str] = None):
  class LengthGreaterThan (line 287) | class LengthGreaterThan(FunctionEvaluator):
    method __init__ (line 288) | def __init__(self, min_length: int, display_name: Optional[str] = None):
  class ApiCall (line 304) | class ApiCall(FunctionEvaluator):
    method __init__ (line 305) | def __init__(
  class LengthBetween (line 331) | class LengthBetween(FunctionEvaluator):
    method __init__ (line 332) | def __init__(
  class OneLine (line 352) | class OneLine(FunctionEvaluator):
    method __init__ (line 353) | def __init__(self, display_name: Optional[str] = None):
  class CustomCodeEval (line 364) | class CustomCodeEval(FunctionEvaluator):
    method __init__ (line 365) | def __init__(self, code: str, display_name: Optional[str] = None):
  class JsonSchema (line 381) | class JsonSchema(FunctionEvaluator):
    method __init__ (line 382) | def __init__(self, schema: str, display_name: Optional[str] = None):
  class JsonValidation (line 393) | class JsonValidation(FunctionEvaluator):
    method __init__ (line 394) | def __init__(self, validations=None, display_name: Optional[str] = None):

FILE: athina/evals/grounded/grounded_evaluator.py
  class GroundedEvaluator (line 12) | class GroundedEvaluator(BaseEvaluator):
    method _model (line 22) | def _model(self):
    method name (line 26) | def name(self):
    method display_name (line 30) | def display_name(self):
    method metric_ids (line 34) | def metric_ids(self) -> List[str]:
    method examples (line 38) | def examples(self):
    method __init__ (line 41) | def __init__(
    method _process_kwargs (line 53) | def _process_kwargs(self, required_args, **kwargs):
    method to_config (line 72) | def to_config(self):
    method is_failure (line 80) | def is_failure(self, score) -> Optional[bool]:
    method _evaluate (line 87) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/grounded/similarity.py
  class Comparator (line 6) | class Comparator(ABC):
    method compare (line 8) | def compare(self, string1, string2):
  class CosineSimilarity (line 12) | class CosineSimilarity(Comparator):
    method compare (line 13) | def compare(self, string1, string2):
    method _tokenize (line 27) | def _tokenize(self, string):
    method _create_combined_set (line 39) | def _create_combined_set(self, string1, string2):
    method _vectorize (line 42) | def _vectorize(self, string, combined_set):
  class NormalisedLevenshteinSimilarity (line 48) | class NormalisedLevenshteinSimilarity(Comparator):
    method compare (line 49) | def compare(self, string1, string2):
    method _normalised_levenshtein_distance (line 52) | def _normalised_levenshtein_distance(self, str1, str2):
  class JaroWincklerSimilarity (line 74) | class JaroWincklerSimilarity(Comparator):
    method compare (line 75) | def compare(self, string1, string2):
    method _jaro_winckler_similarity (line 78) | def _jaro_winckler_similarity(self, str1, str2):
  class JaccardSimilarity (line 109) | class JaccardSimilarity(Comparator):
    method compare (line 110) | def compare(self, string1, string2):
    method _jaccard_similarity (line 113) | def _jaccard_similarity(self, str1, str2):
  class SorensenDiceSimilarity (line 121) | class SorensenDiceSimilarity(Comparator):
    method compare (line 122) | def compare(self, string1, string2):
    method _sorensen_dice_similarity (line 125) | def _sorensen_dice_similarity(self, str1, str2):

FILE: athina/evals/grounded/wrapper.py
  class AnswerSimilarity (line 5) | class AnswerSimilarity(GroundedEvaluator):
    method required_args (line 8) | def required_args(self):
    method name (line 12) | def name(self):
    method __init__ (line 15) | def __init__(self, comparator: Comparator, failure_threshold: float = ...
  class ContextSimilarity (line 30) | class ContextSimilarity(GroundedEvaluator):
    method required_args (line 33) | def required_args(self):
    method name (line 37) | def name(self):
    method __init__ (line 40) | def __init__(self, comparator: Comparator, failure_threshold: float = ...

FILE: athina/evals/guardrails/correct_language/evaluator.py
  class CorrectLanguage (line 13) | class CorrectLanguage(BaseEvaluator):
    method __init__ (line 17) | def __init__(
    method name (line 35) | def name(self) -> str:
    method display_name (line 39) | def display_name(self) -> str:
    method metric_ids (line 43) | def metric_ids(self) -> List[str]:
    method required_args (line 47) | def required_args(self) -> List[str]:
    method examples (line 51) | def examples(self):
    method to_config (line 54) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 57) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 60) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/guardrails/detect_pii/evaluator.py
  class DetectPII (line 13) | class DetectPII(BaseEvaluator):
    method __init__ (line 23) | def __init__(
    method name (line 35) | def name(self) -> str:
    method display_name (line 39) | def display_name(self) -> str:
    method metric_ids (line 43) | def metric_ids(self) -> List[str]:
    method required_args (line 47) | def required_args(self) -> List[str]:
    method examples (line 51) | def examples(self):
    method to_config (line 54) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 57) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 60) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/guardrails/gibberish_text/evaluator.py
  class NotGibberishText (line 13) | class NotGibberishText(BaseEvaluator):
    method __init__ (line 17) | def __init__(
    method name (line 34) | def name(self) -> str:
    method display_name (line 38) | def display_name(self) -> str:
    method metric_ids (line 42) | def metric_ids(self) -> List[str]:
    method required_args (line 46) | def required_args(self) -> List[str]:
    method examples (line 50) | def examples(self):
    method to_config (line 53) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 56) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 59) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/guardrails/no_secrets_present/evaluator.py
  class NoSecretsPresent (line 13) | class NoSecretsPresent(BaseEvaluator):
    method __init__ (line 15) | def __init__(
    method name (line 26) | def name(self) -> str:
    method display_name (line 30) | def display_name(self) -> str:
    method metric_ids (line 34) | def metric_ids(self) -> List[str]:
    method required_args (line 38) | def required_args(self) -> List[str]:
    method examples (line 42) | def examples(self):
    method to_config (line 45) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 48) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 51) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/guardrails/politeness_check/evaluator.py
  class PolitenessCheck (line 16) | class PolitenessCheck(BaseEvaluator):
    method __init__ (line 19) | def __init__(
    method name (line 37) | def name(self) -> str:
    method display_name (line 41) | def display_name(self) -> str:
    method metric_ids (line 45) | def metric_ids(self) -> List[str]:
    method required_args (line 49) | def required_args(self) -> List[str]:
    method examples (line 53) | def examples(self):
    method to_config (line 56) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 59) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 62) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/guardrails/profanity_free/evaluator.py
  class ProfanityFree (line 13) | class ProfanityFree(BaseEvaluator):
    method __init__ (line 15) | def __init__(
    method name (line 26) | def name(self) -> str:
    method display_name (line 30) | def display_name(self) -> str:
    method metric_ids (line 34) | def metric_ids(self) -> List[str]:
    method required_args (line 38) | def required_args(self) -> List[str]:
    method examples (line 42) | def examples(self):
    method to_config (line 45) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 48) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 51) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/guardrails/reading_time/evaluator.py
  class ReadingTime (line 13) | class ReadingTime(BaseEvaluator):
    method __init__ (line 14) | def __init__(self, reading_time: float):  # Time in seconds
    method name (line 24) | def name(self) -> str:
    method display_name (line 28) | def display_name(self) -> str:
    method metric_ids (line 32) | def metric_ids(self) -> List[str]:
    method required_args (line 36) | def required_args(self) -> List[str]:
    method examples (line 40) | def examples(self):
    method to_config (line 43) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 46) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 49) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/guardrails/restrict_to_topic/evaluator.py
  class RestrictToTopic (line 16) | class RestrictToTopic(BaseEvaluator):
    method __init__ (line 20) | def __init__(
    method name (line 47) | def name(self) -> str:
    method display_name (line 51) | def display_name(self) -> str:
    method metric_ids (line 55) | def metric_ids(self) -> List[str]:
    method required_args (line 59) | def required_args(self) -> List[str]:
    method examples (line 63) | def examples(self):
    method to_config (line 66) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 69) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 72) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/guardrails/sensitive_topics/evaluator.py
  class ContainsNoSensitiveTopics (line 16) | class ContainsNoSensitiveTopics(BaseEvaluator):
    method __init__ (line 26) | def __init__(
    method name (line 48) | def name(self) -> str:
    method display_name (line 52) | def display_name(self) -> str:
    method metric_ids (line 56) | def metric_ids(self) -> List[str]:
    method required_args (line 60) | def required_args(self) -> List[str]:
    method examples (line 64) | def examples(self):
    method to_config (line 67) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 70) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 73) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/guardrails/sfw/evaluator.py
  class SafeForWorkText (line 13) | class SafeForWorkText(BaseEvaluator):
    method __init__ (line 17) | def __init__(
    method name (line 34) | def name(self) -> str:
    method display_name (line 38) | def display_name(self) -> str:
    method metric_ids (line 42) | def metric_ids(self) -> List[str]:
    method required_args (line 46) | def required_args(self) -> List[str]:
    method examples (line 50) | def examples(self):
    method to_config (line 53) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 56) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 59) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/guardrails/toxic_language/evaluator.py
  class ToxicLanguage (line 13) | class ToxicLanguage(BaseEvaluator):
    method __init__ (line 18) | def __init__(
    method name (line 37) | def name(self) -> str:
    method display_name (line 41) | def display_name(self) -> str:
    method metric_ids (line 45) | def metric_ids(self) -> List[str]:
    method required_args (line 49) | def required_args(self) -> List[str]:
    method examples (line 53) | def examples(self):
    method to_config (line 56) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 59) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 62) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/guardrails/unusual_prompt/evaluator.py
  class NotUnusualPrompt (line 16) | class NotUnusualPrompt(BaseEvaluator):
    method __init__ (line 19) | def __init__(
    method name (line 37) | def name(self) -> str:
    method display_name (line 41) | def display_name(self) -> str:
    method metric_ids (line 45) | def metric_ids(self) -> List[str]:
    method required_args (line 49) | def required_args(self) -> List[str]:
    method examples (line 53) | def examples(self):
    method to_config (line 56) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 59) | def is_failure(self, result: bool) -> bool:
    method _evaluate (line 62) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/llm/context_contains_enough_information/evaluator.py
  class ContextContainsEnoughInformation (line 8) | class ContextContainsEnoughInformation(LlmEvaluator):
    method __init__ (line 34) | def __init__(self, *args, **kwargs):
    method name (line 38) | def name(self):
    method display_name (line 42) | def display_name(self):
    method metric_ids (line 46) | def metric_ids(self) -> List[str]:
    method default_model (line 50) | def default_model(self):
    method required_args (line 54) | def required_args(self):
    method examples (line 58) | def examples(self):
    method is_failure (line 61) | def is_failure(self, result) -> Optional[bool]:
    method _user_message (line 64) | def _user_message(self, query: str, context: List[str], **kwargs) -> str:

FILE: athina/evals/llm/custom_prompt/evaluator.py
  class CustomPrompt (line 16) | class CustomPrompt(LlmEvaluator):
    method __init__ (line 29) | def __init__(
    method name (line 80) | def name(self):
    method metric_ids (line 84) | def metric_ids(self) -> List[str]:
    method display_name (line 88) | def display_name(self):
    method default_model (line 92) | def default_model(self):
    method required_args (line 96) | def required_args(self):
    method examples (line 100) | def examples(self):
    method to_config (line 103) | def to_config(self) -> Optional[Dict]:
    method is_failure (line 108) | def is_failure(self, result) -> Optional[bool]:
    method _user_message (line 111) | def _user_message(self, **kwargs) -> str:
    method _system_message (line 117) | def _system_message(self) -> str:
    method _evaluate (line 149) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/llm/does_response_answer_query/evaluator.py
  class DoesResponseAnswerQuery (line 8) | class DoesResponseAnswerQuery(LlmEvaluator):
    method __init__ (line 32) | def __init__(self, *args, **kwargs):
    method name (line 36) | def name(self):
    method display_name (line 40) | def display_name(self):
    method default_model (line 44) | def default_model(self):
    method required_args (line 48) | def required_args(self):
    method examples (line 52) | def examples(self):
    method metric_ids (line 56) | def metric_ids(self) -> List[str]:
    method is_failure (line 59) | def is_failure(self, result) -> Optional[bool]:
    method _user_message (line 62) | def _user_message(

FILE: athina/evals/llm/example.py
  class FewShotExampleInputParam (line 6) | class FewShotExampleInputParam:
    method __str__ (line 10) | def __str__(self) -> str:
  class FewShotExample (line 14) | class FewShotExample:
    method __init__ (line 26) | def __init__(
    method __str__ (line 39) | def __str__(self):

FILE: athina/evals/llm/faithfulness/evaluator.py
  class Faithfulness (line 8) | class Faithfulness(LlmEvaluator):
    method __init__ (line 34) | def __init__(self, *args, **kwargs):
    method name (line 38) | def name(self):
    method display_name (line 42) | def display_name(self):
    method metric_ids (line 46) | def metric_ids(self) -> List[str]:
    method default_model (line 50) | def default_model(self):
    method required_args (line 54) | def required_args(self):
    method examples (line 58) | def examples(self):
    method is_failure (line 61) | def is_failure(self, result) -> Optional[bool]:
    method _user_message (line 64) | def _user_message(

FILE: athina/evals/llm/grading_criteria/evaluator.py
  class GradingCriteria (line 9) | class GradingCriteria(LlmEvaluator):
    method __init__ (line 27) | def __init__(
    method name (line 41) | def name(self):
    method metric_ids (line 45) | def metric_ids(self) -> List[str]:
    method display_name (line 49) | def display_name(self):
    method default_model (line 53) | def default_model(self):
    method required_args (line 57) | def required_args(self):
    method examples (line 61) | def examples(self):
    method to_config (line 64) | def to_config(self) -> Optional[dict]:
    method is_failure (line 67) | def is_failure(self, result) -> Optional[bool]:
    method _user_message (line 70) | def _user_message(self, response, **kwargs) -> str:

FILE: athina/evals/llm/groundedness/evaluator.py
  class Groundedness (line 19) | class Groundedness(LlmEvaluator):
    method __init__ (line 22) | def __init__(self, failure_threshold: Optional[float] = None, **kwargs):
    method name (line 32) | def name(self) -> str:
    method display_name (line 36) | def display_name(self) -> str:
    method default_model (line 40) | def default_model(self) -> str:
    method metric_ids (line 44) | def metric_ids(self) -> List[str]:
    method required_args (line 48) | def required_args(self) -> List[str]:
    method examples (line 52) | def examples(self):
    method is_failure (line 55) | def is_failure(self, score) -> Optional[bool]:
    method reason (line 62) | def reason(self, unsupported_sentences: List[str]) -> str:
    method datapoint_field_annotations (line 69) | def datapoint_field_annotations(
    method _evaluate (line 97) | def _evaluate(self, **kwargs) -> EvalResult:
    method _user_message (line 157) | def _user_message(

FILE: athina/evals/llm/llm_evaluator.py
  class LlmEvaluator (line 18) | class LlmEvaluator(BaseEvaluator):
    method __init__ (line 54) | def __init__(
    method default_model (line 86) | def default_model(self):
    method __str__ (line 90) | def __str__(self):
    method _system_message (line 94) | def _system_message(self) -> str:
    method _prompt_messages (line 97) | def _prompt_messages(self, **kwargs) -> List[dict]:
    method _evaluate (line 109) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/llm/summary_accuracy/evaluator.py
  class SummaryAccuracy (line 17) | class SummaryAccuracy(LlmEvaluator):
    method __init__ (line 28) | def __init__(
    method name (line 80) | def name(self):
    method metric_ids (line 84) | def metric_ids(self) -> List[str]:
    method display_name (line 92) | def display_name(self):
    method default_model (line 96) | def default_model(self):
    method required_args (line 100) | def required_args(self):
    method examples (line 104) | def examples(self):
    method reason (line 107) | def reason(self) -> str:
    method is_failure (line 118) | def is_failure(self, metrics) -> Optional[bool]:
    method _evaluate (line 149) | def _evaluate(self, **instance) -> EvalResult:
    method _disagreement_answers (line 184) | def _disagreement_answers(self):
    method _evaluate_element (line 194) | def _evaluate_element(self, instance: SummaryDataPoint):
    method update_metric_aggregated_score (line 263) | def update_metric_aggregated_score(self, metric, label, aggr_score):
    method get_metric_aggr (line 270) | def get_metric_aggr(self, metric, label):
    method get_average_scores (line 275) | def get_average_scores(self, score_dict):
    method compute_average_scores (line 287) | def compute_average_scores(self):

FILE: athina/evals/ragas/answer_correctness/evaluator.py
  class RagasAnswerCorrectness (line 15) | class RagasAnswerCorrectness(RagasEvaluator):
    method name (line 21) | def name(self):
    method display_name (line 25) | def display_name(self):
    method metric_ids (line 29) | def metric_ids(self) -> List[str]:
    method ragas_metric (line 33) | def ragas_metric(self):
    method ragas_metric_name (line 37) | def ragas_metric_name(self):
    method default_model (line 41) | def default_model(self):
    method required_args (line 45) | def required_args(self):
    method examples (line 49) | def examples(self):
    method grade_reason (line 53) | def grade_reason(self) -> str:
    method is_failure (line 56) | def is_failure(self, score) -> Optional[bool]:
    method generate_data_to_evaluate (line 63) | def generate_data_to_evaluate(

FILE: athina/evals/ragas/answer_relevancy/evaluator.py
  class RagasAnswerRelevancy (line 15) | class RagasAnswerRelevancy(RagasEvaluator):
    method name (line 22) | def name(self):
    method display_name (line 26) | def display_name(self):
    method metric_ids (line 30) | def metric_ids(self) -> List[str]:
    method ragas_metric (line 34) | def ragas_metric(self):
    method ragas_metric_name (line 38) | def ragas_metric_name(self):
    method default_model (line 42) | def default_model(self):
    method required_args (line 46) | def required_args(self):
    method examples (line 50) | def examples(self):
    method grade_reason (line 54) | def grade_reason(self) -> str:
    method is_failure (line 57) | def is_failure(self, score) -> Optional[bool]:
    method generate_data_to_evaluate (line 64) | def generate_data_to_evaluate(self, query, context, response, **kwargs...

FILE: athina/evals/ragas/answer_semantic_similarity/evaluator.py
  class RagasAnswerSemanticSimilarity (line 14) | class RagasAnswerSemanticSimilarity(RagasEvaluator):
    method name (line 20) | def name(self):
    method display_name (line 24) | def display_name(self):
    method metric_ids (line 28) | def metric_ids(self) -> List[str]:
    method ragas_metric (line 32) | def ragas_metric(self):
    method ragas_metric_name (line 36) | def ragas_metric_name(self):
    method default_model (line 40) | def default_model(self):
    method required_args (line 44) | def required_args(self):
    method examples (line 48) | def examples(self):
    method grade_reason (line 52) | def grade_reason(self) -> str:
    method is_failure (line 55) | def is_failure(self, score) -> Optional[bool]:
    method generate_data_to_evaluate (line 62) | def generate_data_to_evaluate(self, response, expected_response, **kwa...

FILE: athina/evals/ragas/coherence/evaluator.py
  class RagasCoherence (line 14) | class RagasCoherence(RagasEvaluator):
    method name (line 20) | def name(self):
    method display_name (line 24) | def display_name(self):
    method metric_ids (line 28) | def metric_ids(self) -> List[str]:
    method ragas_metric (line 32) | def ragas_metric(self):
    method ragas_metric_name (line 40) | def ragas_metric_name(self):
    method default_model (line 44) | def default_model(self):
    method required_args (line 48) | def required_args(self):
    method examples (line 52) | def examples(self):
    method grade_reason (line 56) | def grade_reason(self) -> str:
    method is_failure (line 59) | def is_failure(self, score) -> Optional[bool]:
    method generate_data_to_evaluate (line 66) | def generate_data_to_evaluate(self, response, **kwargs) -> dict:

FILE: athina/evals/ragas/conciseness/evaluator.py
  class RagasConciseness (line 14) | class RagasConciseness(RagasEvaluator):
    method name (line 20) | def name(self):
    method display_name (line 24) | def display_name(self):
    method metric_ids (line 28) | def metric_ids(self) -> List[str]:
    method ragas_metric (line 32) | def ragas_metric(self):
    method ragas_metric_name (line 40) | def ragas_metric_name(self):
    method default_model (line 44) | def default_model(self):
    method required_args (line 48) | def required_args(self):
    method examples (line 52) | def examples(self):
    method grade_reason (line 56) | def grade_reason(self) -> str:
    method is_failure (line 59) | def is_failure(self, score) -> Optional[bool]:
    method generate_data_to_evaluate (line 66) | def generate_data_to_evaluate(self, response, **kwargs) -> dict:

FILE: athina/evals/ragas/context_precision/evaluator.py
  class RagasContextPrecision (line 14) | class RagasContextPrecision(RagasEvaluator):
    method name (line 22) | def name(self):
    method display_name (line 26) | def display_name(self):
    method metric_ids (line 30) | def metric_ids(self) -> List[str]:
    method ragas_metric (line 34) | def ragas_metric(self):
    method ragas_metric_name (line 38) | def ragas_metric_name(self):
    method default_model (line 42) | def default_model(self):
    method required_args (line 46) | def required_args(self):
    method examples (line 50) | def examples(self):
    method grade_reason (line 54) | def grade_reason(self) -> str:
    method is_failure (line 57) | def is_failure(self, score) -> Optional[bool]:
    method generate_data_to_evaluate (line 64) | def generate_data_to_evaluate(

FILE: athina/evals/ragas/context_recall/evaluator.py
  class RagasContextRecall (line 14) | class RagasContextRecall(RagasEvaluator):
    method name (line 20) | def name(self):
    method display_name (line 24) | def display_name(self):
    method metric_ids (line 28) | def metric_ids(self) -> List[str]:
    method ragas_metric (line 32) | def ragas_metric(self):
    method ragas_metric_name (line 36) | def ragas_metric_name(self):
    method default_model (line 40) | def default_model(self):
    method required_args (line 44) | def required_args(self):
    method examples (line 48) | def examples(self):
    method grade_reason (line 52) | def grade_reason(self) -> str:
    method is_failure (line 55) | def is_failure(self, score) -> Optional[bool]:
    method generate_data_to_evaluate (line 62) | def generate_data_to_evaluate(

FILE: athina/evals/ragas/faithfulness/evaluator.py
  class RagasFaithfulness (line 14) | class RagasFaithfulness(RagasEvaluator):
    method name (line 20) | def name(self):
    method display_name (line 24) | def display_name(self):
    method metric_ids (line 28) | def metric_ids(self) -> List[str]:
    method ragas_metric (line 32) | def ragas_metric(self):
    method ragas_metric_name (line 36) | def ragas_metric_name(self):
    method default_model (line 40) | def default_model(self):
    method required_args (line 44) | def required_args(self):
    method examples (line 48) | def examples(self):
    method grade_reason (line 52) | def grade_reason(self) -> str:
    method is_failure (line 55) | def is_failure(self, score) -> Optional[bool]:
    method generate_data_to_evaluate (line 62) | def generate_data_to_evaluate(self, context, query, response, **kwargs...

FILE: athina/evals/ragas/harmfulness/evaluator.py
  class RagasHarmfulness (line 14) | class RagasHarmfulness(RagasEvaluator):
    method name (line 20) | def name(self):
    method display_name (line 24) | def display_name(self):
    method metric_ids (line 28) | def metric_ids(self) -> List[str]:
    method ragas_metric (line 32) | def ragas_metric(self):
    method ragas_metric_name (line 40) | def ragas_metric_name(self):
    method default_model (line 44) | def default_model(self):
    method required_args (line 48) | def required_args(self):
    method examples (line 52) | def examples(self):
    method grade_reason (line 56) | def grade_reason(self) -> str:
    method is_failure (line 59) | def is_failure(self, score) -> Optional[bool]:
    method generate_data_to_evaluate (line 66) | def generate_data_to_evaluate(self, response, **kwargs) -> dict:

FILE: athina/evals/ragas/maliciousness/evaluator.py
  class RagasMaliciousness (line 14) | class RagasMaliciousness(RagasEvaluator):
    method name (line 20) | def name(self):
    method display_name (line 24) | def display_name(self):
    method metric_ids (line 28) | def metric_ids(self) -> List[str]:
    method ragas_metric (line 32) | def ragas_metric(self):
    method ragas_metric_name (line 40) | def ragas_metric_name(self):
    method default_model (line 44) | def default_model(self):
    method required_args (line 48) | def required_args(self):
    method examples (line 52) | def examples(self):
    method grade_reason (line 56) | def grade_reason(self) -> str:
    method is_failure (line 59) | def is_failure(self, score) -> Optional[bool]:
    method generate_data_to_evaluate (line 66) | def generate_data_to_evaluate(self, response, **kwargs) -> dict:

FILE: athina/evals/ragas/ragas_evaluator.py
  class RagasEvaluator (line 18) | class RagasEvaluator(BaseEvaluator):
    method __init__ (line 26) | def __init__(
    method default_model (line 43) | def default_model(self) -> str:
    method generate_data_to_evaluate (line 46) | def generate_data_to_evaluate(self, **kwargs):
    method ragas_metric (line 50) | def ragas_metric(self) -> Any:
    method grade_reason (line 54) | def grade_reason(self) -> str:
    method _get_model (line 57) | def _get_model(self):
    method _evaluate (line 84) | def _evaluate(self, **kwargs) -> EvalResult:

FILE: athina/evals/safety/content_moderation/evaluator.py
  class OpenAiContentModeration (line 12) | class OpenAiContentModeration(BaseEvaluator):
    method name (line 14) | def name(self):
    method display_name (line 18) | def display_name(self):
    method metric_ids (line 22) | def metric_ids(self) -> List[str]:
    method required_args (line 26) | def required_args(self):
    method examples (line 30) | def examples(self):
    method __init__ (line 33) | def __init__(self, open_ai_api_key: Optional[str] = None):
    method is_failure (line 41) | def is_failure(self, content_moderation_response: dict) -> Optional[bo...
    method get_reason (line 49) | def get_reason(self, content_moderation_response: dict) -> Optional[str]:
    method _evaluate (line 64) | def _evaluate(self, **kwargs) -> EvalResult:
    method get_content_moderation_result (line 126) | def get_content_moderation_result(self, text: str):

FILE: athina/evals/safety/pii_detection/evaluator.py
  class PiiDetection (line 9) | class PiiDetection(BaseEvaluator):
    method _model (line 11) | def _model(self):
    method name (line 15) | def name(self):
    method display_name (line 19) | def display_name(self):
    method metric_ids (line 23) | def metric_ids(self) -> List[str]:
    method default_function_arguments (line 27) | def default_function_arguments(self):
    method required_args (line 31) | def required_args(self):
    method examples (line 35) | def examples(self):
    method is_failure (line 38) | def is_failure(self, detected_pii_response) -> Optional[bool]:
    method _evaluate (line 41) | def _evaluate(self, **kwargs) -> EvalResult:
    method detect_pii (line 87) | def detect_pii(self, text: str):

FILE: athina/evals/safety/prompt_injection/evaluator.py
  class PromptInjection (line 9) | class PromptInjection(BaseEvaluator):
    method __init__ (line 22) | def __init__(self, failure_threshold: float = 0.8, **kwargs):
    method _model (line 27) | def _model(self):
    method name (line 31) | def name(self):
    method display_name (line 35) | def display_name(self):
    method metric_ids (line 39) | def metric_ids(self) -> List[str]:
    method default_function_arguments (line 43) | def default_function_arguments(self):
    method required_args (line 47) | def required_args(self):
    method examples (line 51) | def examples(self):
    method reason (line 54) | def reason(self, check_response: List[dict]) -> str:
    method is_failure (line 67) | def is_failure(self, check_response: List[dict]) -> bool:
    method _evaluate (line 78) | def _evaluate(self, **kwargs) -> EvalResult:
    method detect_prompt_injection (line 115) | def detect_prompt_injection(self, text: str):

FILE: athina/guard/exception.py
  class AthinaGuardException (line 1) | class AthinaGuardException(Exception):
    method __init__ (line 2) | def __init__(self, message):

FILE: athina/guard/guard.py
  function guard (line 8) | def guard(suite: List[BaseEvaluator], **kwargs):

FILE: athina/helpers/athina_logging_helper.py
  class AthinaLoggingHelper (line 17) | class AthinaLoggingHelper:
    method log_eval_performance_report (line 19) | def log_eval_performance_report(*args, **kwargs):
    method log_experiment (line 27) | def log_experiment(*args, **kwargs):
    method create_eval_request (line 35) | def create_eval_request(eval_name: str, request_data: dict, request_ty...
    method log_eval_results (line 58) | def log_eval_results(
    method log_eval_results_with_config (line 134) | def log_eval_results_with_config(eval_results_with_config: dict, datas...

FILE: athina/helpers/config.py
  class ConfigHelper (line 6) | class ConfigHelper:
    method load_config (line 8) | def load_config():
    method load_config_field (line 20) | def load_config_field(field: str):
    method load_openai_api_key (line 28) | def load_openai_api_key():
    method load_athina_api_key (line 32) | def load_athina_api_key():
    method load_llm_engine (line 36) | def load_llm_engine():
    method save_config (line 40) | def save_config(config_data):
    method is_set (line 45) | def is_set():

FILE: athina/helpers/dataset_helper.py
  function generate_unique_dataset_name (line 6) | def generate_unique_dataset_name(prefix="Dataset-", separator="-"):
  function generate_eval_display_name (line 26) | def generate_eval_display_name(eval_display_name: str) -> str:

FILE: athina/helpers/eval_helper.py
  class EvalHelper (line 4) | class EvalHelper:
    method is_supported (line 6) | def is_supported(eval_name: str):

FILE: athina/helpers/function_eval_util.py
  function get_named_parameters (line 4) | def get_named_parameters(func):
  function get_named_non_default_parameters (line 17) | def get_named_non_default_parameters(func):

FILE: athina/helpers/get_evaluator.py
  function get_evaluator (line 149) | def get_evaluator(evaluator_type):
  function get_comparator (line 167) | def get_comparator(comparator_name):
  function create_grounded_evaluator (line 183) | def create_grounded_evaluator(grounded_eval_name, comparator, failure_th...

FILE: athina/helpers/jinja_helper.py
  class PreserveUndefined (line 4) | class PreserveUndefined(Undefined):
    method __str__ (line 5) | def __str__(self):

FILE: athina/helpers/json.py
  class JsonHelper (line 8) | class JsonHelper:
    method _extract_json (line 10) | def _extract_json(data_string: str) -> str:
    method _load_json_from_text (line 24) | def _load_json_from_text(text):
    method extract_json_from_text (line 35) | def extract_json_from_text(text):
  function validate_json (line 44) | def validate_json(json_data, schema):
  function extract_json_path (line 52) | def extract_json_path(json_data, json_path):
  class JsonExtractor (line 64) | class JsonExtractor:
    method extract_first_json_entity (line 66) | def extract_first_json_entity(text: str) -> Optional[Any]:

FILE: athina/helpers/kwparser.py
  class KeyValueAction (line 4) | class KeyValueAction(argparse.Action):
    method __call__ (line 7) | def __call__(self, parser, namespace, values, option_string=None):

FILE: athina/helpers/loader_helper.py
  class LoaderHelper (line 5) | class LoaderHelper:
    method get_loader (line 9) | def get_loader(eval_name, loader_name: Optional[str] = None):
    method load (line 26) | def load(eval_name, format, **kwargs):

FILE: athina/helpers/logger.py
  class Singleton (line 6) | class Singleton(type):
    method __call__ (line 9) | def __call__(cls, *args, **kwargs):
  class AppLogger (line 15) | class AppLogger(logging.Logger, metaclass=Singleton):
    method __init__ (line 20) | def __init__(self, name, level=logging.NOTSET):
    method args_str (line 39) | def args_str(self, *args):
    method debug (line 42) | def debug(self, message, *args):
    method info (line 46) | def info(self, message, *args):
    method success (line 50) | def success(self, message, *args):
    method error (line 55) | def error(self, message, *args):
    method warning (line 59) | def warning(self, message, *args):
    method log_with_color (line 63) | def log_with_color(self, level, message, color, *args, **kwargs):
    method to_file (line 79) | def to_file(self, output: str, log_file):
    method to_file_and_console (line 84) | def to_file_and_console(self, output: str, log_file=None, color=None):
  function setup_logger (line 93) | def setup_logger():

FILE: athina/helpers/package_helper.py
  class PackageHelper (line 4) | class PackageHelper:
    method get_package_version (line 6) | def get_package_version(package_name):

FILE: athina/helpers/run_helper.py
  class RunHelper (line 11) | class RunHelper:
    method all_evals (line 13) | def all_evals():
    method get_evaluator (line 30) | def get_evaluator(eval_name, **kwargs):
    method validate_eval_args (line 43) | def validate_eval_args(eval_name, model, kwargs):
    method _set_keys (line 80) | def _set_keys():
    method run_eval (line 90) | def run_eval(eval_name, model, kwargs):
    method run_eval_on_batch (line 107) | def run_eval_on_batch(eval_name, model, format, **kwargs):
    method run_eval_on_dataset (line 120) | def run_eval_on_dataset(eval_name, model, dataset, **kwargs):

FILE: athina/helpers/step_helper.py
  class StepHelper (line 3) | class StepHelper:
    method prepare_input_data (line 6) | def prepare_input_data(data):

FILE: athina/interfaces/athina.py
  class AthinaInference (line 10) | class AthinaInference:
  class AthinaFilters (line 23) | class AthinaFilters:
    method to_dict (line 30) | def to_dict(self) -> str:
  class AthinaEvalRunResult (line 34) | class AthinaEvalRunResult(TypedDict):
  class AthinaEvalResult (line 41) | class AthinaEvalResult(TypedDict):
  class AthinaEvalRequestSource (line 53) | class AthinaEvalRequestSource(Enum):
  class AthinaEvalRequestCreateRequest (line 59) | class AthinaEvalRequestCreateRequest(TypedDict):
  class AthinaEvalResultCreateRequest (line 66) | class AthinaEvalResultCreateRequest(TypedDict):
  class AthinaJobType (line 86) | class AthinaJobType(Enum):
  class AthinaInterfaceHelper (line 90) | class AthinaInterfaceHelper:
    method eval_result_to_create_request (line 92) | def eval_result_to_create_request(
  class AthinaExperiment (line 124) | class AthinaExperiment(TypedDict):

FILE: athina/interfaces/custom_model_config.py
  class CustomModelConfig (line 5) | class CustomModelConfig(BaseModel):

FILE: athina/interfaces/data.py
  class DataPoint (line 4) | class DataPoint(TypedDict):

FILE: athina/interfaces/model.py
  class Model (line 4) | class Model(Enum):
    method is_supported (line 45) | def is_supported(model_name: str) -> bool:
    method supports_json_mode (line 52) | def supports_json_mode(model_name: str) -> bool:

FILE: athina/interfaces/openai.py
  class OpenAiPromptMessage (line 4) | class OpenAiPromptMessage(TypedDict):

FILE: athina/interfaces/result.py
  class EvalResultMetric (line 8) | class EvalResultMetric(TypedDict):
  class DatapointFieldAnnotation (line 17) | class DatapointFieldAnnotation(TypedDict):
  class EvalResult (line 28) | class EvalResult(TypedDict):
  class BatchRunResult (line 46) | class BatchRunResult:
    method to_df (line 54) | def to_df(self):
  class EvalPerformanceReport (line 97) | class EvalPerformanceReport(TypedDict):
  class GuardResult (line 114) | class GuardResult(BaseModel):

FILE: athina/keys/athina_api_key.py
  class AthinaApiKey (line 4) | class AthinaApiKey(ABC):
    method set_key (line 8) | def set_key(cls, api_key):
    method get_key (line 12) | def get_key(cls):
    method is_set (line 16) | def is_set(cls):

FILE: athina/keys/openai_api_key.py
  class OpenAiApiKey (line 4) | class OpenAiApiKey(ABC):
    method set_key (line 8) | def set_key(cls, api_key):
    method get_key (line 12) | def get_key(cls):

FILE: athina/llms/abstract_llm_service.py
  class AbstractLlmService (line 4) | class AbstractLlmService(ABC):
    method embeddings (line 10) | def embeddings(self, text: str) -> list:
    method chat_completion (line 18) | def chat_completion(self, messages, model, **kwargs):
    method chat_completion_json (line 26) | def chat_completion_json(self, messages, model, **kwargs) -> str:
    method json_completion (line 34) | def json_completion(self, messages, model, **kwargs):
    method chat_stream_completion (line 42) | async def chat_stream_completion(self, messages, model, **kwargs):

FILE: athina/llms/litellm_service.py
  class LitellmService (line 12) | class LitellmService(AbstractLlmService):
    method __new__ (line 16) | def __new__(cls, *args, **kwargs):
    method __init__ (line 21) | def __init__(self, api_key):
    method embeddings (line 24) | def embeddings(self, text: str) -> list:
    method chat_completion (line 31) | def chat_completion(
    method chat_completion_json (line 60) | def chat_completion_json(
    method json_completion (line 65) | def json_completion(
    method chat_stream_completion (line 70) | async def chat_stream_completion(

FILE: athina/llms/openai_service.py
  class OpenAiService (line 16) | class OpenAiService(AbstractLlmService):
    method __new__ (line 19) | def __new__(cls):
    method __init__ (line 24) | def __init__(self):
    method embeddings (line 30) | def embeddings(self, text: str, model: str) -> list:
    method _process_response (line 43) | def _process_response(self, response, start_time, model):
    method chat_completion (line 105) | def chat_completion(self, messages, model, **kwargs) -> str:
    method chat_completion_json (line 122) | def chat_completion_json(self, messages, model, **kwargs) -> str:
    method chat_stream_completion (line 141) | async def chat_stream_completion(self, messages, model, **kwargs):
    method json_completion (line 156) | def json_completion(self, messages, model, **kwargs):

FILE: athina/llms/question_answerer.py
  class QuestionAnswererResponse (line 5) | class QuestionAnswererResponse(TypedDict):
  class QuestionAnswerer (line 10) | class QuestionAnswerer(ABC):
    method answer (line 13) | def answer(self, questions: List[str], context: str) -> QuestionAnswer...

FILE: athina/llms/question_answerer_bulk.py
  class QuestionAnswererBulk (line 7) | class QuestionAnswererBulk(QuestionAnswerer):
    method __init__ (line 34) | def __init__(
    method answer (line 48) | def answer(self, questions: List[str], context: str) -> Tuple[dict, di...

FILE: athina/llms/question_answerer_cot.py
  class QuestionAnswererChainOfThought (line 7) | class QuestionAnswererChainOfThought(QuestionAnswerer):
    method __init__ (line 33) | def __init__(
    method answer (line 48) | def answer(self, questions: List[str], context: str) -> Tuple[dict, di...
    method answer_question (line 68) | def answer_question(self, question: str, context: str) -> QuestionAnsw...

FILE: athina/llms/question_answerer_with_retrieval.py
  class ContextFinderStrategy (line 11) | class ContextFinderStrategy(ABC):
    method find_relevant_context_index (line 14) | def find_relevant_context_index(self, question, context_chunks):
  class EmbeddingBasedContextFinder (line 18) | class EmbeddingBasedContextFinder(ContextFinderStrategy):
    method __init__ (line 20) | def __init__(self, preprocessed_context_embeddings):
    method cosine_similarity (line 24) | def cosine_similarity(vec_a, vec_b):
    method find_relevant_context_indices (line 38) | def find_relevant_context_indices(
    method find_relevant_context_index (line 56) | def find_relevant_context_index(self, question_embedding, context_embe...
  class QuestionAnswererWithRetrieval (line 62) | class QuestionAnswererWithRetrieval(QuestionAnswerer):
    method __init__ (line 82) | def __init__(
    method _preprocess_context (line 99) | def _preprocess_context(self, context, chunk_size):
    method _get_relevant_chunks (line 112) | def _get_relevant_chunks(self, question):
    method _answer_question (line 128) | def _answer_question(self, question) -> QuestionAnswererResponse:
    method answer (line 161) | def answer(self, questions: List[str], **kwargs) -> Tuple[dict, dict]:

FILE: athina/llms/question_generator.py
  class QuestionGenerator (line 7) | class QuestionGenerator:
    method __init__ (line 31) | def __init__(
    method generate (line 48) | def generate(self, text: str) -> List[str]:

FILE: athina/loaders/base_loader.py
  class LoadFormat (line 8) | class LoadFormat(Enum):
  class BaseLoader (line 16) | class BaseLoader(ABC):
    method processed_dataset (line 20) | def processed_dataset(self) -> List[DataPoint]:
    method raw_dataset (line 27) | def raw_dataset(self):
    method process (line 34) | def process(self) -> List[DataPoint]:
    method load (line 38) | def load(self, format: str, **kwargs) -> List[DataPoint]:
    method load_json (line 51) | def load_json(self, filename: str) -> List[DataPoint]:
    method load_dict (line 67) | def load_dict(self, data: list) -> List[DataPoint]:
    method load_athina_inferences (line 76) | def load_athina_inferences(self, data: dict) -> List[DataPoint]:

FILE: athina/loaders/conversation_loader.py
  class ConversationLoader (line 5) | class ConversationLoader:
    method __init__ (line 14) | def __init__(
    method load_athina_inferences (line 23) | def load_athina_inferences(
    method load_from_string_array (line 34) | def load_from_string_array(self, strings: List[str]):
    method load_from_openai_messages (line 45) | def load_from_openai_messages(self, messages: List[List[Dict[str, str]...

FILE: athina/loaders/json_loader.py
  class JsonLoader (line 10) | class JsonLoader(BaseLoader):
    method __init__ (line 21) | def __init__(
    method process (line 34) | def process(self) -> None:
    method load_athina_inferences (line 67) | def load_athina_inferences(

FILE: athina/loaders/loader.py
  class DataPoint (line 9) | class DataPoint(BaseDataPoint):
  class Loader (line 18) | class Loader(BaseLoader):
    method __init__ (line 31) | def __init__(
    method process (line 48) | def process(self) -> None:
    method load_athina_inferences (line 88) | def load_athina_inferences(

FILE: athina/loaders/response_loader.py
  class ResponseLoader (line 9) | class ResponseLoader(BaseLoader):
    method __init__ (line 19) | def __init__(
    method process (line 36) | def process(self) -> None:
    method load_athina_inferences (line 75) | def load_athina_inferences(

FILE: athina/loaders/summary_loader.py
  class SummaryDataPoint (line 9) | class SummaryDataPoint(DataPoint):
  class SummaryLoader (line 16) | class SummaryLoader(BaseLoader):
    method __init__ (line 27) | def __init__(
    method process (line 40) | def process(self) -> None:
    method load_athina_inferences (line 62) | def load_athina_inferences(

FILE: athina/loaders/text_loader.py
  class TextLoader (line 9) | class TextLoader(BaseLoader):
    method __init__ (line 19) | def __init__(
    method process (line 32) | def process(self) -> None:
    method load_athina_inferences (line 58) | def load_athina_inferences(

FILE: athina/metrics/agreement_score.py
  class AgreementScore (line 4) | class AgreementScore(Metric):
    method _compute_metric (line 13) | def _compute_metric(answers_src, answers_sum, questions):
    method compute (line 36) | def compute(answers_src, answers_sum, questions, n_questions):

FILE: athina/metrics/contradiction_score.py
  class ContradictionScore (line 4) | class ContradictionScore(Metric):
    method _compute_metric (line 19) | def _compute_metric(answers_src, answers_sum, questions):
    method compute (line 49) | def compute(answers_src, answers_sum, questions, n_questions):

FILE: athina/metrics/groundedness.py
  class GroundednessEvidence (line 5) | class GroundednessEvidence(TypedDict):
  class GroundednessScore (line 10) | class GroundednessScore(ABC):
    method compute (line 16) | def compute(sentences_with_evidence: List[GroundednessEvidence]):

FILE: athina/metrics/hallucination_score.py
  class HallucinationScore (line 4) | class HallucinationScore(Metric):
    method _compute_metric (line 15) | def _compute_metric(answers_src, answers_sum, questions):
    method compute (line 44) | def compute(answers_src, answers_sum, questions, n_questions):

FILE: athina/metrics/metric.py
  class Metric (line 4) | class Metric(ABC):
    method compute (line 10) | def compute(self, *args, **kwargs):

FILE: athina/metrics/metric_type.py
  class MetricType (line 13) | class MetricType(Enum):
    method get_class (line 39) | def get_class(metric_type):

FILE: athina/metrics/passed.py
  class Passed (line 5) | class Passed(Metric):
    method compute (line 11) | def compute(passed: Union[int, bool]):

FILE: athina/metrics/ragas_metric.py
  class RagasMetric (line 4) | class RagasMetric(Metric):
    method compute (line 10) | def compute(value: float):

FILE: athina/metrics/similarity_score.py
  class SimilarityScore (line 6) | class SimilarityScore(Metric):
    method compute (line 12) | def compute(similarity_score: Union[int, float, Decimal]) -> Decimal:

FILE: athina/runner/run.py
  class DataPointWithEvalResults (line 19) | class DataPointWithEvalResults(TypedDict):
  class LlmEvaluatorDescription (line 26) | class LlmEvaluatorDescription(TypedDict):
  class LlmBatchEvalResult (line 33) | class LlmBatchEvalResult(TypedDict):
  class EvalRunner (line 44) | class EvalRunner:
    method eval_results_link (line 46) | def eval_results_link(eval_request_id: str):
    method flatten_eval_results (line 50) | def flatten_eval_results(batch_eval_results) -> List:
    method _create_eval_request (line 60) | def _create_eval_request(eval_suite_name: str, data) -> Optional[str]:
    method _log_experiment (line 72) | def _log_experiment(experiment, eval_request_id: Optional[str]):
    method _log_evaluation_results (line 83) | def _log_evaluation_results(
    method to_df (line 96) | def to_df(batch_eval_results):
    method _log_eval_results_with_config (line 131) | def _log_eval_results_with_config(
    method _log_dataset_to_athina (line 159) | def _log_dataset_to_athina(data: List[DataPoint]) -> Optional[str]:
    method _fetch_dataset_rows (line 171) | def _fetch_dataset_rows(
    method run_suite (line 187) | def run_suite(

FILE: athina/runner/run_wrapper.py
  function run (line 4) | def run(evals, data=None, max_parallel_evals=5, dataset_id=None, number_...

FILE: athina/scripts/guardrails.py
  function install (line 4) | def install():

FILE: athina/services/athina_api_service.py
  class AthinaApiService (line 22) | class AthinaApiService:
    method _headers (line 24) | def _headers():
    method fetch_inferences (line 31) | def fetch_inferences(
    method log_usage (line 69) | def log_usage(eval_name: str, run_type: str):
    method log_eval_results (line 92) | def log_eval_results(
    method create_dataset (line 127) | def create_dataset(dataset: Dict):
    method fetch_dataset_rows (line 155) | def fetch_dataset_rows(dataset_id: str, number_of_rows: Optional[int] ...
    method add_dataset_rows (line 182) | def add_dataset_rows(dataset_id: str, rows: List[Dict]):
    method create_eval_request (line 220) | def create_eval_request(
    method log_eval_performance_report (line 253) | def log_eval_performance_report(
    method log_experiment (line 299) | def log_experiment(
    method log_eval_results_with_config (line 343) | def log_eval_results_with_config(eval_results_with_config: dict):

FILE: athina/steps/api.py
  function prepare_template_data (line 11) | def prepare_template_data(
  function debug_json_structure (line 26) | def debug_json_structure(body_str: str, error: json.JSONDecodeError) -> ...
  function prepare_body (line 39) | def prepare_body(
  class ApiCall (line 49) | class ApiCall(Step):
    class Config (line 71) | class Config:
    method process_binary_response (line 74) | def process_binary_response(
    method process_response (line 147) | def process_response(
    method execute_async (line 178) | async def execute_async(self, input_data: Any) -> Union[Dict[str, Any]...
    method execute (line 263) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:

FILE: athina/steps/base.py
  class StepError (line 23) | class StepError(Exception):
  class StepResult (line 29) | class StepResult(TypedDict):
  function step (line 35) | def step(func: Callable) -> Callable:
  class Step (line 58) | class Step(BaseModel):
    method to_dict (line 73) | def to_dict(self) -> Dict[str, Any]:
    method extract_input_data (line 77) | def extract_input_data(self, context: Dict[str, Any]) -> Any:
    method prepare_dict (line 94) | def prepare_dict(
    method _create_step_result (line 119) | def _create_step_result(
    method _create_jinja_env (line 148) | def _create_jinja_env(
    method run (line 161) | def run(
    method execute (line 174) | def execute(self, input_data: Any) -> Any:
    method execute_async (line 178) | async def execute_async(self, input_data: Any) -> Any:
  class Debug (line 183) | class Debug(Step):
    method run (line 193) | def run(self, context: Dict[str, Any], history: List[Dict[str, Any]]) ...
    method execute (line 200) | def execute(self, input_data: Any) -> None:
  class Fn (line 206) | class Fn(Step):
    method execute (line 216) | def execute(self, input_data: Any) -> Any:

FILE: athina/steps/browser_use_step.py
  class BrowserUseStep (line 16) | class BrowserUseStep(Step):
    method execute (line 39) | def execute(self, input_data: Any) -> StepResult:
    method _run_browser_agent (line 86) | async def _run_browser_agent(self, llm: ChatOpenAI, task: str) -> str:

FILE: athina/steps/chain.py
  class Chain (line 8) | class Chain(BaseModel):
    method run (line 20) | def run(self, inputs: Dict[str, Any]) -> "Chain":
    method get_context (line 34) | def get_context(self) -> Dict[str, Any]:
    method get_output (line 38) | def get_output(self, key: Optional[str] = None) -> Any:
    method execute (line 53) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:

FILE: athina/steps/chroma_retrieval.py
  class AuthType (line 14) | class AuthType(str, Enum):
  class ChromaRetrieval (line 20) | class ChromaRetrieval(Step):
    class Config (line 48) | class Config:
    method __init__ (line 51) | def __init__(self, *args, **kwargs):
    method execute (line 81) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:
    method close (line 124) | def close(self):

FILE: athina/steps/classify_text.py
  class ClassifyText (line 8) | class ClassifyText(Step):
    method execute (line 24) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:

FILE: athina/steps/code_execution.py
  class CodeExecution (line 11) | class CodeExecution(Step):
    method format_bandit_result (line 22) | def format_bandit_result(self, stdout: str) -> str:
    method bandit_check (line 68) | def bandit_check(self, code: str) -> Optional[str]:
    method execute (line 89) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:

FILE: athina/steps/code_execution_v2.py
  class StepResult (line 33) | class StepResult(TypedDict):
  function _serialize_variable (line 40) | def _serialize_variable(name: str, value: Any) -> Optional[str]:
  function generate_variable_capture (line 60) | def generate_variable_capture(step_name: str) -> str:
  class CodeExecutionV2 (line 89) | class CodeExecutionV2(Step):
    method __init__ (line 114) | def __init__(
    method _create_or_initialize_sandbox (line 124) | def _create_or_initialize_sandbox(self, session_id: Optional[str] = No...
    method _create_step_result (line 156) | def _create_step_result(
    method _execute_local (line 186) | def _execute_local(self, input_data: dict, start_time: float) -> StepR...
    method _prepare_input_variables (line 208) | def _prepare_input_variables(self, input_data: dict) -> list[str]:
    method _extract_exported_vars (line 227) | def _extract_exported_vars(self, stdout: str) -> dict:
    method _execute_e2b (line 245) | def _execute_e2b(self, input_data: dict, start_time: float) -> StepRes...
    method execute (line 350) | def execute(self, input_data: Any) -> StepResult:
    method _execute_e2b_stream (line 396) | async def _execute_e2b_stream(self, input_data: dict, start_time: float):
    method execute_stream (line 550) | async def execute_stream(self, input_data: Any):

FILE: athina/steps/conditional.py
  class ConditionalStep (line 7) | class ConditionalStep(Step):
    method _evaluate_condition (line 14) | def _evaluate_condition(self, condition: str, context: Dict) -> bool:
    method _execute_branch_steps (line 37) | def _execute_branch_steps(self, steps: List[Step], inputs: Dict) -> Dict:
    method execute (line 58) | def execute(self, input_data: Dict) -> Dict:

FILE: athina/steps/extract_entities.py
  class ExtractEntities (line 8) | class ExtractEntities(Step):
    method execute (line 24) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:

FILE: athina/steps/extract_json_path.py
  class ExtractJsonPath (line 8) | class ExtractJsonPath(Step):
    method execute (line 20) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:

FILE: athina/steps/iterator.py
  class Map (line 6) | class Map(Step):
    method execute (line 16) | def execute(self, input_data: Any) -> List[Any]:

FILE: athina/steps/llm.py
  class TextContent (line 18) | class TextContent(BaseModel):
  class ImageContent (line 23) | class ImageContent(BaseModel):
    method to_api_format (line 27) | def to_api_format(self):
  class PromptMessage (line 36) | class PromptMessage(BaseModel):
    method to_api_format (line 41) | def to_api_format(self) -> dict:
  class ModelOptions (line 82) | class ModelOptions(BaseModel):
    method model_dump (line 91) | def model_dump(self, *args, **kwargs):
  class ToolConfig (line 111) | class ToolConfig(BaseModel):
  class PromptTemplate (line 116) | class PromptTemplate(BaseModel):
    class Config (line 120) | class Config:
    method simple (line 124) | def simple(message: str) -> "PromptTemplate":
    method resolve (line 129) | def resolve(self, **kwargs) -> List[PromptMessage]:
  class PromptExecution (line 213) | class PromptExecution(Step):
    method __init__ (line 232) | def __init__(self, *args, **kwargs):
    class Config (line 239) | class Config:
    method simple (line 243) | def simple(
    method execute (line 258) | def execute(self, input_data: dict, **kwargs) -> str:
    method execute_async (line 346) | async def execute_async(self, input_data: dict, **kwargs) -> dict:
    method execute_stream (line 432) | async def execute_stream(self, input_data: dict, **kwargs):

FILE: athina/steps/loop.py
  class Loop (line 10) | class Loop(Step):
    method _execute_single_step (line 18) | async def _execute_single_step(self, step: Step, context: Dict) -> Dict:
    method _execute_sequence (line 28) | async def _execute_sequence(self, inputs: Dict, semaphore: asyncio.Sem...
    method _execute_loop (line 50) | async def _execute_loop(self, inputs: Dict) -> Dict:
    method execute (line 96) | def execute(self, inputs: Dict) -> Dict:

FILE: athina/steps/open_ai_assistant.py
  class OpenAiAssistant (line 9) | class OpenAiAssistant(Step):
    class Config (line 24) | class Config:
    method __init__ (line 27) | def __init__(self, assistant_id: str, openai_api_key: str, input_colum...
    method execute (line 35) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:

FILE: athina/steps/parse_document.py
  class ParseDocument (line 10) | class ParseDocument(Step):
    method execute (line 27) | def execute(self, input_data) -> Union[Dict[str, Any], None]:

FILE: athina/steps/pinecone_retrieval.py
  class PineconeRetrieval (line 13) | class PineconeRetrieval(Step):
    method __init__ (line 41) | def __init__(self, *args, **kwargs):
    class Config (line 70) | class Config:
    method execute (line 73) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:

FILE: athina/steps/qdrant_retrieval.py
  class QdrantRetrieval (line 14) | class QdrantRetrieval(Step):
    method __init__ (line 38) | def __init__(self, *args, **kwargs):
    class Config (line 54) | class Config:
    method execute (line 57) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:

FILE: athina/steps/research_agent_step.py
  class StreamLogHandler (line 19) | class StreamLogHandler(logging.Handler):
    method __init__ (line 20) | def __init__(self):
    method emit (line 24) | def emit(self, record):
    method get_logs (line 28) | def get_logs(self):
  function get_token_count (line 54) | def get_token_count(text: str, model: str = DEFAULT_MODEL) -> int:
  function truncate_to_token_limit (line 65) | def truncate_to_token_limit(
  function prepare_for_llm (line 93) | def prepare_for_llm(
  class ResearchAgent (line 128) | class ResearchAgent(Step):
    class Config (line 155) | class Config:
    method __init__ (line 158) | def __init__(self, **data):
    method _create_jinja_env (line 193) | def _create_jinja_env(self) -> Environment:
    method _create_step_result (line 197) | def _create_step_result(
    method _extract_evaluation_criteria (line 214) | def _extract_evaluation_criteria(self, prompt: str) -> Dict[str, Any]:
    method _execute_search (line 305) | def _execute_search(self, query: str) -> List[Dict[str, Any]]:
    method _execute_exa_search (line 316) | def _execute_exa_search(self, query: str) -> List[Dict[str, Any]]:
    method _execute_perplexity_search (line 348) | def _execute_perplexity_search(self, query: str) -> List[Dict[str, Any]]:
    method _evaluate_progress (line 424) | def _evaluate_progress(
    method _synthesize_findings (line 475) | def _synthesize_findings(self, prompt: str, context: str) -> str:
    method execute (line 560) | def execute(self, input_data: Any) -> Dict[str, Any]:
    method execute_stream (line 761) | async def execute_stream(self, input_data: Any) -> AsyncGenerator[str,...

FILE: athina/steps/search.py
  function prepare_input_data (line 11) | def prepare_input_data(data):
  class Search (line 18) | class Search(Step):
    class Config (line 56) | class Config:
    method execute (line 59) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:

FILE: athina/steps/spider_crawl.py
  function prepare_input_data (line 10) | def prepare_input_data(data):
  class SpiderCrawl (line 17) | class SpiderCrawl(Step):
    class Config (line 36) | class Config:
    method execute (line 39) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:

FILE: athina/steps/tool_call_agent.py
  class ToolCallAgent (line 14) | class ToolCallAgent(Step):
    method execute (line 33) | def execute(self, input_data: Any) -> StepResult:

FILE: athina/steps/transcribe_speech_to_text.py
  class TranscribeSpeechToText (line 7) | class TranscribeSpeechToText(Step):
    method execute (line 41) | def execute(self, input_data: Any) -> Dict[str, Any]:

FILE: athina/steps/transform.py
  class ExtractJsonFromString (line 6) | class ExtractJsonFromString(Step):
    method execute (line 11) | def execute(
  class ExtractNumberFromString (line 30) | class ExtractNumberFromString(Step):
    method execute (line 35) | def execute(self, input_data: str) -> Union[int, float]:

FILE: athina/steps/utils/metadata.py
  function get_filtered_metadata (line 17) | def get_filtered_metadata(data: Union[Dict[str, Any], str]) -> Dict[str,...

FILE: athina/steps/weaviate_retrieval.py
  class WeaviateRetrieval (line 13) | class WeaviateRetrieval(Step):
    method __init__ (line 41) | def __init__(self, *args, **kwargs):
    class Config (line 51) | class Config:
    method execute (line 54) | def execute(self, input_data: Any) -> Union[Dict[str, Any], None]:
    method close (line 129) | def close(self):
Condensed preview — 199 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,121K chars).
[
  {
    "path": ".github/workflows/mypy_linter.yml",
    "chars": 1202,
    "preview": "name: MyPy static type checker\n\non:\n  pull_request:\n    branches: [ main ]\n\njobs:\n  static_type_checker:\n    runs-on: ub"
  },
  {
    "path": ".github/workflows/pyflakes_and_flake8_and_compileall_linter.py.yml",
    "chars": 1692,
    "preview": "name: Flake8, Pyflakes and Compileall Linter\n\non:\n  pull_request:\n    branches: [ main ]\n  workflow_dispatch:\n\njobs:\n  l"
  },
  {
    "path": ".github/workflows/python-publish.yml",
    "chars": 728,
    "preview": "name: Publish to PyPi\non:\n  release:\n    types: [published]\npermissions:\n  contents: read\njobs:\n  publish:\n    runs-on: "
  },
  {
    "path": ".gitignore",
    "chars": 3284,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n*.pyc\n\n# C extensions\n*.so\n\n# Distribution / p"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 88,
    "preview": "repos:\n-   repo: https://github.com/psf/black\n    rev: stable\n    hooks:\n    - id: black"
  },
  {
    "path": "README.md",
    "chars": 1590,
    "preview": "# Overview\n\nAthina is an Observability and Experimentation platform for AI teams.\n\nThis SDK is an open-source repository"
  },
  {
    "path": "athina/__init__.py",
    "chars": 170,
    "preview": "# __init__.py\nfrom .guard.guard import guard\nfrom .guard.exception import AthinaGuardException\nfrom . import evals\nfrom "
  },
  {
    "path": "athina/cli/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/cli/cli.py",
    "chars": 5342,
    "preview": "#!/usr/bin/env python3\n\nimport argparse\nfrom athina.helpers.config import ConfigHelper\nfrom athina.helpers.run_helper im"
  },
  {
    "path": "athina/constants/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/constants/messages.py",
    "chars": 512,
    "preview": "class AthinaMessages:\n    \"\"\"\n    User facing messages.\n    \"\"\"\n\n    SIGN_UP_FOR_BEST_EXPERIENCE = \"\"\"\nFor the best expe"
  },
  {
    "path": "athina/datasets/__init__.py",
    "chars": 67,
    "preview": "from athina.datasets.dataset import Dataset\n\n__all__ = [\"Dataset\"]\n"
  },
  {
    "path": "athina/datasets/conversations.json",
    "chars": 218970,
    "preview": "[\n    [\n        \"Customer: Hi, Im interested in purchasing a new smartphone. Can you help me choose the best one?\",\n    "
  },
  {
    "path": "athina/datasets/dataset.py",
    "chars": 3598,
    "preview": "from typing import Any, List, Optional\nfrom dataclasses import dataclass, field\nfrom athina.services.athina_api_service "
  },
  {
    "path": "athina/datasets/summarization_sample.py",
    "chars": 3357,
    "preview": "data = [\n    {\n        \"document\": \"\"\"\nAlice (Veterinarian): Hi Bob, I understand you're looking to get a new dog. It's "
  },
  {
    "path": "athina/datasets/yc_query_mini.py",
    "chars": 2719,
    "preview": "data = [\n    # Incorrect - Unfaithful\n    {\n        \"query\": \"What are some successful companies that went through YC?\","
  },
  {
    "path": "athina/errors/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/errors/exceptions.py",
    "chars": 801,
    "preview": "from typing import Optional\nfrom athina.constants.messages import AthinaMessages\n\n\nclass CustomException(Exception):\n   "
  },
  {
    "path": "athina/evals/__init__.py",
    "chars": 5026,
    "preview": "# athina/evals/__init__.py\nfrom athina.evals.llm.does_response_answer_query.evaluator import (\n    DoesResponseAnswerQue"
  },
  {
    "path": "athina/evals/base_evaluator.py",
    "chars": 8780,
    "preview": "from abc import ABC, abstractmethod\nfrom concurrent.futures import ThreadPoolExecutor, as_completed\nfrom typing import L"
  },
  {
    "path": "athina/evals/conversation/conversation_coherence/evaluator.py",
    "chars": 4266,
    "preview": "import time\nfrom typing import List, Optional, Dict\n\nfrom athina.helpers.logger import logger\nfrom athina.interfaces.mod"
  },
  {
    "path": "athina/evals/conversation/conversation_coherence/prompt.py",
    "chars": 1196,
    "preview": "SYSTEM_MESSAGE = \"\"\"You are given a list of messages from a conversation, with each message in the order it was sent. \n\n"
  },
  {
    "path": "athina/evals/conversation/conversation_resolution/evaluator.py",
    "chars": 4455,
    "preview": "import time\nfrom typing import List, Optional, Dict\n\nfrom athina.helpers.logger import logger\nfrom athina.interfaces.mod"
  },
  {
    "path": "athina/evals/conversation/conversation_resolution/prompt.py",
    "chars": 1104,
    "preview": "SYSTEM_MESSAGE = \"\"\"\nYou are an expert at determining whether a user's question was addressed / resolved by the AI or no"
  },
  {
    "path": "athina/evals/eval_type.py",
    "chars": 3245,
    "preview": "from enum import Enum\n\n\nclass ConversationEvalTypeId(Enum):\n    CONVERSATION_RESOLUTION = \"ConversationResolution\"\n    C"
  },
  {
    "path": "athina/evals/function/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/function/function_evaluator.py",
    "chars": 4300,
    "preview": "from typing import Optional, List\nfrom athina.metrics.metric_type import MetricType\nimport time\nfrom typing import Optio"
  },
  {
    "path": "athina/evals/function/functions.py",
    "chars": 30201,
    "preview": "import os\nimport re\nimport json\nimport requests\nfrom typing import Any, Dict, Optional, Tuple, Union\nfrom athina.evals.g"
  },
  {
    "path": "athina/evals/function/wrapper.py",
    "chars": 12347,
    "preview": "from typing import Optional, List\nfrom athina.evals.eval_type import FunctionEvalTypeId\nfrom athina.evals.function.funct"
  },
  {
    "path": "athina/evals/grounded/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/grounded/grounded_evaluator.py",
    "chars": 4462,
    "preview": "from typing import Optional, List\nfrom athina.evals.grounded.similarity import Comparator\nfrom athina.metrics.metric_typ"
  },
  {
    "path": "athina/evals/grounded/similarity.py",
    "chars": 4457,
    "preview": "import re\nimport math\nfrom abc import ABC, abstractmethod\n\n\nclass Comparator(ABC):\n    @abstractmethod\n    def compare(s"
  },
  {
    "path": "athina/evals/grounded/wrapper.py",
    "chars": 1791,
    "preview": "from athina.evals.grounded.grounded_evaluator import GroundedEvaluator\nfrom athina.evals.grounded.similarity import Comp"
  },
  {
    "path": "athina/evals/guardrails/correct_language/evaluator.py",
    "chars": 3492,
    "preview": "# Guardrails CorrectLanguage Evaluator\n# https://hub.guardrailsai.com/validator/scb-10x/correct_language\n\nimport time\nfr"
  },
  {
    "path": "athina/evals/guardrails/detect_pii/evaluator.py",
    "chars": 2921,
    "preview": "# Guardrails Detect PII\n# https://hub.guardrailsai.com/validator/guardrails/detect_pii\n\nimport time\nfrom typing import D"
  },
  {
    "path": "athina/evals/guardrails/gibberish_text/evaluator.py",
    "chars": 3106,
    "preview": "# Guardrails Gibberish Evaluator\n# https://hub.guardrailsai.com/validator/guardrails/gibberish_text\n\nimport time\nfrom ty"
  },
  {
    "path": "athina/evals/guardrails/no_secrets_present/evaluator.py",
    "chars": 2759,
    "preview": "# Guardrails No Secrets Present\n# https://hub.guardrailsai.com/validator/guardrails/secrets_present\n\nimport time\nfrom ty"
  },
  {
    "path": "athina/evals/guardrails/politeness_check/evaluator.py",
    "chars": 3192,
    "preview": "# Guardrails PolitenessCheck\n# https://hub.guardrailsai.com/validator/guardrails/politeness_check\n\nimport os\nimport time"
  },
  {
    "path": "athina/evals/guardrails/profanity_free/evaluator.py",
    "chars": 2714,
    "preview": "# Guardrails Profanity Free\n# https://hub.guardrailsai.com/validator/guardrails/profanity_free\n\nimport time\nfrom typing "
  },
  {
    "path": "athina/evals/guardrails/reading_time/evaluator.py",
    "chars": 2870,
    "preview": "# Guardrails Profanity Free\n# https://hub.guardrailsai.com/validator/guardrails/profanity_free\n\nimport time\nfrom typing "
  },
  {
    "path": "athina/evals/guardrails/restrict_to_topic/evaluator.py",
    "chars": 3902,
    "preview": "# Guardrails Restrict To Topic\n# https://hub.guardrailsai.com/validator/tryolabs/restricttotopic\n\nimport os\nimport time\n"
  },
  {
    "path": "athina/evals/guardrails/sensitive_topics/evaluator.py",
    "chars": 3974,
    "preview": "# Guardrails Sensitive topics Evaluator\n# https://hub.guardrailsai.com/validator/guardrails/sensitive_topics\n\nimport os\n"
  },
  {
    "path": "athina/evals/guardrails/sfw/evaluator.py",
    "chars": 3041,
    "preview": "# Guardrails NSFW Evaluator\n# https://hub.guardrailsai.com/validator/guardrails/nsfw_text\n\nimport time\nfrom typing impor"
  },
  {
    "path": "athina/evals/guardrails/toxic_language/evaluator.py",
    "chars": 2961,
    "preview": "# Guardrails Toxic Language\n# https://hub.guardrailsai.com/validator/guardrails/toxic_language\n\nimport time\nfrom typing "
  },
  {
    "path": "athina/evals/guardrails/unusual_prompt/evaluator.py",
    "chars": 3223,
    "preview": "# Guardrails Unusual Prompt\n# https://hub.guardrailsai.com/validator/guardrails/unusual_prompt\n\nimport os\nimport time\nfr"
  },
  {
    "path": "athina/evals/llm/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/llm/context_contains_enough_information/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/llm/context_contains_enough_information/evaluator.py",
    "chars": 3134,
    "preview": "from typing import List, Optional\nfrom ..llm_evaluator import LlmEvaluator\nfrom .examples import CONTEXT_CONTAINS_ENOUGH"
  },
  {
    "path": "athina/evals/llm/context_contains_enough_information/examples.py",
    "chars": 1867,
    "preview": "from ..example import FewShotExample, FewShotExampleInputParam\n\nCONTEXT_CONTAINS_ENOUGH_INFORMATION_EXAMPLES = [\n    Few"
  },
  {
    "path": "athina/evals/llm/custom_prompt/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/llm/custom_prompt/evaluator.py",
    "chars": 8082,
    "preview": "import json\nimport time\nfrom athina.helpers.logger import logger\nfrom typing import List, Optional, Dict\nfrom jinja2 imp"
  },
  {
    "path": "athina/evals/llm/does_response_answer_query/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/llm/does_response_answer_query/evaluator.py",
    "chars": 2644,
    "preview": "from typing import List, Optional\nfrom ..llm_evaluator import LlmEvaluator\nfrom .examples import DOES_RESPONSE_ANSWER_QU"
  },
  {
    "path": "athina/evals/llm/does_response_answer_query/examples.py",
    "chars": 1186,
    "preview": "from ..example import FewShotExample, FewShotExampleInputParam\n\nDOES_RESPONSE_ANSWER_QUERY_EVAL_EXAMPLES = [\n    FewShot"
  },
  {
    "path": "athina/evals/llm/example.py",
    "chars": 1238,
    "preview": "from typing import List\nfrom dataclasses import dataclass\n\n\n@dataclass\nclass FewShotExampleInputParam:\n    name: str\n   "
  },
  {
    "path": "athina/evals/llm/faithfulness/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/llm/faithfulness/evaluator.py",
    "chars": 3141,
    "preview": "from typing import List, Optional\nfrom ..llm_evaluator import LlmEvaluator\nfrom .examples import FAITHFULNESS_EVAL_EXAMP"
  },
  {
    "path": "athina/evals/llm/faithfulness/examples.py",
    "chars": 1335,
    "preview": "from ..example import FewShotExample, FewShotExampleInputParam\n\nFAITHFULNESS_EVAL_EXAMPLES = [\n    FewShotExample(\n     "
  },
  {
    "path": "athina/evals/llm/grading_criteria/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/llm/grading_criteria/evaluator.py",
    "chars": 2198,
    "preview": "from typing import List, Optional\n\nfrom athina.llms.abstract_llm_service import AbstractLlmService\nfrom ..llm_evaluator "
  },
  {
    "path": "athina/evals/llm/groundedness/evaluator.py",
    "chars": 6037,
    "preview": "import time\nfrom typing import List, Tuple, Optional\n\nfrom athina.interfaces.result import (\n    EvalResult,\n    EvalRes"
  },
  {
    "path": "athina/evals/llm/groundedness/prompt.py",
    "chars": 1602,
    "preview": "GROUNDEDNESS_EVAL_PROMPT_CONCISE_SYSTEM = \"\"\"\nYou are an AI tasked with assessing the groundedness of a draft document a"
  },
  {
    "path": "athina/evals/llm/llm_evaluator.py",
    "chars": 5092,
    "preview": "import traceback\nfrom abc import ABC, abstractmethod\nimport time\nfrom typing import List, Optional\nfrom athina.interface"
  },
  {
    "path": "athina/evals/llm/summary_accuracy/evaluator.py",
    "chars": 11297,
    "preview": "import time\nimport traceback\nfrom typing import List, Optional\nfrom athina.interfaces.model import Model\nfrom athina.int"
  },
  {
    "path": "athina/evals/ragas/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/ragas/answer_correctness/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/ragas/answer_correctness/evaluator.py",
    "chars": 2426,
    "preview": "from typing import List, Optional\n\nfrom athina.interfaces.model import Model\nfrom ..ragas_evaluator import RagasEvaluato"
  },
  {
    "path": "athina/evals/ragas/answer_relevancy/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/ragas/answer_relevancy/evaluator.py",
    "chars": 2425,
    "preview": "from typing import List, Optional\n\nfrom athina.interfaces.model import Model\nfrom ..ragas_evaluator import RagasEvaluato"
  },
  {
    "path": "athina/evals/ragas/answer_semantic_similarity/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/ragas/answer_semantic_similarity/evaluator.py",
    "chars": 2431,
    "preview": "from athina.interfaces.model import Model\nfrom ..ragas_evaluator import RagasEvaluator\nfrom athina.evals.eval_type impor"
  },
  {
    "path": "athina/evals/ragas/coherence/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/ragas/coherence/evaluator.py",
    "chars": 2217,
    "preview": "from athina.interfaces.model import Model\nfrom ..ragas_evaluator import RagasEvaluator\nfrom athina.evals.eval_type impor"
  },
  {
    "path": "athina/evals/ragas/conciseness/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/ragas/conciseness/evaluator.py",
    "chars": 2241,
    "preview": "from athina.interfaces.model import Model\nfrom ..ragas_evaluator import RagasEvaluator\nfrom athina.evals.eval_type impor"
  },
  {
    "path": "athina/evals/ragas/context_precision/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/ragas/context_precision/evaluator.py",
    "chars": 2563,
    "preview": "from athina.interfaces.model import Model\nfrom ..ragas_evaluator import RagasEvaluator\nfrom athina.evals.eval_type impor"
  },
  {
    "path": "athina/evals/ragas/context_recall/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/ragas/context_recall/evaluator.py",
    "chars": 2355,
    "preview": "from athina.interfaces.model import Model\nfrom ..ragas_evaluator import RagasEvaluator\nfrom athina.evals.eval_type impor"
  },
  {
    "path": "athina/evals/ragas/faithfulness/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/ragas/faithfulness/evaluator.py",
    "chars": 2351,
    "preview": "from athina.interfaces.model import Model\nfrom ..ragas_evaluator import RagasEvaluator\nfrom athina.evals.eval_type impor"
  },
  {
    "path": "athina/evals/ragas/harmfulness/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/ragas/harmfulness/evaluator.py",
    "chars": 2215,
    "preview": "from athina.interfaces.model import Model\nfrom ..ragas_evaluator import RagasEvaluator\nfrom athina.evals.eval_type impor"
  },
  {
    "path": "athina/evals/ragas/maliciousness/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/evals/ragas/maliciousness/evaluator.py",
    "chars": 2135,
    "preview": "from athina.interfaces.model import Model\nfrom ..ragas_evaluator import RagasEvaluator\nfrom athina.evals.eval_type impor"
  },
  {
    "path": "athina/evals/ragas/ragas_evaluator.py",
    "chars": 4276,
    "preview": "import math\nimport time\nfrom abc import abstractmethod\nfrom typing import Optional, Any\n\nfrom athina.interfaces.athina i"
  },
  {
    "path": "athina/evals/safety/content_moderation/evaluator.py",
    "chars": 5253,
    "preview": "import requests\nimport time\nfrom typing import List, Optional\nfrom ....keys import OpenAiApiKey\nfrom ...base_evaluator i"
  },
  {
    "path": "athina/evals/safety/pii_detection/evaluator.py",
    "chars": 3388,
    "preview": "import requests\nimport time\nfrom typing import List, Optional\nfrom athina.interfaces.result import EvalResult, EvalResul"
  },
  {
    "path": "athina/evals/safety/prompt_injection/evaluator.py",
    "chars": 4371,
    "preview": "import requests\nimport time\nfrom typing import List, Optional\nfrom athina.interfaces.result import EvalResult, EvalResul"
  },
  {
    "path": "athina/guard/exception.py",
    "chars": 106,
    "preview": "class AthinaGuardException(Exception):\n    def __init__(self, message):\n        super().__init__(message)\n"
  },
  {
    "path": "athina/guard/guard.py",
    "chars": 1404,
    "preview": "import time\nfrom typing import List\nfrom ..evals import BaseEvaluator\nfrom .exception import AthinaGuardException\nfrom c"
  },
  {
    "path": "athina/helpers/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/helpers/athina_logging_helper.py",
    "chars": 6243,
    "preview": "import time\nfrom typing import Optional, List\nfrom athina.interfaces.athina import (\n    AthinaEvalRequestCreateRequest,"
  },
  {
    "path": "athina/helpers/config.py",
    "chars": 1351,
    "preview": "import yaml\n\nCONFIG_FILE_NAME = \"athina_config.yml\"\n\n\nclass ConfigHelper:\n    @staticmethod\n    def load_config():\n     "
  },
  {
    "path": "athina/helpers/constants.py",
    "chars": 123,
    "preview": "import os\nfrom dotenv import load_dotenv\n\nload_dotenv()\n\nAPI_BASE_URL = os.getenv(\"API_BASE_URL\", \"https://log.athina.ai"
  },
  {
    "path": "athina/helpers/dataset_helper.py",
    "chars": 1299,
    "preview": "from datetime import datetime, timezone\nimport random\nimport string\n\n\ndef generate_unique_dataset_name(prefix=\"Dataset-\""
  },
  {
    "path": "athina/helpers/eval_helper.py",
    "chars": 172,
    "preview": "from athina.evals import __all__ as supported_evals\n\n\nclass EvalHelper:\n    @staticmethod\n    def is_supported(eval_name"
  },
  {
    "path": "athina/helpers/function_eval_util.py",
    "chars": 704,
    "preview": "import inspect\n\n\ndef get_named_parameters(func):\n    \"\"\"\n    Get all named parameters of a function.\n    \"\"\"\n    paramet"
  },
  {
    "path": "athina/helpers/get_evaluator.py",
    "chars": 5829,
    "preview": "from athina.evals import (\n    Regex,\n    ContainsAny,\n    ContainsAll,\n    Contains,\n    ContainsNone,\n    ContainsJson"
  },
  {
    "path": "athina/helpers/jinja_helper.py",
    "chars": 137,
    "preview": "from jinja2 import Undefined\n\n\nclass PreserveUndefined(Undefined):\n    def __str__(self):\n        return f\"{{ {self._und"
  },
  {
    "path": "athina/helpers/json.py",
    "chars": 3021,
    "preview": "import json\nimport jsonschema\nfrom jsonpath_ng import parse\nfrom jsonschema import validate\nfrom typing import Any, Opti"
  },
  {
    "path": "athina/helpers/kwparser.py",
    "chars": 403,
    "preview": "import argparse\n\n\nclass KeyValueAction(argparse.Action):\n    \"\"\"A custom action to parse key=value pairs into a dictiona"
  },
  {
    "path": "athina/helpers/loader_helper.py",
    "chars": 942,
    "preview": "from typing import Optional\nfrom athina.loaders import ResponseLoader, Loader\n\n\nclass LoaderHelper:\n    \"\"\"Helper class "
  },
  {
    "path": "athina/helpers/logger.py",
    "chars": 3051,
    "preview": "import logging\nimport colorlog\nfrom typing import Dict, Any\n\n\nclass Singleton(type):\n    _instances: Dict[Any, Any] = {}"
  },
  {
    "path": "athina/helpers/package_helper.py",
    "chars": 265,
    "preview": "import pkg_resources\n\n\nclass PackageHelper:\n    @staticmethod\n    def get_package_version(package_name):\n        try:\n  "
  },
  {
    "path": "athina/helpers/run_helper.py",
    "chars": 5262,
    "preview": "import time\nimport inspect\nfrom athina import evals\nfrom athina.errors.exceptions import NoOpenAiApiKeyException\nfrom at"
  },
  {
    "path": "athina/helpers/step_helper.py",
    "chars": 238,
    "preview": "import json\n\nclass StepHelper:\n    \n    @staticmethod\n    def prepare_input_data(data):\n        return {\n            key"
  },
  {
    "path": "athina/interfaces/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/interfaces/athina.py",
    "chars": 4058,
    "preview": "from enum import Enum\nfrom dataclasses import dataclass, asdict\nfrom typing import Optional, Dict, List, TypedDict, Any\n"
  },
  {
    "path": "athina/interfaces/custom_model_config.py",
    "chars": 442,
    "preview": "from pydantic import BaseModel\nfrom typing import List, Dict, Any\n\n\nclass CustomModelConfig(BaseModel):\n    completion_c"
  },
  {
    "path": "athina/interfaces/data.py",
    "chars": 133,
    "preview": "from typing import TypedDict, Optional\n\n\nclass DataPoint(TypedDict):\n    \"\"\"Data point for a single inference.\"\"\"\n\n    r"
  },
  {
    "path": "athina/interfaces/model.py",
    "chars": 2067,
    "preview": "from enum import Enum\n\n\nclass Model(Enum):\n    \"\"\"\n    Supported models for evaluations.\n    \"\"\"\n\n    GPT35_TURBO = \"gpt"
  },
  {
    "path": "athina/interfaces/openai.py",
    "chars": 100,
    "preview": "from typing import TypedDict\n\n\nclass OpenAiPromptMessage(TypedDict):\n    role: str\n    content: str\n"
  },
  {
    "path": "athina/interfaces/result.py",
    "chars": 3009,
    "preview": "import pandas as pd\nfrom dataclasses import dataclass, field\nfrom typing import TypedDict, List, Optional\nfrom athina.in"
  },
  {
    "path": "athina/keys/__init__.py",
    "chars": 126,
    "preview": "from .athina_api_key import AthinaApiKey\nfrom .openai_api_key import OpenAiApiKey\n\n__all__ = [\"AthinaApiKey\", \"OpenAiApi"
  },
  {
    "path": "athina/keys/athina_api_key.py",
    "chars": 322,
    "preview": "from abc import ABC\n\n\nclass AthinaApiKey(ABC):\n    _athina_api_key = None\n\n    @classmethod\n    def set_key(cls, api_key"
  },
  {
    "path": "athina/keys/openai_api_key.py",
    "chars": 236,
    "preview": "from abc import ABC\n\n\nclass OpenAiApiKey(ABC):\n    _openai_api_key = None\n\n    @classmethod\n    def set_key(cls, api_key"
  },
  {
    "path": "athina/llms/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/llms/abstract_llm_service.py",
    "chars": 1709,
    "preview": "from abc import ABC, abstractmethod\n\n\nclass AbstractLlmService(ABC):\n    \"\"\"\n    Abstract class for different Language L"
  },
  {
    "path": "athina/llms/litellm_service.py",
    "chars": 2853,
    "preview": "import litellm\nfrom retrying import retry\nfrom timeout_decorator import timeout\nfrom athina.helpers.json import JsonHelp"
  },
  {
    "path": "athina/llms/openai_service.py",
    "chars": 7183,
    "preview": "from openai import OpenAI\nfrom retrying import retry\nfrom timeout_decorator import timeout\nfrom athina.helpers.json impo"
  },
  {
    "path": "athina/llms/question_answerer.py",
    "chars": 324,
    "preview": "from abc import ABC, abstractmethod\nfrom typing import List, TypedDict, Optional\n\n\nclass QuestionAnswererResponse(TypedD"
  },
  {
    "path": "athina/llms/question_answerer_bulk.py",
    "chars": 2817,
    "preview": "from typing import List, Tuple, Optional\nfrom athina.llms.openai_service import OpenAiService\nfrom athina.llms.abstract_"
  },
  {
    "path": "athina/llms/question_answerer_cot.py",
    "chars": 3684,
    "preview": "from typing import Tuple, List, Optional\nfrom athina.llms.abstract_llm_service import AbstractLlmService\nfrom .question_"
  },
  {
    "path": "athina/llms/question_answerer_with_retrieval.py",
    "chars": 6888,
    "preview": "import numpy as np\nimport pprint\nfrom abc import ABC, abstractmethod\nfrom typing import List, Tuple, Optional\nfrom athin"
  },
  {
    "path": "athina/llms/question_generator.py",
    "chars": 2395,
    "preview": "from typing import List, Optional\nfrom athina.llms.abstract_llm_service import AbstractLlmService\nfrom athina.llms.opena"
  },
  {
    "path": "athina/loaders/__init__.py",
    "chars": 377,
    "preview": "from .response_loader import ResponseLoader\nfrom .text_loader import TextLoader\nfrom .summary_loader import SummaryLoade"
  },
  {
    "path": "athina/loaders/base_loader.py",
    "chars": 2315,
    "preview": "from abc import ABC, abstractmethod\nfrom enum import Enum\nfrom typing import List\nimport json\nfrom athina.interfaces.dat"
  },
  {
    "path": "athina/loaders/conversation_loader.py",
    "chars": 2085,
    "preview": "from typing import List, Optional, Dict\nfrom athina.interfaces.athina import AthinaFilters\n\n\nclass ConversationLoader:\n "
  },
  {
    "path": "athina/loaders/json_loader.py",
    "chars": 3017,
    "preview": "from typing import List, Optional\nfrom athina.interfaces.athina import AthinaFilters\nfrom athina.interfaces.data import "
  },
  {
    "path": "athina/loaders/loader.py",
    "chars": 4596,
    "preview": "from typing import List, Optional\nfrom athina.interfaces.athina import AthinaFilters\nfrom athina.interfaces.data import "
  },
  {
    "path": "athina/loaders/response_loader.py",
    "chars": 3754,
    "preview": "from typing import List, Optional\nfrom athina.interfaces.athina import AthinaFilters\nfrom athina.interfaces.data import "
  },
  {
    "path": "athina/loaders/summary_loader.py",
    "chars": 3066,
    "preview": "from dataclasses import asdict\nfrom typing import List, Optional\nfrom athina.interfaces.athina import AthinaFilters\nfrom"
  },
  {
    "path": "athina/loaders/text_loader.py",
    "chars": 2760,
    "preview": "from .base_loader import BaseLoader\nfrom typing import List, Optional\nfrom athina.interfaces.athina import AthinaFilters"
  },
  {
    "path": "athina/metrics/agreement_score.py",
    "chars": 1855,
    "preview": "from .metric import Metric\n\n\nclass AgreementScore(Metric):\n    \"\"\"\n    Calculates agreement score between two sets of an"
  },
  {
    "path": "athina/metrics/contradiction_score.py",
    "chars": 2448,
    "preview": "from .metric import Metric\n\n\nclass ContradictionScore(Metric):\n    \"\"\"\n    Metric to evaluate the degree of contradictio"
  },
  {
    "path": "athina/metrics/groundedness.py",
    "chars": 1426,
    "preview": "from abc import ABC, abstractmethod\nfrom typing import List, TypedDict, Tuple\n\n\nclass GroundednessEvidence(TypedDict):\n "
  },
  {
    "path": "athina/metrics/hallucination_score.py",
    "chars": 2209,
    "preview": "from .metric import Metric\n\n\nclass HallucinationScore(Metric):\n    \"\"\"\n    Calculates the hallucination score between tw"
  },
  {
    "path": "athina/metrics/metric.py",
    "chars": 248,
    "preview": "from abc import ABC, abstractmethod\n\n\nclass Metric(ABC):\n    \"\"\"\n    Abstract base class for evaluation metrics.\n    \"\"\""
  },
  {
    "path": "athina/metrics/metric_type.py",
    "chars": 3040,
    "preview": "from enum import Enum\n\nfrom athina.metrics.groundedness import GroundednessScore\nfrom .agreement_score import AgreementS"
  },
  {
    "path": "athina/metrics/passed.py",
    "chars": 393,
    "preview": "from typing import Union\nfrom .metric import Metric\n\n\nclass Passed(Metric):\n    \"\"\"\n    Boolean metric indicating whethe"
  },
  {
    "path": "athina/metrics/ragas_metric.py",
    "chars": 275,
    "preview": "from .metric import Metric\n\n\nclass RagasMetric(Metric):\n    \"\"\"\n    Float ragas metric\n    \"\"\"\n\n    @staticmethod\n    de"
  },
  {
    "path": "athina/metrics/similarity_score.py",
    "chars": 509,
    "preview": "from decimal import Decimal\nfrom typing import Union\nfrom .metric import Metric\n\n\nclass SimilarityScore(Metric):\n    \"\"\""
  },
  {
    "path": "athina/runner/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/runner/run.py",
    "chars": 8394,
    "preview": "from typing import List, TypedDict, Optional, Union\nfrom athina.datasets.dataset import Dataset\nfrom athina.helpers.athi"
  },
  {
    "path": "athina/runner/run_wrapper.py",
    "chars": 548,
    "preview": "from .run import EvalRunner\n\n\ndef run(evals, data=None, max_parallel_evals=5, dataset_id=None, number_of_rows=None):\n   "
  },
  {
    "path": "athina/scripts/guardrails.py",
    "chars": 6543,
    "preview": "import subprocess\n\n\ndef install():\n    try:\n        try:\n            from guardrails import Guard\n        except Excepti"
  },
  {
    "path": "athina/services/athina_api_service.py",
    "chars": 15274,
    "preview": "import pkg_resources\nimport requests\nfrom dataclasses import asdict\nfrom retrying import retry\nfrom typing import List, "
  },
  {
    "path": "athina/steps/__init__.py",
    "chars": 1604,
    "preview": "from athina.steps.base import Step, Fn, Debug\nfrom athina.steps.conditional import ConditionalStep\nfrom athina.steps.cha"
  },
  {
    "path": "athina/steps/api.py",
    "chars": 10206,
    "preview": "# Step to make an external api call\nimport json\nimport time\nfrom typing import Union, Dict, Any, Optional\nimport aiohttp"
  },
  {
    "path": "athina/steps/base.py",
    "chars": 7452,
    "preview": "import os\nimport json\nimport logging\nfrom typing import Dict, Any, List, Iterable, Optional, Callable, TypedDict, Litera"
  },
  {
    "path": "athina/steps/browser_use_step.py",
    "chars": 3714,
    "preview": "import os\nfrom typing import Any, Dict, Optional, List, Union\nimport asyncio\nfrom dotenv import load_dotenv\nimport json\n"
  },
  {
    "path": "athina/steps/chain.py",
    "chars": 3041,
    "preview": "from pydantic import BaseModel\nfrom typing import List, Dict, Any, Optional, Union\nfrom athina.steps.base import Step\nfr"
  },
  {
    "path": "athina/steps/chroma_retrieval.py",
    "chars": 4257,
    "preview": "# Step to make a call to chromadb collection to fetch relevant chunks\n\nfrom typing import Union, Dict, Any, List, Option"
  },
  {
    "path": "athina/steps/classify_text.py",
    "chars": 1967,
    "preview": "# Step to classify text into one of the provided labels.\nfrom typing import Union, Dict, Any\nfrom athina.steps import St"
  },
  {
    "path": "athina/steps/code_execution.py",
    "chars": 8226,
    "preview": "from typing import Union, Dict, Any, Optional\nfrom athina.steps import Step\nimport subprocess\nimport os\nimport json\nimpo"
  },
  {
    "path": "athina/steps/code_execution_v2.py",
    "chars": 23176,
    "preview": "from typing import Union, Dict, Any, Optional, Literal, ClassVar, TypedDict\nfrom athina.steps import Step\nimport io\nimpo"
  },
  {
    "path": "athina/steps/conditional.py",
    "chars": 3286,
    "preview": "from typing import Dict, List\nfrom athina.steps.base import Step\nfrom pydantic import ConfigDict\nfrom athina.steps.code_"
  },
  {
    "path": "athina/steps/debug.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "athina/steps/extract_entities.py",
    "chars": 2048,
    "preview": "# Step to extract entities from text using the instructions.\nfrom typing import Union, Dict, Any\nfrom athina.steps impor"
  },
  {
    "path": "athina/steps/extract_json_path.py",
    "chars": 2277,
    "preview": "from typing import Union, Dict, Any\nfrom athina.steps import Step\nimport json\nfrom jsonpath_ng import parse\nimport time\n"
  },
  {
    "path": "athina/steps/iterator.py",
    "chars": 646,
    "preview": "from pydantic import BaseModel\nfrom typing import List, Dict, Any, Optional, Callable, Iterable\nfrom athina.steps.base i"
  },
  {
    "path": "athina/steps/llm.py",
    "chars": 23033,
    "preview": "import os\nfrom pydantic import BaseModel\nfrom typing import List, Dict, Any, Optional, Union\nfrom athina.helpers.json im"
  },
  {
    "path": "athina/steps/loop.py",
    "chars": 4244,
    "preview": "import asyncio\nimport json\nfrom typing import Dict, List, Any, Optional\nfrom athina.steps.base import Step\nfrom concurre"
  },
  {
    "path": "athina/steps/open_ai_assistant.py",
    "chars": 3884,
    "preview": "# Step to chat with OpenAI's Assistant API.\nfrom typing import Union, Dict, Any\nfrom athina.steps import Step\nfrom opena"
  },
  {
    "path": "athina/steps/parse_document.py",
    "chars": 3497,
    "preview": "from typing import Union, Dict, Any, Optional\nfrom athina.steps import Step\nfrom llama_parse import LlamaParse\nimport ne"
  },
  {
    "path": "athina/steps/pinecone_retrieval.py",
    "chars": 4256,
    "preview": "from typing import Optional, Union, Dict, Any\n\nfrom pydantic import Field, PrivateAttr\nfrom athina.steps import Step\nfro"
  },
  {
    "path": "athina/steps/qdrant_retrieval.py",
    "chars": 3469,
    "preview": "# Step to make a call to pinecone index to fetch relevent chunks\nfrom typing import Optional, Union, Dict, Any\n\nfrom pyd"
  },
  {
    "path": "athina/steps/research_agent_step.py",
    "chars": 45516,
    "preview": "import os\nimport json\nimport logging\nimport tiktoken\nfrom typing import Dict, Any, Optional, List, Literal, AsyncGenerat"
  },
  {
    "path": "athina/steps/search.py",
    "chars": 7410,
    "preview": "# Step to make an external api call\nimport json\nimport time\nfrom typing import Union, Dict, List, Any, Iterable, Optiona"
  },
  {
    "path": "athina/steps/spider_crawl.py",
    "chars": 5257,
    "preview": "# Step to make an external api call\nimport json\nimport time\nfrom typing import Union, Dict, List, Any, Iterable, Optiona"
  },
  {
    "path": "athina/steps/tool_call_agent.py",
    "chars": 6918,
    "preview": "from typing import Any, Dict, Union, Optional, List\nimport time\nfrom athina.steps.base import Step\nfrom athina.steps.bas"
  },
  {
    "path": "athina/steps/transcribe_speech_to_text.py",
    "chars": 4489,
    "preview": "from typing import Any, Dict, Optional\nimport requests\nfrom athina.steps import Step\nimport time\n\n\nclass TranscribeSpeec"
  },
  {
    "path": "athina/steps/transform.py",
    "chars": 1408,
    "preview": "from typing import Union, Dict, Iterable, Any\nfrom athina.helpers.json import JsonExtractor\nfrom athina.steps import Ste"
  },
  {
    "path": "athina/steps/utils/metadata.py",
    "chars": 1360,
    "preview": "import json\nfrom typing import Dict, Any, Union\n\nallowed_metadata_keys = [\n    \"content_type\",\n    \"file_name\",\n    \"fil"
  },
  {
    "path": "athina/steps/weaviate_retrieval.py",
    "chars": 4568,
    "preview": "import weaviate\nfrom weaviate.classes.init import Auth\nfrom weaviate.classes.query import MetadataQuery\nfrom weaviate.cl"
  },
  {
    "path": "examples/chain.ipynb",
    "chars": 53106,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\":"
  },
  {
    "path": "examples/conditional_flow.ipynb",
    "chars": 4919,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\":"
  },
  {
    "path": "examples/conversation_coherence.ipynb",
    "chars": 6305,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n "
  },
  {
    "path": "examples/conversation_eval.ipynb",
    "chars": 8624,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n "
  },
  {
    "path": "examples/conversation_resolution.ipynb",
    "chars": 15977,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n "
  },
  {
    "path": "examples/custom_grading_criteria.ipynb",
    "chars": 8495,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Custom Grading Criteria\\n\",\n    "
  },
  {
    "path": "examples/dataset_creation.ipynb",
    "chars": 3176,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\":"
  },
  {
    "path": "examples/execute_node.ipynb",
    "chars": 3578,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\":"
  },
  {
    "path": "examples/groundedness.ipynb",
    "chars": 5763,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": "
  },
  {
    "path": "examples/guard.ipynb",
    "chars": 8160,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Athina Guard\\n\",\n    \"\\n\",\n    \"`"
  },
  {
    "path": "examples/guardrails.ipynb",
    "chars": 9570,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": "
  },
  {
    "path": "examples/load_athina_data.ipynb",
    "chars": 2409,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": "
  },
  {
    "path": "examples/question_answerer.ipynb",
    "chars": 5211,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n "
  },
  {
    "path": "examples/ragas.ipynb",
    "chars": 37695,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\":"
  },
  {
    "path": "examples/run_custom_eval.ipynb",
    "chars": 22527,
    "preview": "{\n       \"cells\": [\n              {\n                     \"cell_type\": \"code\",\n                     \"execution_count\": 1,"
  },
  {
    "path": "examples/run_eval.ipynb",
    "chars": 24240,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": "
  },
  {
    "path": "examples/run_eval_llama_index.ipynb",
    "chars": 3513,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": "
  },
  {
    "path": "examples/run_eval_suite.ipynb",
    "chars": 3026,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": "
  },
  {
    "path": "examples/run_experiment.ipynb",
    "chars": 29210,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\":"
  },
  {
    "path": "examples/run_function_eval.ipynb",
    "chars": 7873,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\":"
  },
  {
    "path": "examples/run_single_datapoint.ipynb",
    "chars": 3444,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": "
  },
  {
    "path": "examples/text_summarization.ipynb",
    "chars": 1954,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": "
  },
  {
    "path": "pyproject.toml",
    "chars": 1429,
    "preview": "[tool.poetry]\nname = \"athina\"\nversion = \"1.7.39\"\ndescription = \"Python SDK to configure and run evaluations for your LLM"
  }
]

About this extraction

This page contains the full source code of the athina-ai/athina-evals GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 199 files (1.0 MB), approximately 233.7k tokens, and a symbol index with 971 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!