Assistant: 
User: System: You are in a role play game. The following roles are available:
                Admin: Call this Agent if:
        You need guidance.
        The program is not working as expected.
        You need api key
        DO NOT CALL THIS AGENT IF:
        You need to execute the code.
Executor: Call this Agent if:   
        You need to execute the code written by the developer.  
        You need to execute the last script.  
        You have an import issue.  
        DO NOT CALL THIS AGENT IF:  
        You need to modify code
Quality_assurance: You are an AI Quality Assurance. Follow these instructions:
      1. Double check the plan, 
      2. if there's a bug or error suggest a resolution
      3. If the task is not solved, analyze the problem, revisit your assumption, collect additional info you need, and think of a different approach.
      4. ОБЯЗАТЕЛЬНО ГОВОРИ НА РУССКОМ.
                Read the following conversation.
                Then select the next role from ['Admin', 'Executor', 'Quality_assurance'] to play. Only return the role.
User: Разработка по TDD. Напишите функцию для вычисления чисел Фибоначи.
User: Вот план для разработки функции, вычисляющей числа Фибоначчи с использованием подхода TDD (разработка через тестирование):

### Шаг 1: Определение требований
- **Ответственный:** Planner
- **Задача:** Определить, как должна работать функция de Fibonacci. Например, функция debe recibir un número entero n y devolver el n-ésimo número de Fibonacci.

### Шаг 2: Escribir pruebas
- **Responsable:** Developer
- **Tarea:** Escribir pruebas unitarias que verifiquen el comportamiento esperado de la función. Las pruebas deben incluir casos como:
  - Fibonacci(0) debe devolver 0.
  - Fibonacci(1) debe devolver 1.
  - Fibonacci(5) debe devolver 5.
  - Fibonacci(10) debe devolver 55.

### Шаг 3: Реализация функции
- **Ответственный:** Developer
- **Задача:** Написать код функции, которая вычисляет числа Фибоначчи на основе требований и тестов, написанных на предыдущем шаге.

### Шаг 4: Выполнение тестов
- **Ответственный:** Executor
- **Задача:** Запустить тесты, чтобы убедиться, что функция работает правильно и все тесты проходят.

### Шаг 5: Проверка качества
- **Ответственный:** Quality_assurance
- **Задача:** Проверить, что код соответствует стандартам качества, и если есть ошибки, предложить решения. Если тесты не проходят, проанализировать проблему и предложить другой подход.

Этот план поможет вам разработать функцию для вычисления чисел Фибоначчи с использованием TDD.
User: Aquí tienes el código para implementar la función que calcula los números de Fibonacci, junto con las pruebas unitarias correspondientes. Primero, asegúrate de instalar `pytest` para ejecutar las pruebas.

```bash
pip install pytest
```

Ahora, aquí está el código de la función y las pruebas:

```python
# fibonacci.py

def fibonacci(n):
    if n < 0:
        raise ValueError("Input should be a non-negative integer.")
    elif n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        a, b = 0, 1
        for _ in range(2, n + 1):
            a, b = b, a + b
        return b
```

```python
# test_fibonacci.py

import pytest
from fibonacci import fibonacci

def test_fibonacci():
    assert fibonacci(0) == 0
    assert fibonacci(1) == 1
    assert fibonacci(5) == 5
    assert fibonacci(10) == 55

def test_fibonacci_negative():
    with pytest.raises(ValueError):
        fibonacci(-1)
```

Para ejecutar las pruebas, utiliza el siguiente comando en la terminal:

```bash
pytest test_fibonacci.py
```

Este código implementa la función de Fibonacci y las pruebas unitarias necesarias. Asegúrate de ejecutar las pruebas y verifica que todo funcione correctamente. Si hay algún error, revisa el código y ajusta según sea necesario.
System: Read the above conversation. Then select the next role from ['Admin', 'Executor', 'Quality_assurance'] to play. Only return the role.
Assistant:
Assistant: