---
id: tutorial-setup
title: Set Up DeepEval
sidebar_label: Set Up DeepEval
---

import { ASSETS } from "@site/src/assets";

## Installing DeepEval

**DeepEval** is a powerful LLM evaluation framework. Here's how you can easily get started by installing and running your first evaluation using DeepEval.

Start by installing DeepEval using pip:

```bash
pip install -U deepeval
```

### Write your first test

Let's evaluate the correctness of an LLM output using [`GEval`](https://deepeval.com/docs/metrics-llm-evals), a powerful metric based on LLM-as-a-judge evaluation.

:::note
When you pass a file explicitly (e.g. `deepeval test run evals/my_eval.py`), DeepEval runs it regardless of its name. The `test_` prefix (like `test_app.py`) is only needed for pytest's automatic discovery when you point it at a directory.
:::

```python title="test_app.py"
from deepeval import evaluate
from deepeval.test_case import LLMTestCase, SingleTurnParams
from deepeval.metrics import GEval

correctness_metric = GEval(
    name="Correctness",
    criteria="Determine if the 'actual output' is correct based on the 'expected output'.",
    evaluation_params=[SingleTurnParams.ACTUAL_OUTPUT, SingleTurnParams.EXPECTED_OUTPUT],
    threshold=0.5
)

test_case = LLMTestCase(
    input="I have a persistent cough and fever. Should I be worried?",
    # Replace this with the actual output from your LLM application
    actual_output="A persistent cough and fever could signal various illnesses, from minor infections to more serious conditions like pneumonia or COVID-19. It's advisable to seek medical attention if symptoms worsen, persist beyond a few days, or if you experience difficulty breathing, chest pain, or other concerning signs.",
    expected_output="A persistent cough and fever could indicate a range of illnesses, from a mild viral infection to more serious conditions like pneumonia or COVID-19. You should seek medical attention if your symptoms worsen, persist for more than a few days, or are accompanied by difficulty breathing, chest pain, or other concerning signs."
)

evaluate([test_case], [correctness_metric])
```

To run your first evaluation, enter the following command in your terminal:

```bash
deepeval test run test_app.py
```

:::note
DeepEval's powerful **LLM-as-a-judge** metrics (like `GEval` used in this example) rely on an underlying LLM called the _Evaluation Model_ to perform evaluations. By default, DeepEval uses OpenAI's models for this purpose.

So you'll have to set your `OPENAI_API_KEY` as an environment variable as shown below.

```bash
export OPENAI_API_KEY="your_api_key"

```

To use ANY custom LLM of your choice, [Check out our docs on custom evaluation models](https://deepeval.com/guides/guides-using-custom-llms).
:::

Congratulations! You've successfully run your first LLM evaluation with DeepEval.

## Setting Up Confident AI

While DeepEval works great standalone, you can connect it to [Confident AI](https://www.confident-ai.com) — an AI quality platform with observability, evals, and monitoring that DeepEval integrates with natively for dashboards, logging, collaboration, and more. **It’s free to get started.**

You can [sign up here](https://www.confident-ai.com), or run:

```bash
deepeval login
```

Navigate to your Settings page and copy your Confident AI API Key from the Project API Key box. If you used the `deepeval login` command to log in, you'll be prompted to paste your Confident AI API Key after creating an account.

<div
  style={{
    display: "flex",
    alignItems: "center",
    justifyContent: "center",
  }}
>
  <ImageDisplayer src={ASSETS.tutorialSetup01} />
</div>

Alternatively, if you already have an account, you can log in directly using Python:

```python title="main.py"
deepeval.login("your-confident-api-key")
```

Or through the CLI:

```bash
deepeval login --confident-api-key "your-confident-api-key"
```

:::note[Login persistence]
`deepeval login` persists your key to a dotenv file by default (.env.local).
To change the target, use `--save`, e.g.:

```bash
# custom path
deepeval login --confident-api-key "ck_..." --save dotenv:.env.custom
```

For compatibility, the key is saved under `api_key` and `CONFIDENT_API_KEY`.
Secrets are never written to the JSON keystore.
:::

:::tip[Logging out / rotating keys]
Use deepeval logout to clear the JSON keystore and remove saved keys from your dotenv file:

```bash
# default removes from .env.local
deepeval logout

# or specify a custom target
deepeval logout --save dotenv:.myconf.env
```
:::

You're all set! You can now evaluate LLMs locally and monitor them in Confident AI.