mirror of
https://github.com/aljazceru/Auto-GPT.git
synced 2025-12-25 18:04:28 +01:00
* Extract open ai api calls and retry at lowest level * Forgot a test * Gotta fix my local docker config so I can let pre-commit hooks run, ugh * fix: merge artiface * Fix linting * Update memory.vector.utils * feat: make sure resp exists * fix: raise error message if created * feat: rename file * fix: partial test fix * fix: update comments * fix: linting * fix: remove broken test * fix: require a model to exist * fix: BaseError issue * fix: runtime error * Fix mock response in test_make_agent * add 429 as errors to retry --------- Co-authored-by: k-boikov <64261260+k-boikov@users.noreply.github.com> Co-authored-by: Nicholas Tindle <nick@ntindle.com> Co-authored-by: Reinier van der Leer <github@pwuts.nl> Co-authored-by: Nicholas Tindle <nicktindle@outlook.com> Co-authored-by: Luke K (pr-0f3t) <2609441+lc0rp@users.noreply.github.com> Co-authored-by: Merwane Hamadi <merwanehamadi@gmail.com>
69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
from unittest.mock import patch
|
|
|
|
import pytest
|
|
|
|
from autogpt.llm.api_manager import COSTS, ApiManager
|
|
|
|
api_manager = ApiManager()
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def reset_api_manager():
|
|
api_manager.reset()
|
|
yield
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def mock_costs():
|
|
with patch.dict(
|
|
COSTS,
|
|
{
|
|
"gpt-3.5-turbo": {"prompt": 0.002, "completion": 0.002},
|
|
"text-embedding-ada-002": {"prompt": 0.0004, "completion": 0},
|
|
},
|
|
clear=True,
|
|
):
|
|
yield
|
|
|
|
|
|
class TestApiManager:
|
|
def test_getter_methods(self):
|
|
"""Test the getter methods for total tokens, cost, and budget."""
|
|
api_manager.update_cost(60, 120, "gpt-3.5-turbo")
|
|
api_manager.set_total_budget(10.0)
|
|
assert api_manager.get_total_prompt_tokens() == 60
|
|
assert api_manager.get_total_completion_tokens() == 120
|
|
assert api_manager.get_total_cost() == (60 * 0.002 + 120 * 0.002) / 1000
|
|
assert api_manager.get_total_budget() == 10.0
|
|
|
|
@staticmethod
|
|
def test_set_total_budget():
|
|
"""Test if setting the total budget works correctly."""
|
|
total_budget = 10.0
|
|
api_manager.set_total_budget(total_budget)
|
|
|
|
assert api_manager.get_total_budget() == total_budget
|
|
|
|
@staticmethod
|
|
def test_update_cost():
|
|
"""Test if updating the cost works correctly."""
|
|
prompt_tokens = 50
|
|
completion_tokens = 100
|
|
model = "gpt-3.5-turbo"
|
|
|
|
api_manager.update_cost(prompt_tokens, completion_tokens, model)
|
|
|
|
assert api_manager.get_total_prompt_tokens() == 50
|
|
assert api_manager.get_total_completion_tokens() == 100
|
|
assert api_manager.get_total_cost() == (50 * 0.002 + 100 * 0.002) / 1000
|
|
|
|
@staticmethod
|
|
def test_get_models():
|
|
"""Test if getting models works correctly."""
|
|
with patch("openai.Model.list") as mock_list_models:
|
|
mock_list_models.return_value = {"data": [{"id": "gpt-3.5-turbo"}]}
|
|
result = api_manager.get_models()
|
|
|
|
assert result[0]["id"] == "gpt-3.5-turbo"
|
|
assert api_manager.models[0]["id"] == "gpt-3.5-turbo"
|