aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
11 daysMerge branch 'master' into forge/fixesforge/fixesGravatar Nicholas Tindle 416-3080/+1263
11 daysfix(agent): Fix type propagation of `Command` and `@command` when used on ↵Gravatar Reinier van der Leer 2-13/+13
methods (#7124)
11 daysRemove arena (#7134)Gravatar Swifty 382-2315/+1
* remove arena * refactor: Remove Arena intake workflow * Remove all mention of the arena * remove evo.ninja
11 daysRemove arena submission from cli (#7137)Gravatar Swifty 1-433/+0
12 dayslint: Fix linting errors in git_log_to_release_notes.pyGravatar Reinier van der Leer 1-3/+2
13 daysfeat(agent/core): Allow `list[ChatMessage]` in `dump_prompt`Gravatar Reinier van der Leer 1-3/+7
13 daysfix(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.
13 daysfix(agent/docs): Fix symlinks to component-based agent docsGravatar Reinier van der Leer 2-2/+2
13 dayslint(agent): Add `flake8` to pre-commit checksGravatar Reinier van der Leer 1-0/+5
2024-05-04feat(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.
2024-05-04feat(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`
2024-05-04Create .pr_agent.tomlGravatar Nicholas Tindle 1-0/+6
2024-05-02Merge branch 'master' into forge/fixesGravatar Nicholas Tindle 13-458/+321
2024-05-02fix(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.
2024-05-02refactor(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`
2024-05-01Merge branch 'master' into forge/fixesGravatar Nicholas Tindle 1-2/+2
2024-04-30fix(agent): Fix `execute_python_file` on local storageGravatar Reinier van der Leer 1-2/+2
It's still broken for remote/cloud storage.
2024-04-30Merge branch 'master' into forge/fixesGravatar Nicholas Tindle 3-7/+32
2024-04-30feat(agent/core): Support referenced types in `JSONSchema.from_dict`Gravatar Reinier van der Leer 1-1/+26
2024-04-30fix(agent/core): Format parse errors for log statement in ↵Gravatar Reinier van der Leer 1-5/+5
`OpenAIProvider.create_chat_completion`
2024-04-29Fix 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>
2024-04-29Merge branch 'master' into forge/fixesGravatar Nicholas Tindle 26-1489/+10
2024-04-29fix(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
2024-04-28clean(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)
2024-04-26Merge branch 'master' into forge/fixesGravatar Nicholas Tindle 28-221/+301
2024-04-26fix(agent): Update .env.template to match changes in 370615eGravatar Reinier van der Leer 1-4/+4
2024-04-26feat(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-22Merge branch 'master' into forge/fixesGravatar Nicholas Tindle 3-24/+37
2024-04-22fix(agent): Full fix for CLI breakage introduced in cf00c33Gravatar Reinier van der Leer 3-24/+37
2024-04-22Merge branch 'master' into forge/fixesGravatar Nicholas Tindle 79-3695/+3409
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-22fix: docstringGravatar Nicholas Tindle 1-1/+1
2024-04-22fix: incorrectly refactored param template-> template_nameGravatar Nicholas Tindle 1-1/+1
2024-04-22fix: isort after mergeGravatar Nicholas Tindle 1-1/+2