mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-01-09 07:08:09 -05:00
- **FIX ALL LINT/TYPE ERRORS IN AUTOGPT, FORGE, AND BENCHMARK** ### Linting - Clean up linter configs for `autogpt`, `forge`, and `benchmark` - Add type checking with Pyright - Create unified pre-commit config - Create unified linting and type checking CI workflow ### Testing - Synchronize CI test setups for `autogpt`, `forge`, and `benchmark` - Add missing pytest-cov to benchmark dependencies - Mark GCS tests as slow to speed up pre-commit test runs - Repair `forge` test suite - Add `AgentDB.close()` method for test DB teardown in db_test.py - Use actual temporary dir instead of forge/test_workspace/ - Move left-behind dependencies for moved `forge`-code to from autogpt to forge ### Notable type changes - Replace uses of `ChatModelProvider` by `MultiProvider` - Removed unnecessary exports from various __init__.py - Simplify `FileStorage.open_file` signature by removing `IOBase` from return type union - Implement `S3BinaryIOWrapper(BinaryIO)` type interposer for `S3FileStorage` - Expand overloads of `GCSFileStorage.open_file` for improved typing of read and write modes Had to silence type checking for the extra overloads, because (I think) Pyright is reporting a false-positive: https://github.com/microsoft/pyright/issues/8007 - Change `count_tokens`, `get_tokenizer`, `count_message_tokens` methods on `ModelProvider`s from class methods to instance methods - Move `CompletionModelFunction.schema` method -> helper function `format_function_def_for_openai` in `forge.llm.providers.openai` - Rename `ModelProvider` -> `BaseModelProvider` - Rename `ChatModelProvider` -> `BaseChatModelProvider` - Add type `ChatModelProvider` which is a union of all subclasses of `BaseChatModelProvider` ### Removed rather than fixed - Remove deprecated and broken autogpt/agbenchmark_config/benchmarks.py - Various base classes and properties on base classes in `forge.llm.providers.schema` and `forge.models.providers` ### Fixes for other issues that came to light - Clean up `forge.agent_protocol.api_router`, `forge.agent_protocol.database`, and `forge.agent.agent` - Add fallback behavior to `ImageGeneratorComponent` - Remove test for deprecated failure behavior - Fix `agbenchmark.challenges.builtin` challenge exclusion mechanism on Windows - Fix `_tool_calls_compat_extract_calls` in `forge.llm.providers.openai` - Add support for `any` (= no type specified) in `JSONSchema.typescript_type`
51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
from pathlib import Path
|
|
|
|
import pytest
|
|
from forge.config.ai_profile import AIProfile
|
|
from forge.config.config import Config
|
|
from forge.file_storage import FileStorageBackendName, get_storage
|
|
from forge.llm.providers import MultiProvider
|
|
|
|
from autogpt.agents.agent import Agent, AgentConfiguration, AgentSettings
|
|
|
|
|
|
@pytest.fixture
|
|
def dummy_agent(config: Config, llm_provider: MultiProvider):
|
|
ai_profile = AIProfile(
|
|
ai_name="Dummy Agent",
|
|
ai_role="Dummy Role",
|
|
ai_goals=[
|
|
"Dummy Task",
|
|
],
|
|
)
|
|
|
|
agent_settings = AgentSettings(
|
|
name=Agent.default_settings.name,
|
|
description=Agent.default_settings.description,
|
|
ai_profile=ai_profile,
|
|
config=AgentConfiguration(
|
|
fast_llm=config.fast_llm,
|
|
smart_llm=config.smart_llm,
|
|
use_functions_api=config.openai_functions,
|
|
),
|
|
history=Agent.default_settings.history.copy(deep=True),
|
|
)
|
|
|
|
local = config.file_storage_backend == FileStorageBackendName.LOCAL
|
|
restrict_to_root = not local or config.restrict_to_workspace
|
|
file_storage = get_storage(
|
|
config.file_storage_backend,
|
|
root_path=Path("data"),
|
|
restrict_to_root=restrict_to_root,
|
|
)
|
|
file_storage.initialize()
|
|
|
|
agent = Agent(
|
|
settings=agent_settings,
|
|
llm_provider=llm_provider,
|
|
file_storage=file_storage,
|
|
legacy_config=config,
|
|
)
|
|
|
|
return agent
|