aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-01-29Merge branch 'master' into bringing-in-the-benchmarkbringing-in-the-benchmarkGravatar Reinier van der Leer 269-16589/+14632
2024-01-29fix(agent/json_utils): Make `extract_dict_from_response` more robustGravatar Reinier van der Leer 1-3/+1
* Accommodate for both ```json and ```JSON blocks in responses
2024-01-29feat(agent/llm): Add support for `gpt-4-0125-preview`Gravatar Reinier van der Leer 1-1/+4
* Add `gpt-4-0125-preview` model to OpenAI model list * Add `gpt-4-turbo-preview` alias to OpenAI model list
2024-01-22feat(benchmark): Add `-N`, `--attempts` option for multiple attempts per ↵Gravatar Reinier van der Leer 12-137/+177
challenge LLMs are probabilistic systems. Reproducibility of completions is not guaranteed. It only makes sense to account for this, by running challenges multiple times to obtain a success ratio rather than a boolean success/failure result. Changes: - Add `-N`, `--attempts` option to CLI and `attempts_per_challenge` parameter to `main.py:run_benchmark`. - Add dynamic `i_attempt` fixture through `pytest_generate_tests` hook in conftest.py to achieve multiple runs per challenge. - Modify `pytest_runtest_makereport` hook in conftest.py to handle multiple reporting calls per challenge. - Refactor report_types.py, reports.py, process_report.ty to allow multiple results per challenge. - Calculate `success_percentage` from results of the current run, rather than all known results ever. - Add docstrings to a number of models in report_types.py. - Allow `None` as a success value, e.g. for runs that did not render any results before being cut off. - Make SingletonReportManager thread-safe.
2024-01-19feat(benchmark): JungleGym WebArena (#6691)Gravatar Reinier van der Leer 4-1/+1005
* feat(benchmark): Add JungleGym WebArena challenges - Add `WebArenaChallenge`, `WebArenaChallengeSpec`, and other logic to make these challenges work - Add WebArena challenges to Pytest collection endpoint generate_test.py * feat(benchmark/webarena): Add hand-picked selection of WebArena challenges
2024-01-19fix(benchmark/report): Fix and clean up logic in ↵Gravatar Reinier van der Leer 1-8/+5
`update_challenges_already_beaten` - `update_challenges_already_beaten` incorrectly marked challenges as beaten if it was present in the report file but set to `false`
2024-01-19feat(agent/llm/openai): Include compatibility tool call extraction in LLM ↵Gravatar Reinier van der Leer 1-24/+22
response parse-fix loop
2024-01-19fix(agent/serve): Fix task cost tracking persistence in `AgentProtocolServer`Gravatar Reinier van der Leer 2-10/+11
- Pydantic shallow-copies models when they are passed into a parent model, meaning they can't be updated through the original reference. This commit adds a fix for the resulting cost persistence issue.
2024-01-19feat(agent/llm): Add cost tracking and logging to `AgentProtocolServer`Gravatar Reinier van der Leer 5-42/+84
2024-01-19fix(benchmark): Fix challenge input artifact uploadGravatar Reinier van der Leer 1-1/+3
2024-01-19fix(agent): Fix `extract_dict_from_response` flakinessGravatar Reinier van der Leer 2-1/+13
- The `extract_dict_from_response` function, which is supposed to reliably extract a JSON object from an LLM's response, positively discriminated objects defined on a single line, causing issues.
2024-01-19fix(agent): Fix "ChatModelResponse not subscriptable" errors in ↵Gravatar Reinier van der Leer 2-2/+2
`summarize_text` and `QueryLanguageModel` ability - `summarize_text` and `QueryLanguageModel.__call__` still tried to access `response["content"]`, which isn't possible since upgrading to the OpenAI v1 client library.
2024-01-19fix(agent): Handle artifact modification properlyGravatar Reinier van der Leer 3-14/+34
- When an Artifact's file is modified by the agent, set its `agent_created` attribute to `True` instead of registering a new Artifact - Update the `autogpt-forge` dependency to the newest version, in which `AgentDB.update_artifact` has been implemented
2024-01-19feat(forge/db): Add `AgentDB.update_artifact` methodGravatar Reinier van der Leer 1-23/+50
2024-01-18refactor(benchmark): Interface & type consoledation, and arch change, to ↵Gravatar Reinier van der Leer 16-814/+923
allow adding challenge providers Squashed commit of the following: commit 7d6476d3297860f74c276d571da995d958a8cc1a Author: Reinier van der Leer <pwuts@agpt.co> Date: Tue Jan 9 18:10:45 2024 +0100 refactor(benchmark/challenge): Set up structure to support more challenge providers - Move `Challenge`, `ChallengeData`, `load_challenges` to `challenges/builtin.py` and rename to `BuiltinChallenge`, `BuiltinChallengeSpec`, `load_builtin_challenges` - Create `BaseChallenge` to serve as interface and base class for different challenge implementations - Create `ChallengeInfo` model to serve as universal challenge info object - Create `get_challenge_from_source_uri` function in `challenges/__init__.py` - Replace `ChallengeData` by `ChallengeInfo` everywhere except in `BuiltinChallenge` - Add strong typing to `task_informations` store in app.py - Use `call.duration` in `finalize_test_report` and remove `timer` fixture - Update docstring on `challenges/__init__.py:get_unique_categories` - Add docstring to `generate_test.py` commit 5df2aa7939b45d85a2c2b5de9ac0522330d1502a Author: Reinier van der Leer <pwuts@agpt.co> Date: Tue Jan 9 16:58:01 2024 +0100 refactor(benchmark): Refactor & rename functions in agent_interface.py and agent_api_interface.py - `copy_artifacts_into_temp_folder` -> `copy_challenge_artifacts_into_workspace` - `copy_agent_artifacts_into_folder` -> `download_agent_artifacts_into_folder` - Reorder parameters of `run_api_agent`, `copy_challenge_artifacts_into_workspace`; use `Path` instead of `str` commit 6a256fef4c7950b7ee82fb801e70c83afe6b6f8b Author: Reinier van der Leer <pwuts@agpt.co> Date: Tue Jan 9 16:02:25 2024 +0100 refactor(benchmark): Refactor & typefix report generation and handling logic - Rename functions in reports.py and ReportManager.py to better reflect what they do - `get_previous_test_results` -> `get_and_update_success_history` - `generate_single_call_report` -> `initialize_test_report` - `finalize_reports` -> `finalize_test_report` - `ReportManager.end_info_report` -> `SessionReportManager.finalize_session_report` - Modify `pytest_runtest_makereport` hook in conftest.py to finalize the report immediately after the challenge finishes running instead of after teardown - Move result processing logic from `initialize_test_report` to `finalize_test_report` in reports.py - Use `Test` and `Report` types from report_types.py where possible instead of untyped dicts: reports.py, utils.py, ReportManager.py - Differentiate `ReportManager` into `SessionReportManager`, `RegressionTestsTracker`, `SuccessRateTracker` - Move filtering of optional challenge categories from challenge.py (`Challenge.skip_optional_categories`) to conftest.py (`pytest_collection_modifyitems`) - Remove unused `scores` fixture in conftest.py commit 370d6dbf5df75d78e3878877968e8cd309d6d7fb Author: Reinier van der Leer <pwuts@agpt.co> Date: Tue Jan 9 15:16:43 2024 +0100 refactor(benchmark): Simplify models in report_types.py - Removed ForbidOptionalMeta and BaseModelBenchmark classes. - Changed model attributes to optional: `Metrics.difficulty`, `Metrics.success`, `Metrics.success_percentage`, `Metrics.run_time`, and `Test.reached_cutoff`. - Added validator to `Metrics` model to require `success` and `run_time` fields if `attempted=True`. - Added default values to all optional model fields. - Removed duplicate imports. - Added condition in process_report.py to prevent null lookups if `metrics.difficulty` is not set.
2024-01-17refactor(agent/openai): Upgrade OpenAI library to v1Gravatar Reinier van der Leer 28-1713/+2187
- Update `openai` dependency from ^v0.27.10 to ^v1.7.2 - Update poetry.lock - Update code for changed endpoints and new output types of OpenAI library - Replace uses of `AssistantChatMessageDict` by `AssistantChatMessage` - Update `PromptStrategy`, `BaseAgent`, and all of their subclasses accordingly - Update `OpenAIProvider`, `OpenAICredentials`, azure.yaml.template, .env.template and test_config.py to work with new separate `AzureOpenAI` client - Remove `_OpenAIRetryHandler` and implement retry mechanism with `tenacity` - Rewrite pytest fixture `cached_openai_client` (renamed from `patched_api_requestor`) for OpenAI v1 library
2024-01-16lint(forge): `black .` and `isort .`Gravatar Reinier van der Leer 13-32/+44
2024-01-16chore(forge): Upgrade OpenAI client lib and LiteLLM from v0 to v1Gravatar Reinier van der Leer 4-796/+1344
* Update `openai` dependency from `^0.27.8` to `^1.7.2` * Update `litellm` dependency from `^0.1.821` to `^1.17.9` * Migrate llm.py from OpenAI module-level client to client instance * Update return types in llm.py for new OpenAI and LiteLLM versions * Also remove `Exception` as a return type because they are raised, not returned * Update tutorials/003_crafting_agent_logic.md accordingly Note: this changes the output types of the functions in `forge.llm`: `chat_completion_request`, `create_embedding_request`, `transcribe_audio`
2024-01-16chore(benchmark): Upgrade OpenAI client lib from v0 to v1Gravatar Reinier van der Leer 4-23/+33
2024-01-16refactor(benchmark): Disable Helicone integrationsGravatar Reinier van der Leer 5-160/+123
We want to upgrade the OpenAI library, but `helicone` does not support `openai@^1.0.0`, so we're disabling the Helicone integration for now.
2024-01-16fix(agent/workspace): Fix GCS workspace binary file uploadGravatar Reinier van der Leer 2-5/+9
2024-01-12feat(agent/server): Make port configurable, add documentation for Agent ↵Gravatar Nicholas Tindle 3-2/+12
Protocol DB and port config (#6569) * docs: Add documentation on how to use Agent Protocol in the template - Added documentation on how to use Agent Protocol and its settings in the `.env.template` file. - An explanation is provided for the `AP_SERVER_PORT` and `AP_SERVER_DB_URL` settings. - This change aims to improve the understanding and usage of Agent Protocol in the project. * docs: Update usage.md with information about configuring the API port - Update the documentation for the `serve` mode in `usage.md` - Add information about configuring the port for the API server using the `AP_SERVER_PORT` environment variable. --------- Co-authored-by: Reinier van der Leer <pwuts@agpt.co>
2024-01-12fix(forge): cast port to int (#6643)Gravatar Or Arbel 1-1/+1
When executing `port = os.getenv("PORT", 8000)` if the port is being fetched from a `.env` file it is fetched as a string. This caused an error: `TypeError: 'str' object cannot be interpreted as an integer`
2024-01-02AGBenchmark codebase clean-up (#6650)Gravatar Reinier van der Leer 47-7750/+2120
* refactor(benchmark): Deduplicate configuration loading logic - Move the configuration loading logic to a separate `load_agbenchmark_config` function in `agbenchmark/config.py` module. - Replace the duplicate loading logic in `conftest.py`, `generate_test.py`, `ReportManager.py`, `reports.py`, and `__main__.py` with calls to `load_agbenchmark_config` function. * fix(benchmark): Fix type errors, linting errors, and clean up CLI validation in __main__.py - Fixed type errors and linting errors in `__main__.py` - Improved the readability of CLI argument validation by introducing a separate function for it * refactor(benchmark): Lint and typefix app.py - Rearranged and cleaned up import statements - Fixed type errors caused by improper use of `psutil` objects - Simplified a number of `os.path` usages by converting to `pathlib` - Use `Task` and `TaskRequestBody` classes from `agent_protocol_client` instead of `.schema` * refactor(benchmark): Replace `.agent_protocol_client` by `agent-protcol-client`, clean up schema.py - Remove `agbenchmark.agent_protocol_client` (an offline copy of `agent-protocol-client`). - Add `agent-protocol-client` as a dependency and change imports to `agent_protocol_client`. - Fix type annotation on `agent_api_interface.py::upload_artifacts` (`ApiClient` -> `AgentApi`). - Remove all unused types from schema.py (= most of them). * refactor(benchmark): Use pathlib in agent_interface.py and agent_api_interface.py * refactor(benchmark): Improve typing, response validation, and readability in app.py - Simplified response generation by leveraging type checking and conversion by FastAPI. - Introduced use of `HTTPException` for error responses. - Improved naming, formatting, and typing in `app.py::create_evaluation`. - Updated the docstring on `app.py::create_agent_task`. - Fixed return type annotations of `create_single_test` and `create_challenge` in generate_test.py. - Added default values to optional attributes on models in report_types_v2.py. - Removed unused imports in `generate_test.py` * refactor(benchmark): Clean up logging and print statements - Introduced use of the `logging` library for unified logging and better readability. - Converted most print statements to use `logger.debug`, `logger.warning`, and `logger.error`. - Improved descriptiveness of log statements. - Removed unnecessary print statements. - Added log statements to unspecific and non-verbose `except` blocks. - Added `--debug` flag, which sets the log level to `DEBUG` and enables a more comprehensive log format. - Added `.utils.logging` module with `configure_logging` function to easily configure the logging library. - Converted raw escape sequences in `.utils.challenge` to use `colorama`. - Renamed `generate_test.py::generate_tests` to `load_challenges`. * refactor(benchmark): Remove unused server.py and agent_interface.py::run_agent - Remove unused server.py file - Remove unused run_agent function from agent_interface.py * refactor(benchmark): Clean up conftest.py - Fix and add type annotations - Rewrite docstrings - Disable or remove unused code - Fix definition of arguments and their types in `pytest_addoption` * refactor(benchmark): Clean up generate_test.py file - Refactored the `create_single_test` function for clarity and readability - Removed unused variables - Made creation of `Challenge` subclasses more straightforward - Made bare `except` more specific - Renamed `Challenge.setup_challenge` method to `run_challenge` - Updated type hints and annotations - Made minor code/readability improvements in `load_challenges` - Added a helper function `_add_challenge_to_module` for attaching a Challenge class to the current module * fix(benchmark): Fix and add type annotations in execute_sub_process.py * refactor(benchmark): Simplify const determination in agent_interface.py - Simplify the logic that determines the value of `HELICONE_GRAPHQL_LOGS` * fix(benchmark): Register category markers to prevent warnings - Use the `pytest_configure` hook to register the known challenge categories as markers. Otherwise, Pytest will raise "unknown marker" warnings at runtime. * refactor(benchmark/challenges): Fix indentation in 4_revenue_retrieval_2/data.json * refactor(benchmark): Update agent_api_interface.py - Add type annotations to `copy_agent_artifacts_into_temp_folder` function - Add note about broken endpoint in the `agent_protocol_client` library - Remove unused variable in `run_api_agent` function - Improve readability and resolve linting error * feat(benchmark): Improve and centralize pathfinding - Search path hierarchy for applicable `agbenchmark_config`, rather than assuming it's in the current folder. - Create `agbenchmark.utils.path_manager` with `AGBenchmarkPathManager` and exporting a `PATH_MANAGER` const. - Replace path constants defined in __main__.py with usages of `PATH_MANAGER`. * feat(benchmark/cli): Clean up and improve CLI - Updated commands, options, and their descriptions to be more intuitive and consistent - Moved slow imports into the entrypoints that use them to speed up application startup - Fixed type hints to match output types of Click options - Hid deprecated `agbenchmark start` command - Refactored code to improve readability and maintainability - Moved main entrypoint into `run` subcommand - Fixed `version` and `serve` subcommands - Added `click-default-group` package to allow using `run` implicitly (for backwards compatibility) - Renamed `--no_dep` to `--no-dep` for consistency - Fixed string formatting issues in log statements * refactor(benchmark/config): Move AgentBenchmarkConfig and related functions to config.py - Move the `AgentBenchmarkConfig` class from `utils/data_types.py` to `config.py`. - Extract the `calculate_info_test_path` function from `utils/data_types.py` and move it to `config.py` as a private helper function `_calculate_info_test_path`. - Move `load_agent_benchmark_config()` to `AgentBenchmarkConfig.load()`. - Changed simple getter methods on `AgentBenchmarkConfig` to calculated properties. - Update all code references according to the changes mentioned above. * refactor(benchmark): Fix ReportManager init parameter types and use pathlib - Fix the type annotation of the `benchmark_start_time` parameter in `ReportManager.__init__`, was mistyped as `str` instead of `datetime`. - Change the type of the `filename` parameter in the `ReportManager.__init__` method from `str` to `Path`. - Rename `self.filename` with `self.report_file` in `ReportManager`. - Change the way the report file is created, opened and saved to use the `Path` object. * refactor(benchmark): Improve typing surrounding ChallengeData and clean up its implementation - Use `ChallengeData` objects instead of untyped `dict` in app.py, generate_test.py, reports.py. - Remove unnecessary methods `serialize`, `get_data`, `get_json_from_path`, `deserialize` from `ChallengeData` class. - Remove unused methods `challenge_from_datum` and `challenge_from_test_data` from `ChallengeData class. - Update function signatures and annotations of `create_challenge` and `generate_single_test` functions in generate_test.py. - Add types to function signatures of `generate_single_call_report` and `finalize_reports` in reports.py. - Remove unnecessary `challenge_data` parameter (in generate_test.py) and fixture (in conftest.py). * refactor(benchmark): Clean up generate_test.py, conftest.py and __main__.py - Cleaned up generate_test.py and conftest.py - Consolidated challenge creation logic in the `Challenge` class itself, most notably the new `Challenge.from_challenge_spec` method. - Moved challenge selection logic from generate_test.py to the `pytest_collection_modifyitems` hook in conftest.py. - Converted methods in the `Challenge` class to class methods where appropriate. - Improved argument handling in the `run_benchmark` function in `__main__.py`. * refactor(benchmark/config): Merge AGBenchmarkPathManager into AgentBenchmarkConfig and reduce fragmented/global state - Merge the functionality of `AGBenchmarkPathManager` into `AgentBenchmarkConfig` to consolidate the configuration management. - Remove the `.path_manager` module containing `AGBenchmarkPathManager`. - Pass the `AgentBenchmarkConfig` and its attributes through function arguments to reduce global state and improve code clarity. * feat(benchmark/serve): Configurable port for `serve` subcommand - Added `--port` option to `serve` subcommand to allow for specifying the port to run the API on. - If no `--port` option is provided, the port will default to the value specified in the `PORT` environment variable, or 8080 if not set. * feat(benchmark/cli): Add `config` subcommand - Added a new subcommand `config` to the AGBenchmark CLI, to display information about the present AGBenchmark config. * fix(benchmark): Gracefully handle incompatible challenge spec files in app.py - Added a check to skip deprecated challenges - Added logging to allow debugging of the loading process - Added handling of validation errors when parsing challenge spec files - Added missing `spec_file` attribute to `ChallengeData` * refactor(benchmark): Move `run_benchmark` entrypoint to main.py, use it in `/reports` endpoint - Move `run_benchmark` and `validate_args` from __main__.py to main.py - Replace agbenchmark subprocess in `app.py:run_single_test` with `run_benchmark` - Move `get_unique_categories` from __main__.py to challenges/__init__.py - Move `OPTIONAL_CATEGORIES` from __main__.py to challenge.py - Reduce operations on updates.json (including `initialize_updates_file`) outside of API * refactor(benchmark): Remove unused `/updates` endpoint and all related code - Remove `updates_json_file` attribute from `AgentBenchmarkConfig` - Remove `get_updates` and `_initialize_updates_file` in app.py - Remove `append_updates_file` and `create_update_json` functions in agent_api_interface.py - Remove call to `append_updates_file` in challenge.py * refactor(benchmark/config): Clean up and update docstrings on `AgentBenchmarkConfig` - Add and update docstrings - Change base class from `BaseModel` to `BaseSettings`, allow extras for backwards compatibility - Make naming of path attributes on `AgentBenchmarkConfig` more consistent - Remove unused `agent_home_directory` attribute - Remove unused `workspace` attribute * fix(benchmark): Restore mechanism to select (optional) categories in agent benchmark config * fix(benchmark): Update agent-protocol-client to v1.1.0 - Fixes issue with fetching task artifact listings
2024-01-02[Documentation Update] Updating Using and Creating Abilities to use Action ↵Gravatar Himanshu Mittal 1-8/+8
Annotations (#6653) Changing ability documentation
2023-12-14fix(agent/release): Add gitpython as a direct dependencyGravatar Reinier van der Leer 2-10/+6
gitpython was installed as an indirect dependency via agbenchmark. The release builds don't contain agbenchmark and thus also lack the gitpython package, which breaks the image.
2023-12-14fix(agent/release): Move auto-gpt-plugin-template to regular dependenciesGravatar Reinier van der Leer 1-1/+1
- Move `auto-gpt-plugin-template` from dev dependencies to regular dependencies in `pyproject.toml`. - Fixes #6566 - No module named 'auto_gpt_plugin_template'.
2023-12-14feat(agent/logging): Log warning when action raises errorGravatar Reinier van der Leer 3-4/+9
- Add logging to capture errors raised during execution of actions in the Agent - Move `fmt_kwargs` function from `agent_protocol_server.py` to `logs/utils.py`
2023-12-14test: Speed up test_gcs_file_workspaceGravatar Reinier van der Leer 1-3/+3
- Change the GCS workspace fixture to module level so it is only built and torn down once. This saves 30-40s on a test run.
2023-12-14lint: Remove unused `os` import in file_operations_utils.pyGravatar Reinier van der Leer 1-1/+0
2023-12-14fix(agent/file_operations): Fix read_file command in GCS and S3 workspacesGravatar Reinier van der Leer 4-10/+17
- Update the `read_file` function in `file_operations.py` to pass the file's extension to the `decode_textual_file` function. - Modify the `decode_textual_file` function in `file_operations_utils.py` to accept the file extension as an argument. - Update the `content` property in the `FileContextItem` class in `context_item.py` to pass the file's extension to the `decode_textual_file` function. - Update the `test_parsers` function in `test_text_file_parsers.py` to pass the file extension to the `decode_textual_file` function.
2023-12-13lint: Remove unused import in autogpt/core/utils/json_schema.pyGravatar Reinier van der Leer 1-1/+0
2023-12-13fix(agent/tty): Fix `finish` command in TTY modeGravatar Reinier van der Leer 1-0/+2
- Prevent the Agent from treating `AgentTerminated` like it would any other exception raised by a command. - The agent should raise AgentTerminated exception to exit the loop.
2023-12-13fix: Implement self-correction for invalid LLM responsesGravatar Reinier van der Leer 5-46/+67
- Fix the parsing of invalid LLM responses by appending an error message to the prompt and allowing the LLM to fix its mistakes. - Update the `OpenAIProvider` to handle the self-correction process and limit the number of attempts to fix parsing errors. - Update the `BaseAgent` to profit from the new pasing and parse-fixing mechanism. This change ensures that the system can handle and recover from errors in parsing LLM responses. Hopefully this fixes #1407 once and for all.
2023-12-13ci: Reset cassettes for test_dalleGravatar Reinier van der Leer 1-0/+0
2023-12-13ci: Fix docker release workflowGravatar Reinier van der Leer 1-1/+3
- Update autogpt-docker-release.yml to correctly sanitize image tags - This unbreaks the release workflow
2023-12-13chore: Bump version to 0.5.0 and update bulletinGravatar Reinier van der Leer 2-14/+6
- Updated the quick links and user guide URLs in the bulletin - Released v0.5.0 with cloud-readiness, a new UI, support for the newest Agent Protocol version, and other improvements See the release notes on Github for more details: https://github.com/Significant-Gravitas/AutoGPT/releases
2023-12-13refactor(agent): Reduce log spam in Agent Protocol modeGravatar Reinier van der Leer 3-16/+16
- Removed unnecessary print_attribute calls in configurators.py and configurator.py files - Consolidated printing of configuration attributes in main.py for improved readability and reduced log spam in Agent Protocol mode
2023-12-13chore(agent): Update dependenciesGravatar Reinier van der Leer 2-403/+367
- Update dependencies - Remove `markdown` dependency after it became unused in d95e3b5b
2023-12-13fix(agent/file_workspace): Fix workspace initialization and listing behavior ↵Gravatar Reinier van der Leer 4-45/+65
in GCS and S3 file workspaces - Update GCSFileWorkspace.initialize() to handle cases where the bucket doesn't exist and create it if necessary - Add logging to S3FileWorkspace.initialize() and GCSFileWorkspace.initialize() - Update GCSFileWorkspace.list() and S3FileWorkspace.list() to correctly handle nested paths and return the relative paths of files - Fix tests for GCSFileWorkspace and S3FileWorkspace to account for the changes in initialization and listing behavior - Fix S3FileWorkspace.open_file() to correctly switch between binary and text mode - Added tests to verify the fixes in workspace initialization and listing behavior
2023-12-13chore(autogpt): Update duckduckgo-search to v4.0.0Gravatar Reinier van der Leer 2-169/+37
- Fixes #6553 (`web_search` command not working) - v3.x.x of the duckduckgo-search library no longer works, so updating to v4.0.0 unbreaks the `web_search` command
2023-12-13chore(forge): Update duckduckgo-search to v4.0.0Gravatar Reinier van der Leer 2-1392/+1162
- v3.x.x of the duckduckgo-search library no longer works, so updating to v4.0.0 unbreaks the search functionality
2023-12-12Add dependencies required to use PostgreSQL (#6558)Gravatar Nicholas Tindle 2-1/+83
feat: Add dependencies required to use PostgreSQL - Added psycopg2-binary version 2.9.9 to the dependencies in pyproject.toml - Updated the poetry.lock file with the new package information
2023-12-12refactor(agent/file_operations): Refactor file opening/reading and parsingGravatar Reinier van der Leer 8-110/+124
- Update the signature of `FileWorkspace.open_file` and fix implementations in every workspace backend - Replace `open()` with `workspace.open_file` in the `read_file` command to use the workspace's file opening functionality - Fix the parametrization of the `test_text_file_parsers` test to correctly test text file parsers
2023-12-12fix(agent/file_operations): Fix path processing in file_operations.py and ↵Gravatar Reinier van der Leer 8-66/+81
across workspace backend implementations - Adjusted path processing and use of `agent.workspace` in the file_operations.py module to prevent double path resolution. - Updated the `is_duplicate_operation` and `log_operation` functions in file_operations.py to use the `make_relative` argument of the `sanitize_path_arg` decorator. - Refactored the `write_to_file`, `list_folder`, and `list_files` functions in file_operations.py to accept both string and Path objects as the path argument. - Modified the GCSFileWorkspace and S3FileWorkspace classes in the file_workspace module to ensure that the root path is always an absolute path. This commit addresses issues with path processing in the file_operations.py module and across different workspace backend implementations. The changes ensure that relative paths are correctly converted to absolute paths where necessary and that the file operations logic functions consistently handle path arguments as strings or Path objects. Additionally, the GCSFileWorkspace and S3FileWorkspace classes now enforce that the root path is always an absolute path.
2023-12-12refactor: Remove X- prefix from API request headersGravatar Reinier van der Leer 1-5/+5
- Remove X- prefix from X-AutoGPT-UserID, X-AP-TaskID, and X-AP-StepID headers - Refactor literal references to "ask_user" to `ask_user.__name__` in AgentProtocolServer
2023-12-11ci/cd: Strip `autogpt-` from tag name for Docker releaseGravatar Reinier van der Leer 1-1/+1
2023-12-11ci/cd: Only run AutoGPT Docker Release workflow on releases linked to ↵Gravatar Reinier van der Leer 1-0/+1
`autogpt-*` tag - Add a condition to the job in autogpt-docker-release.yml to only run on `refs/tags/autogpt-`
2023-12-08build: Reduce AutoGPT Docker image sizeGravatar Reinier van der Leer 1-3/+5
- Removed firefox-esr package to reduce image size - Added --no-cache flag to poetry install steps - Removed source code files after installation to reduce image size
2023-12-08fix(agent): Fix type issues with agent ID and apply_overrides_to_ai_settingsGravatar Reinier van der Leer 3-3/+4
- Fix type annotation for `agent_id` in `BaseAgentSettings` class - Add assertion to ensure `agent_id` is not an empty string in `AgentManager.get_agent_dir()` method - Change type of `override_name` and `override_role` to be optional in `apply_overrides_to_ai_settings()` function