aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
37 hourslint: Fix linting errors in git_log_to_release_notes.pyHEADmasterGravatar Reinier van der Leer 1-3/+2
39 hoursfeat(agent/core): Allow `list[ChatMessage]` in `dump_prompt`Gravatar Reinier van der Leer 1-3/+7
42 hoursfix(agent): Swap target files and symlinks of component documentation to ↵Gravatar Reinier van der Leer 4-167/+167
make package buildable Documentation files were in docs/content/AutoGPT/components, symlinks in autogpts/autogpt/autogpt/(agents|commands). Chef doesn't allow symlinks that point to locations outside of package dir. Replacing the documentation files with symlinks, and symlinks with the actual documentation files, should fix this.
42 hoursfix(agent/docs): Fix symlinks to component-based agent docsGravatar Reinier van der Leer 2-2/+2
42 hourslint(agent): Add `flake8` to pre-commit checksGravatar Reinier van der Leer 1-0/+5
4 daysfeat(agent/scripts): Add git_log_to_release_notes.pyGravatar Reinier van der Leer 1-0/+142
This script asks the user to choose two git refs, and then writes release notes for the diff between those two refs.
4 daysfeat(agent/core): Add Anthropic Claude 3 support (#7085)Gravatar Reinier van der Leer 24-149/+923
- feat(agent/core): Add `AnthropicProvider` - Add `ANTHROPIC_API_KEY` to .env.template and docs Notable differences in logic compared to `OpenAIProvider`: - Merges subsequent user messages in `AnthropicProvider._get_chat_completion_args` - Merges and extracts all system messages into `system` parameter in `AnthropicProvider._get_chat_completion_args` - Supports prefill; merges prefill content (if any) into generated response - Prompt changes to improve compatibility with `AnthropicProvider` Anthropic has a slightly different API compared to OpenAI, and has much stricter input validation. E.g. Anthropic only supports a single `system` prompt, where OpenAI allows multiple `system` messages. Anthropic also forbids sequences of multiple `user` or `assistant` messages and requires that messages alternate between roles. - Move response format instruction from separate message into main system prompt - Fix clock message format - Add pre-fill to `OneShot` generated prompt - refactor(agent/core): Tweak `model_providers.schema` - Simplify `ModelProviderUsage` - Remove attribute `total_tokens` as it is always equal to `prompt_tokens + completion_tokens` - Modify signature of `update_usage(..)`; no longer requires a full `ModelResponse` object as input - Improve `ModelProviderBudget` - Change type of attribute `usage` to `defaultdict[str, ModelProviderUsage]` -> allow per-model usage tracking - Modify signature of `update_usage_and_cost(..)`; no longer requires a full `ModelResponse` object as input - Allow `ModelProviderBudget` zero-argument instantiation - Fix type of `AssistantChatMessage.role` to match `ChatMessage.role` (str -> `ChatMessage.Role`) - Add shared attributes and constructor to `ModelProvider` base class - Add `max_output_tokens` parameter to `create_chat_completion` interface - Add pre-filling as a global feature - Add `prefill_response` field to `ChatPrompt` model - Add `prefill_response` parameter to `create_chat_completion` interface - Add `ChatModelProvider.get_available_models()` and remove `ApiManager` - Remove unused `OpenAIChatParser` typedef in openai.py - Remove redundant `budget` attribute definition on `OpenAISettings` - Remove unnecessary `usage` in `OpenAIProvider` > `default_settings` > `budget` - feat(agent): Allow use of any available LLM provider through `MultiProvider` - Add `MultiProvider` (`model_providers.multi`) - Replace all references to / uses of `OpenAIProvider` with `MultiProvider` - Change type of `Config.smart_llm` and `Config.fast_llm` from `str` to `ModelName` - feat(agent/core): Validate function call arguments in `create_chat_completion` - Add `validate_call` method to `CompletionModelFunction` in `model_providers.schema` - Add `validate_tool_calls` utility function in `model_providers.utils` - Add tool call validation step to `create_chat_completion` in `OpenAIProvider` and `AnthropicProvider` - Remove (now redundant) command argument validation logic in agent.py and models/command.py - refactor(agent): Rename `get_openai_command_specs` to `function_specs_from_commands`
5 daysCreate .pr_agent.tomlGravatar Nicholas Tindle 1-0/+6
7 daysfix(agent): Fix `open_file` and `open_folder` commandsGravatar Reinier van der Leer 1-18/+14
They weren't ported properly to the new component-based architecture: the `@sanitize_path` decorator was removed, causing path handling issues.
7 daysrefactor(agent)!: Use Pydantic models for `Agent` process output (#7116)Gravatar Reinier van der Leer 12-440/+307
* Introduce `BaseAgentActionProposal`, `OneShotAgentActionProposal`, and `AssistantThoughts` models to replace `ThoughtProcessResponse`, `DEFAULT_RESPONSE_SCHEMA` * Refactor and clean up code because now we don't need to do as much type checking everywhere * Tweak `OneShot` response format instruction Granular: * `autogpt.agents.prompt_strategies.one_shot` * Replace ThoughtProcessResponse`, `DEFAULT_RESPONSE_SCHEMA` and parsing logic by `AssistantThoughts` and `OneShotAgentActionProposal` * (TANGENTIAL) Move response format instruction into main system prompt message * (TANGENTIAL) Adjust response format instruction * `autogpt.agents.base` * Add `BaseAgentActionProposal` base model -> replace `ThoughtProcessOutput` * Change signature of `execute` method to accept `BaseAgentActionProposal` instead of separate `command_name` and `command_args` * Add `do_not_execute(proposal, feedback)` abstract method, replacing `execute("human_feedback", ..., feedback)` * Move `history` definition from `BaseAgentSettings` to `AgentSettings` (the only place where it's used anyway) * `autogpt.models` * Add `.utils` > `ModelWithSummary` base model * Make the models in `.action_history` (`Episode`, `EpisodicActionHistory`) generic with a type parameter for the type of `Episode.action` * `autogpt.core.resource.model_providers.schema` * Add `__str__` to `AssistantFunctionCall` which pretty-prints the function call All other changes are a direct result of the changes above. ## BREAKING CHANGE: * Due to the change in `autogpt.models.action_history`, the application after this change will be unable to load/resume agents from before this change and vice versa. * The `additional_output` field in the response of `execute_step` has changed slightly: * Type of `.thoughts.plan` has changed from `str` to `list[str]` * `.command` -> `.use_tool` * `.command.args` -> `.use_tool.arguments`
9 daysfix(agent): Fix `execute_python_file` on local storageGravatar Reinier van der Leer 1-2/+2
It's still broken for remote/cloud storage.
9 daysfeat(agent/core): Support referenced types in `JSONSchema.from_dict`Gravatar Reinier van der Leer 1-1/+26
9 daysfix(agent/core): Format parse errors for log statement in ↵Gravatar Reinier van der Leer 1-5/+5
`OpenAIProvider.create_chat_completion`
10 daysFix ImportError for validate_yaml_file function (#7110)Gravatar 王苏云 1-1/+1
* Fix ImportError for validate_yaml_file function * Fix ImportError for validate_yaml_file function --------- Co-authored-by: suyun <sylearn@foxmail.com> Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co>
10 daysfix(autogpt): Revert line in `poetry.lock` (#7113)Gravatar Krzysztof Czerwinski 1-1/+1
Revert line in `poetry.lock` to from before https://github.com/Significant-Gravitas/AutoGPT/pull/7097
10 daysclean(autogpt): Remove old plugin system (#7097)Gravatar Krzysztof Czerwinski 26-1490/+11
### Background Follow up after merging https://github.com/Significant-Gravitas/AutoGPT/pull/7054, old plugins will no longer be used. ### Changes 🏗️ - Removed all dead code needed to load and use plugins. - Removed `auto-gpt-plugin-template` dependency - Removed `rev=` from `autogpt-forge` dependency (the set `rev` had incompatible `duckduckgo-search` versions) - Kept `--install-plugin-deps` CLI option and dead code associated (may be needed for new plugins)
13 daysfix(agent): Update .env.template to match changes in 370615eGravatar Reinier van der Leer 1-4/+4
13 daysfeat(agent): Add support for new `gpt-4-turbo` model and set as default ↵Gravatar Reinier van der Leer 1-2/+6
`SMART_LLM`
2024-04-24fix(agent): Fix `OneShotAgentPromptStrategy` parser when using ↵Gravatar Reinier van der Leer 1-2/+9
functions/tools API Also: - Improve error message when the LLM doesn't call any tools
2024-04-24fix(agent): Expand failure check in `json_loads(..)`Gravatar Reinier van der Leer 1-1/+1
Not only check if the resulting object is `demjson3.undefined`, but also `demjson3.syntax_error`.
2024-04-24fix(agent): Omit `EventHistory` progress message if emptyGravatar Reinier van der Leer 1-7/+6
Also add a heading to the progress section
2024-04-24feat(agent/cli): Speed up loading of saved agentsGravatar Reinier van der Leer 1-3/+3
O(n) to O(1) by removing individual `.exists(dir / "state.json")` calls and using `.list_files()` instead of `.list_folders()`
2024-04-24chore(agent): Update `duckduckgo-search` to v5.3.0Gravatar Reinier van der Leer 1-58/+59
2024-04-24fix(agent): Fix crash when `LOG_FORMAT=structured_google_cloud`Gravatar Reinier van der Leer 1-1/+1
Another piece of fallout from cf00c33 - fix(agent): Fix debug logging & amend configure_logging for easier use
2024-04-23Add all the new component docs to the site and do a tidy up of docs (#7098)Gravatar Nicholas Tindle 18-92/+159
* feat: add all the new component docs to the site * fix(docs): relative links and markdown warnings * feat(docs): How to contribute to the docs as a docs section * fix(docs): missed docs page for developer setup * fix(docs): re-add configurations options * fix(docs): bad link to components fixed * fix(docs): bad link to components fixed * ref(docs): reorder some items to make more sense * fix(docs): bad indentation and duplicate block * fix(docs): warning about out of date markdown extension * fix(docs): broken links fixed * fix(docs): markdown formatter complaints
2024-04-23fix(agent/setup): Fix installing ONNXRuntime on macOS on some architectures ↵Gravatar Nicholas Tindle 2-52/+54
(#7022) Co-authored-by: Reinier van der Leer <pwuts@agpt.co>
2024-04-23fix(agent): Support OpenAI Project API keys (#7099)Gravatar Fullstop000 1-1/+1
Amend regex expression in config.py that OpenAI API keys are validated against Signed-off-by: Fullstop000 <fullstop1005@gmail.com>
2024-04-22fix(agent): Full fix for CLI breakage introduced in cf00c33Gravatar Reinier van der Leer 3-24/+37
2024-04-22fix(agent): Logging hotfix (#7096)Gravatar Krzysztof Czerwinski 1-4/+3
Fix https://github.com/Significant-Gravitas/AutoGPT/commit/cf00c33f907b12e48218404f849c11beb568001b
2024-04-22feat(agent): Component-based Agents (#7054)Gravatar Krzysztof Czerwinski 71-3215/+3230
This incremental re-architecture unifies Agent code and plugins, so everything is component-based. ## Breaking changes - Removed command categories and `DISABLED_COMMAND_CATEGORIES` environment variable. Use `DISABLED_COMMANDS` environment variable to disable individual commands. - Changed `command` decorator; old-style commands are no longer supported. Implement `CommandProvider` on components instead. - Removed `CommandRegistry`, now all commands are provided by components implementing `CommandProvider`. - Removed `prompt_config` from `AgentSettings`. - Removed plugin support: old plugins will no longer be loaded and executed. - Removed `PromptScratchpad`, it was used by plugins and is no longer needed. - Changed `ThoughtProcessOutput` from tuple to pydantic `BaseModel`. ## Other changes - Created `AgentComponent`, protocols and logic to execute them. - `BaseAgent` and `Agent` is now composed of components. - Moved some logic from `BaseAgent` to `Agent`. - Moved agent features and commands to components. - Removed check if the same operation is about to be executed twice in a row. - Removed file logging from `FileManagerComponent` (formerly `AgentFileManagerMixin`) - Updated tests - Added docs See [Introduction](https://github.com/kcze/AutoGPT/blob/kpczerwinski/open-440-modular-agents/docs/content/AutoGPT/component%20agent/introduction.md) for more information.
2024-04-22fix(agent/core): Set `OpenAIProvider._configuration.retries_per_request` to ↵Gravatar Reinier van der Leer 1-1/+1
7 by default 10 was too much, caused multi-minute timeouts between retries
2024-04-22refactor(agent): Tweak `model_providers.schema` for easier useGravatar Reinier van der Leer 5-62/+29
- Set default values for `ProviderBudget` / `ModelProviderBudget` fields - Remove redundant field redefinitions on `ModelProviderBudget` class - Change `ModelProviderUsage.update_usage(..)` and `ModelProviderBudget.update_usage_and_cost(..)` signatures for easier use - Change `ModelProviderBudget.usage` from `ModelProviderUsage` to `defaultdict[str, ModelProviderUsage]` for per-model usage tracking - Fix `ChatModelInfo`/`EmbeddingModelInfo` `service` attribute: rename from `llm_service` to match base class and fix types. This makes it unnecessary to specify the `service` field when creating a `ChatModelInfo` or `EmbeddingModelInfo` object. - Use `defaultdict(ModelProviderBudget)` for task budget tracking in agent_protocol_server.py
2024-04-22feat(agent/core): Add `max_output_tokens` parameter to ↵Gravatar Reinier van der Leer 3-2/+8
`create_chat_completion` interface
2024-04-22refactor(agent): Add `ChatModelProvider.get_available_models()` and remove ↵Gravatar Reinier van der Leer 10-295/+78
`ApiManager`
2024-04-22fix(agent/tests): Remove useless tests in test_config.pyGravatar Reinier van der Leer 1-63/+0
2024-04-22fix(agent): Fix debug logging & amend `configure_logging` for easier useGravatar Reinier van der Leer 6-57/+65
2024-04-21lint(agent): Remove unused `os` import in file_storage/s3.pyGravatar Reinier van der Leer 1-1/+0
2024-04-18feat(agent/core): Allow zero-argument instantiation of `OpenAIProvider`Gravatar Reinier van der Leer 1-4/+9
2024-04-18refactor(agent): Remove redundant parsing functions in config classesGravatar Reinier van der Leer 3-33/+15
Pydantic has built-in typecasting logic, so converting to Python builtin types and enums is done automatically.
2024-04-16refactor(agent): Refactor & improve `create_chat_completion` (#7082)Gravatar Reinier van der Leer 8-113/+208
* refactor(agent/core): Rearrange and split up `OpenAIProvider.create_chat_completion` - Rearrange to reduce complexity, improve separation/abstraction of concerns, and allow multiple points of failure during parsing - Move conversion from `ChatMessage` to `openai.types.ChatCompletionMessageParam` to `_get_chat_completion_args` - Move token usage and cost tracking boilerplate code to `_create_chat_completion` - Move tool call conversion/parsing to `_parse_assistant_tool_calls` (new) * fix(agent/core): Handle decoding of function call arguments in `create_chat_completion` - Amend `model_providers.schema`: change type of `arguments` from `str` to `dict[str, Any]` on `AssistantFunctionCall` and `AssistantFunctionCallDict` - Implement robust and transparent parsing in `OpenAIProvider._parse_assistant_tool_calls` - Remove now unnecessary `json_loads` calls throughout codebase * feat(agent/utils): Improve conditions and errors in `json_loads` - Include all decoding errors when raising a ValueError on decode failure - Use errors returned by `return_errors` instead of an error buffer - Fix check for decode failure
2024-04-12feat(agent): Improve feedback in `create_chat_completion` parse-fix mechanismGravatar Reinier van der Leer 1-1/+4
Include error type in feedback message
2024-04-12refactor(agent/utils): Clean up `JSONSchema.validate_object` signature & ↵Gravatar Reinier van der Leer 2-16/+9
docstring
2024-04-12fix(agent): Make `Agent.save_state` behave like save as (#7025)Gravatar Krzysztof Czerwinski 9-16/+151
* Make `Agent.save_state` behave like "save as" - Leave previously saved state untouched - Save agent state in new folder corresponding to new `agent_id` - Copy over workspace contents to new folder * Add `copy` method to `FileStorage` --------- Co-authored-by: Reinier van der Leer <pwuts@agpt.co>
2024-04-10fix(ci): Disable annoying "PR too big" auto-messageGravatar Reinier van der Leer 1-0/+1
2024-03-25fix(agent, forge): Conform web_search.py to duckduckgo_search v5 (#7046)Gravatar Krzysztof Czerwinski 4-39/+43
Update web_search command for both autogpt and forge to adjust for breaking change in v5 of duckduckgo_search, update duckduckgo_search to ^5.0.0 --------- Co-authored-by: Nicholas Tindle <nicholas.tindle@agpt.co>
2024-03-25fix(agent, forge): Conform `web_search.py` to `duckduckgo_search` v5 (#7045)Gravatar Krzysztof Czerwinski 4-6/+4
Update `web_search` command for both autogpt and forge to adjust for breaking change in v5 of `duckduckgo_search`
2024-03-22fix(agent): Fix type issue in test_s3_file_storage.pyGravatar Reinier van der Leer 1-1/+1
2024-03-22fix(agent): Fix check when loading an existing agent (#7026)Gravatar Krzysztof Czerwinski 1-2/+5
Now the check also ensures the chosen agent number is within proper range
2024-03-22security(agent): Replace unsafe `pyyaml` loader with `SafeLoader` (#7035)Gravatar Matheus Oliveira 7-7/+7
Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com>
2024-03-22ci(agent): Add macOS on M1 to AutoGPT CI matrix (#7041)Gravatar Reinier van der Leer 1-2/+2
Use a `macos-14` runner to cover macOS on M1/arm64 - Add `macos-arm64` to `platform-os` matrix, and map it to `macos-14` runner