Commit Graph

347 Commits

Author SHA1 Message Date
Reinier van der Leer
956cdc77fa fix(agent/json_utils): Decode as JSON rather than Python objects
* Replace `ast.literal_eval` with `json.loads` in `extract_dict_from_response`

This fixes a bug where boolean values could not be decoded because of their required capitalization in Python.
2024-01-31 14:15:02 +01:00
Reinier van der Leer
83a0b03523 fix(agent/prompting): Fix representation of (optional) command parameters in prompt 2024-01-31 14:10:22 +01:00
Reinier van der Leer
25b9e290a5 fix(agent/json_utils): Make extract_dict_from_response more robust
* Accommodate for both ```json and ```JSON blocks in responses
2024-01-29 15:03:09 +01:00
Reinier van der Leer
ab860981d8 feat(agent/llm): Add support for gpt-4-0125-preview
* Add `gpt-4-0125-preview` model to OpenAI model list
* Add `gpt-4-turbo-preview` alias to OpenAI model list
2024-01-29 11:22:32 +01:00
Reinier van der Leer
fc37ffdfcf feat(agent/llm/openai): Include compatibility tool call extraction in LLM response parse-fix loop 2024-01-19 19:23:17 +01:00
Reinier van der Leer
8c65f3c748 fix(agent/serve): Fix task cost tracking persistence in AgentProtocolServer
- 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-19 19:20:05 +01:00
Reinier van der Leer
354106be7b feat(agent/llm): Add cost tracking and logging to AgentProtocolServer 2024-01-19 17:31:59 +01:00
Reinier van der Leer
faf5f9e5a4 fix(agent): Fix extract_dict_from_response flakiness
- 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-19 15:49:32 +01:00
Reinier van der Leer
e4687e0f03 fix(agent): Fix "ChatModelResponse not subscriptable" errors in 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-19 15:45:31 +01:00
Reinier van der Leer
c5b17851e0 fix(agent): Handle artifact modification properly
- 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-19 12:08:59 +01:00
Reinier van der Leer
b238abac52 feat(forge/db): Add AgentDB.update_artifact method 2024-01-19 11:41:40 +01:00
Reinier van der Leer
f2595af362 refactor(agent/openai): Upgrade OpenAI library to v1
- 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-17 20:11:13 +01:00
Reinier van der Leer
39fd1d6be1 lint(forge): black . and isort . 2024-01-16 16:30:37 +01:00
Reinier van der Leer
f0ede64ded chore(forge): Upgrade OpenAI client lib and LiteLLM from v0 to v1
* 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-16 16:14:52 +01:00
Reinier van der Leer
797c5bbc13 fix(agent/workspace): Fix GCS workspace binary file upload 2024-01-16 14:20:54 +01:00
Nicholas Tindle
97023b9a3c feat(agent/server): Make port configurable, add documentation for Agent 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-12 14:41:43 +01:00
Or Arbel
48a2186cf3 fix(forge): cast port to int (#6643)
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-12 11:24:40 +01:00
Himanshu Mittal
b8238c2228 [Documentation Update] Updating Using and Creating Abilities to use Action Annotations (#6653)
Changing ability documentation
2024-01-02 16:32:18 +01:00
Reinier van der Leer
45c8476e67 fix(agent/release): Add gitpython as a direct dependency
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-14 16:13:55 +01:00
Reinier van der Leer
21d4ce8d4b fix(agent/release): Move auto-gpt-plugin-template to regular dependencies
- 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-14 13:31:57 +01:00
Reinier van der Leer
efb5fed462 feat(agent/logging): Log warning when action raises error
- 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-14 02:38:48 +01:00
Reinier van der Leer
167fea3f1e test: Speed up test_gcs_file_workspace
- 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-14 02:31:05 +01:00
Reinier van der Leer
5107c6bbb9 lint: Remove unused os import in file_operations_utils.py 2023-12-14 02:27:40 +01:00
Reinier van der Leer
e428130e4a fix(agent/file_operations): Fix read_file command in GCS and S3 workspaces
- 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-14 02:07:22 +01:00
Reinier van der Leer
5978031f7a lint: Remove unused import in autogpt/core/utils/json_schema.py 2023-12-13 22:53:27 +01:00
Reinier van der Leer
0e94c7b5fc fix(agent/tty): Fix finish command in TTY mode
- 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-13 22:50:02 +01:00
Reinier van der Leer
acf4df9f87 fix: Implement self-correction for invalid LLM responses
- 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-13 22:48:07 +01:00
Reinier van der Leer
6b0d0d4dc8 ci: Reset cassettes for test_dalle 2023-12-13 22:06:00 +01:00
Reinier van der Leer
d41963d5fa chore: Bump version to 0.5.0 and update bulletin
- 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-13 19:55:08 +01:00
Reinier van der Leer
9e9142aa8e refactor(agent): Reduce log spam in Agent Protocol mode
- 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-13 19:47:46 +01:00
Reinier van der Leer
bdc4c38d04 chore(agent): Update dependencies
- Update dependencies
- Remove `markdown` dependency after it became unused in d95e3b5b
2023-12-13 18:31:17 +01:00
Reinier van der Leer
967338193e fix(agent/file_workspace): Fix workspace initialization and listing behavior 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-13 18:07:25 +01:00
Reinier van der Leer
d820239a7c chore(autogpt): Update duckduckgo-search to v4.0.0
- 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-13 15:52:33 +01:00
Reinier van der Leer
2e457753d0 chore(forge): Update duckduckgo-search to v4.0.0
- v3.x.x of the duckduckgo-search library no longer works, so updating to v4.0.0 unbreaks the search functionality
2023-12-13 15:47:14 +01:00
Nicholas Tindle
b33f4cca6b Add dependencies required to use PostgreSQL (#6558)
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-12 19:06:50 -06:00
Reinier van der Leer
d95e3b5b54 refactor(agent/file_operations): Refactor file opening/reading and parsing
- 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-12 17:41:55 +01:00
Reinier van der Leer
198a0ecad6 fix(agent/file_operations): Fix path processing in file_operations.py and 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-12 15:29:25 +01:00
Reinier van der Leer
3e19da1258 refactor: Remove X- prefix from API request headers
- 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-12 10:52:18 +01:00
Reinier van der Leer
f3faa47814 build: Reduce AutoGPT Docker image size
- 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-08 15:43:36 +01:00
Reinier van der Leer
2d4e16d5e1 fix(agent): Fix type issues with agent ID and apply_overrides_to_ai_settings
- 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
2023-12-08 14:13:59 +01:00
Reinier van der Leer
fadfea2046 feat(agent/serve): Add StepID header to outgoing LLM requests
- Update `AgentProtocolServer` to include `X-AP-StepID` header in outgoing LLM requests.
2023-12-08 13:54:31 +01:00
Reinier van der Leer
6b19b78f87 feat(agent/serve): Add TaskID and UserID headers to outgoing LLM requests
- Update `AgentProtocolServer` to include `X-AP-TaskID` and `X-AutoGPT-UserID` headers in outgoing requests for Agent Protocol tasks.
- Modify `ModelProvider` and `OpenAIProvider` to allow configuring extra headers to be added to all outgoing requests.
- Fix the type of the `task_id` parameter in `AgentProtocolServer.get_task`
2023-12-08 13:41:37 +01:00
Reinier van der Leer
f734bdb314 fix(forge): Change task_id parameter on AgentDB.get_task from int to str
The `task_id` parameter was incorrectly typed as `int`: the database column is type `String`.
2023-12-08 13:20:20 +01:00
Reinier van der Leer
a17f752705 fix(agent): Fix artifact download method & response
- Update the return type of the `AgentProtocolServer.get_artifact` method to `StreamingResponse`.
- Fix the Content-Disposition header in the response to include quotes around the filename.
2023-12-08 12:36:51 +01:00
Reinier van der Leer
05321c9dce chore(agent): Update forge dependency 2023-12-08 12:17:56 +01:00
Reinier van der Leer
20cf4cce92 fix(forge): Initialize TaskRequestBody.additional_input as None
The `additional_input` field was being initialized as `{}`, which points to the same object for every instance of `TaskRequestBody`.
2023-12-08 12:14:40 +01:00
Reinier van der Leer
55fee0471f fix(agent): Fix setup script
- Remove `poetry install` that caused uninstall+reinstall of benchmark packages on every run
2023-12-08 12:10:07 +01:00
Reinier van der Leer
e2f760aef4 chore: Update forge dependency
- Update forge.sdk.schema import to forge.sdk.model in agent_protocol_server.py
- Update poetry.lock with new forge dependency reference
2023-12-08 01:06:06 +01:00
Reinier van der Leer
8b27f2c47b fix(forge/db): Fix persistence of Step.additional_input and Step.additional_output
- Fixed the persistence issue of additional_input and additional_output in the Step class in `forge.sdk`. The additional_input and additional_output attributes were not typed and initialized properly.
2023-12-08 00:54:38 +01:00
Reinier van der Leer
8985b7b01b fix(agent/serve): Fix artifact creation
- Link agent-created artifacts to the corresponding step
- Mark agent-created artifacts as such
2023-12-07 16:24:14 +01:00