* Added fixes and tests for basic auth format
* User can provide their own connection object. Added test for it.
* Updated instructions on how to use. Fully tested all 3 authentication methods successfully.
* Get password from gitlab secrets.
* Hide passwords.
* Update notebook/agentchat_pgvector_RetrieveChat.ipynb
Co-authored-by: Li Jiang <bnujli@gmail.com>
* Hide passwords.
* Added connection_string test. 3 tests total for auth.
* Fixed quotes on db config params. No other changes found.
* Ran notebook
* Ran pre-commits and updated setup to include psycopg[binary] for windows and mac.
* Corrected list extension.
* Separate connection establishment function. Testing pending.
* Fixed pgvectordb auth
* Update agentchat_pgvector_RetrieveChat.ipynb
Added autocommit=True in example
* Rerun notebook
---------
Co-authored-by: Li Jiang <bnujli@gmail.com>
Co-authored-by: Li Jiang <lijiang1@microsoft.com>
* improved deprecation warnings
* compressible_agent test fix
* fix retrieve chat history test
---------
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
* first pass at offline agent eval integration
* Integrating AgentEval for offline scenarios
* removing old changes
* fixing notebook, updating docs
* fixing subcriteria bug
* updating class comment
* cleaning up agent constructors
* moving AgentEval agents to separate folder and adding a brief README
* fixing build breaks
* fixing formatting break
* fixing comments
* consolidating files in the agenteval folder under contrib and cleaning up imports
* fixing import ordering
* adding basic agenteval tests and fixing criteria parsing bug
* first try at adding openai agenteval tests to build process
* adding non-openai agenteval tests to build process
* updating test settings
* updating openai test
* Update test/agentchat/contrib/agent_eval/test_agent_eval.py
Co-authored-by: Wael Karkoub <wael.karkoub96@gmail.com>
* Update .github/workflows/contrib-openai.yml
Co-authored-by: Wael Karkoub <wael.karkoub96@gmail.com>
* test commit
* updating typing and converting to pydantic objects
* fixing test file
---------
Co-authored-by: Beibin Li <BeibinLi@users.noreply.github.com>
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
Co-authored-by: Wael Karkoub <wael.karkoub96@gmail.com>
* Add minimum token threshold in MessageHistoryLimiter
* Update transforms tests for the threshold
* Move min_threshold_tokens from Message to Token Limiter
* Optimize _check_tokens_threshold
Co-authored-by: Wael Karkoub <wael.karkoub96@gmail.com>
* Apply requested changes (renaming, phrasing, validations)
* Fix format
* Fix _check_tokens_threshold logic
* Update docs and notebook
* Improve phrasing
* Add min_tokens example in notebook
* Add min_tokens example in website docs
* Add min_tokens example in notebook
* Update website docs to be in sync with get_logs change
---------
Co-authored-by: Wael Karkoub <wael.karkoub96@gmail.com>
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* Re-added missing notebook
* Test installing postgres
* Error handle the connection.
* Fixed import.
* Fixed import.
* Fixed creation of collection without client.
* PGVector portion working. OpenAI untested.
* Fixed prints.
* Added output.
* Fixed pre-commits.
* Run pgvector notebook
* Improve efficiency of get_collection
* Fix delete_collection
* Fixed issues with pytests and validated functions.
* Validated pytests.
* Fixed pre-commits
* Separated extra_requires to allow more logic. Retrieve_chat base dependencies included on pgvector and qdrant.
* Fixed extra newline.
* Added username and password fields.
* URL Encode the connection string parameters to support symbols like %
* Fixed pre-commits.
* Added pgvector service
* pgvector doesn't have health intervals.
* Switched to colon based key values.
* Run on Ubuntu only. Linux is only option with container service support.
* Using default credentials instead.
* Fix postgres setup
* Fix postgres setup
* Don't skip tests on win and mac
* Fix command error
* Try apt install postgresql
* Assert table does not exist when deleted.
* Raise value error on a empty list or None value provided for IDs
* pre-commit
* Add install pgvector
* Add install pgvector
* Reorg test files, create a separate job for test pgvector
* Fix format
* Fix env format
* Simplify job name, enable test_retrieve_config
* Fix test_retrieve_config
* Corrected behavior for get_docs_by_ids with no ids returning all docs.
* Corrected behavior for get_docs_by_ids with no ids returning all docs.
* Fixed pre-commits.
* Added return values for all functions.
* Validated distance search is implemented correctly.
* Validated all pytests
* Removed print.
* Added default clause.
* Make ids optional
* Fix test, make it more robust
* Bump version of openai for the vector_store support
* Added support for choosing the sentence transformer model.
* Added error handling for model name entered.
* Updated model info.
* Added model_name db_config param.
* pre-commit fixes and last link fix.
* Use secrets password.
* fix: link fixed
* updated tests
* Updated config_list.
* pre-commit fix.
* Added chat_result to all output.
Unable to re-run notebooks.
* Pre-commit fix detected this requirement.
* Fix python 3.8 and 3.9 not supported for macos
* Fix python 3.8 and 3.9 not supported for macos
* Fix format
* Reran notebook with MetaLlama3Instruct7BQ4_k_M
* added gpt model.
* Reran notebook
---------
Co-authored-by: Li Jiang <bnujli@gmail.com>
Co-authored-by: Hk669 <hrushi669@gmail.com>
* adapted to openai assistant v2 api
* fix comments
* format code
* fix ci
* Update autogen/agentchat/contrib/gpt_assistant_agent.py
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
---------
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
* PGVector Contrib Initial Commit - KnucklesTeam:autogen:pgvector_contrib fork
* Update website/docs/ecosystem/pgvector.md
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* Updated qdrant installation instructions.
* Fixed openai version.
* Added dependencies to install for qdrant and pgvector in contrib tests.
* Added dependencies to install for qdrant and pgvector in contrib tests.
* Cleaned up dependencies.
* Removed flaml out of setup.py. Used only for notebook example.
* Added PGVector notebook link
---------
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* speed up notebook in CI
* improve notebook
* comment about filter
* bug fix for summary
* bump version to 0.2.26
* restrict openai version
* news update
* add tags in example
* Standardize printing of MessageTransforms
* Fix pre-commit black failure
* Add test for transform_messages printing
* Return str instead of printing
* Rename to_print_stats to verbose
* Cleanup
* t i# This is a combination of 3 commits.
Update requirements
* Remove lazy-fixture
* Avoid calling apply_transform in two code paths
* Format
* Replace stats with logs
* Handle no content messages in TokenLimiter get_logs()
* Move tests from test_transform_messages to test_transforms
---------
Co-authored-by: Wael Karkoub <wael.karkoub96@gmail.com>
* support llm_config in agentoptimizer
* fix doc
* restore seed timeout
---------
Co-authored-by: “skzhang1” <“shaokunzhang529@gmail.com”>
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* Added vectordb base and chromadb
* Remove timer and unused functions
* Added filter by distance
* Added test utils
* Fix format
* Fix type hint of dict
* Rename test
* Add test chromadb
* Fix test no chromadb
* Add coverage
* Don't skip test vectordb utils
* Add types
* Fix tests
* Fix docs build error
* Add types to base
* Update base
* Update utils
* Update chromadb
* Add get_docs_by_ids
* Improve docstring
* Add get all docs
* Move chroma_results_to_query_results to utils
* Improve type hints
* Update logger
* Update init, add embedding func
* Improve docstring of vectordb, add two attributes
* Improve test workflow
* Add isort
* Apply isort on py files
* Fix circular import
* Fix format for notebooks
* Fix format
---------
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* Add vision capability
* Configurate: description_prompt
* Print warning instead of raising issues for type
* Skip vision capability test if dependencies not installed
* Append "vision" to agent's system message when enabled VisionCapability
* GPT-4V notebook update with ConversableAgent
* Clean GPT-4V notebook
* Add vision capability test to workflow
* Lint import
* Update system message for vision capability
* Add a `custom_caption_func` to VisionCapability
* Add custom function example for vision capability
* Skip test Vision capability custom func
* GPT-4V notebook metadata to website
* Remove redundant files
* The custom caption function takes more inputs now
* Add a more complex example of custom caption func
* Remove trailing space
---------
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* add assistant config
* add test
* change notebook to use assistant config
* use assistant config in testing
* code refinement
---------
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
* add doc about effects for capabilities
* remove unnecessary imports
* improve doc
* test
* test location
* polish
* improve import of colored
* termcolor
* termcolor
* use pull request for openai test
* Change defualt model for `lmm`
* Try to use PIL image for LMM's _oai_messages
* Update test cases and llava
* Remove redundant files
* Update the imports for lmm tests
* Test case fix
* Docstring update
* LMM notebook lint
* Typo correction for img_utils and its test
* Fix self.client bug for Dalle Agent
The self.client member variable is reserved for OpenAI's LLM-compatible
client, which requires usage summary support.
So, we rename self.client to self._dalle_client to resolve this issue
* support getting model from both llm config and config list
* address comments
* address commentsd
---------
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* try to fix blog
* modify blog
* fix test error in #717; fix blog typo in installation; update blogs with output examples.
* pre-commit
* pre-commit
* Update website/blog/2023-11-26-Agent-AutoBuild/index.mdx
Co-authored-by: Qingyun Wu <qingyun.wu@psu.edu>
* add future work
* fix grammar
* update agent_builder
* solve #941; add detailed debug info; support json string config
* pre-commit
* solve #954
* pre-commit
* [new feature] build group chat agents from library.
* pre-commit
* add authors' info in notebook; add a new notebook for build_from_library; reduce prompt effort
* update test and example for build_from_library
* pre-commit
* add notebook; update docs
* change notebook name
* change description for notebook and doc
* remove default value for default_llm_config
* add embedding similarity agent selection
* pre-commit
* update test
* add dependency installation in github workflow
* update test
* pre-commit
* update notebook
* support directly json as library; support customize embedding model
* update test
* pre-commit
* update github test workflow
* Update autobuild_agent_library.ipynb
* add agent description
* refine prompt; update notebook
* pre-commit
* update test example
* update test
* update test
* update test
* change `config_path` to `config_path_or_env`; update test
* pre-commit
* update test
* update test
* update test: add config_file_location
* change `config_path_or_env` to `config_file_or_env`
* update test
* solve noqa
* fix import error for conftest
* fix test error
* pre-commit
* * update error message in `_create_agent`.
* replace `gpt-4-1106-preview` to `gpt-4` in test file.
* add comment on local server creation; modify notebook; update contrib-openai.yml for test; add autobuild option in setup.py; add autotest model name statement
* move import huggingface_hub to _create_agent
* pre-commit
* add uncover comment in the endpoint creation code block
* recover contrib-openai.yml for merge
* remove TERMINATE assertion for sys msg
* remove TERMINATE assertion
---------
Co-authored-by: Jieyu Zhang <jieyuz2@cs.washington.edu>
Co-authored-by: Qingyun Wu <qingyun.wu@psu.edu>
* refactored code to simplify
* optimize function. Instead of iterating over each character, guess at size and then iterate by token.
* adding tests
* Add missing tests
* minor test fix
* simplified token truncation by using tiktoken to encode and decode
* updated truncated notification message
* Fix llm_config spec to use os.environ
* Add test case and fix bug in loop
---------
Co-authored-by: gagb <gagb@users.noreply.github.com>
* Change defualt model for `lmm`
* Try to use PIL image for LMM's _oai_messages
* Update test cases and llava
* Remove redundant files
* Update the imports for lmm tests
* Test case fix
* Docstring update
* LMM notebook lint
* Typo correction for img_utils and its test
* Update test_llava.py
debug, reformat
---------
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
Co-authored-by: Shaokun Zhang <shaokunzhang529@gmail.com>
Co-authored-by: Shaokun Zhang <shaokun.zhang@psu.edu>
* support azure assistant api
* try to add azure testing
* improve testing
* fix testing
* fix code
---------
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* Validate llm_config passed to ConversableAgent
Based on #1522, this commit implements the additional validation checks in
`ConversableAgent.`
Add the following validation and `raise ValueError` if:
- The `llm_config` is `None`.
- The `llm_config` is valid, but `config_list` is missing or lacks elements.
- The `config_list` is valid, but no `model` is specified.
The rest of the changes are code churn to adjust or add the test cases.
* Validate llm_config passed to ConversableAgent
Based on #1522, this commit implements the additional validation checks in
`ConversableAgent.`
Add the following validation and `raise ValueError` if:
- The `llm_config` is `None` (validated in `ConversableAgent`).
- The `llm_config` has no `model` specified and `config_list` is empty
(validated in `OpenAIWrapper`).
- The `config_list` has at least one entry, but not all the entries have
the `model` is specified (validated in `OpenAIWrapper`).
The rest of the changes are code churn to adjust or add the test cases.
* Validate llm_config passed to ConversableAgent
Based on #1522, this commit implements the additional validation checks in
`ConversableAgent.`
Add the following validation and `raise ValueError` if:
- The `llm_config` is `None` (validated in `ConversableAgent`).
- The `llm_config` has no `model` specified and `config_list` is empty
(validated in `OpenAIWrapper`).
- The `config_list` has at least one entry, but not all the entries have
the `model` is specified (validated in `OpenAIWrapper`).
The rest of the changes are code churn to adjust or add the test cases.
* Validate llm_config passed to ConversableAgent
Based on #1522, this commit implements the additional validation checks in
`ConversableAgent.`
Add the following validation and `raise ValueError` if:
- The `llm_config` is `None` (validated in `ConversableAgent`).
- The `llm_config` has no `model` specified and `config_list` is empty
(validated in `OpenAIWrapper`).
- The `config_list` has at least one entry, but not all the entries have
the `model` is specified (validated in `OpenAIWrapper`).
The rest of the changes are code churn to adjust or add the test cases.
* Validate llm_config passed to ConversableAgent
Based on #1522, this commit implements the additional validation checks in
`ConversableAgent.`
Add the following validation and `raise ValueError` if:
- The `llm_config` is `None` (validated in `ConversableAgent`).
- The `llm_config` has no `model` specified and `config_list` is empty
(validated in `OpenAIWrapper`).
- The `config_list` has at least one entry, but not all the entries have
the `model` is specified (validated in `OpenAIWrapper`).
The rest of the changes are code churn to adjust or add the test cases.
* Fix the test_web_surfer issue
For anyone reading this: you need to `pip install markdownify` for the
`import WebSurferAgent` to succeed. That is needed to run the
`test_web_surfer.py` locally.
Test logic needs `llm_config` that is not `None` and that is not
`False`.
Let us pray that this works as part of GitHub actions ...
* One more fix for llm_config validation contract
* Validate the OpenAI API key format
Increase the amount of internal validation for OpenAI API keys. The intent is
to shorten the debugging loop in case of typos. The changes do *not* add
validation for Azure OpenAI API keys.
* Add the validation in `__init__` of `OpenAIClient`.
* Introduce the `MOCK_OPEN_AI_API_KEY` constant for testing.
* Add unit test coverage for the `is_valid_api_key` function.
* Validate the OpenAI API key format
Increase the amount of internal validation for OpenAI API keys. The intent is
to shorten the debugging loop in case of typos. The changes do *not* add
validation for Azure OpenAI API keys.
* Add the validation in `__init__` of `OpenAIClient`.
* Introduce the `MOCK_OPEN_AI_API_KEY` constant for testing.
*Add unit test coverage for the `is_valid_api_key` function.
* Log a warning when register a default client fails.
* Validate the OpenAI API key format
Increase the amount of internal validation for OpenAI API keys. The intent is
to shorten the debugging loop in case of typos. The changes do *not* add
validation for Azure OpenAI API keys.
* Add the validation in `__init__` of `OpenAIClient`. We'll log a
warning when the OpenAI API key isn't valid.
* Introduce the `MOCK_OPEN_AI_API_KEY` constant for testing.
* Add unit test coverage for the `is_valid_api_key` function.
* Check for OpenAI base_url before API key validation
---------
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* refactoring web surfer to use function decorators
* limited pytest version
* bug fix in test
* bug fixes
* refactoring
* Fix web_surfer tests.
---------
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
Co-authored-by: Adam Fourney <adamfo@microsoft.com>
* code executor
* test
* revert to main conversable agent
* prepare for pr
* kernel
* run open ai tests only when it's out of draft status
* update workflow file
* revert workflow changes
* ipython executor
* check kernel installed; fix tests
* fix tests
* fix tests
* update system prompt
* Update notebook, more tests
* notebook
* raise instead of return None
* allow user provided code executor.
* fixing types
* wip
* refactoring
* polishing
* fixed failing tests
* resolved merge conflict
* fixing failing test
* wip
* local command line executor and embedded ipython executor
* revert notebook
* fix format
* fix merged error
* fix lmm test
* fix lmm test
* move warning
* name and description should be part of the agent protocol, reset is not as it is only used for ConversableAgent; removing accidentally commited file
* version for dependency
* Update autogen/agentchat/conversable_agent.py
Co-authored-by: Jack Gerrits <jackgerrits@users.noreply.github.com>
* ordering of protocol
* description
* fix tests
* make ipython executor dependency optional
* update document optional dependencies
* Remove exclude from Agent protocol
* Make ConversableAgent consistent with Agent
* fix tests
* add doc string
* add doc string
* fix notebook
* fix interface
* merge and update agents
* disable config usage in reply function
* description field setter
* customize system message update
* update doc
---------
Co-authored-by: Davor Runje <davor@airt.ai>
Co-authored-by: Jack Gerrits <jackgerrits@users.noreply.github.com>
Co-authored-by: Aaron <aaronlaptop12@hotmail.com>
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* Add new capability to handle long context
* Make print conditional
* Remove superfluous comment
* Fix msg order
* Allow user to specify max_tokens
* Add ability to specify max_tokens per message; improve name
* Improve doc and readability
* Add tests
* Improve documentation and add tests per Erik and Chi's feedback
* Update notebook
* Update doc string of add to agents
* Improve doc string
* improve notebook
* Update github workflows for context handling
* Update docstring
* update notebook to use raw config list.
* Update contrib-openai.yml remove _target
* Fix code formatting
* Fix workflow file
* Update .github/workflows/contrib-openai.yml
---------
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* add client interface, response protocol, and move code into openai client class
* add ability to register custom client
* tidy up code
* adding checks and errors, and more unit tests
* remove code
* fix error msg
* add use_docer False in notebook
* better error message
* add another example to custom model notebook
* rename and have register_client take model name too
* make Client protocol and remove inheritance
* renames
* update notebook
* add link
* rename and more error checking for registered agents
* adding message retrieval to client protocol for more flexible response
* fix failing openai test
* api_type req made model_client_cls requirement
* notebook cleanup and added blog
* remove raise error if client list is empty - client list will never be empty it will have placeholders
* rename Client -> ModelClient
* add forgotten file
* fix test by fetching internal client
* Update autogen/oai/client.py
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
* don't add retrieval function to cache
* added placeholder cllient class during initial client init, and rewrote registration
* fix spelling
* Update autogen/agentchat/conversable_agent.py
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
* type hints, small fixes, docstr comment
* fix api type checking
---------
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
Co-authored-by: Chi Wang <wang.chi@microsoft.com>