* Ollama client! With function calling. Initial commit, client, no docs or tests yet.
* Tidy comments
* Cater for missing prompt token count
* Removed use of eval, added json parsing support library
* Fix to the use of the JSON fix library, handling of Mixtral escape sequence
* Fixed 'name' in JSON bug, catered for single function call JSON without []
* removing role='tool' from inner tool result to reduce token usage.
* Added Ollama documentation and updated library versions
* Added Native Ollama tool calling (v0.3.0 req.) as well as hide/show tools support
* Added native tool calling and hide_tools parameter to documentation
* Update to Ollama 0.3.1, added tests
* Tweak to manual function calling prompt to improve number handling.
* Fix formatting
Co-authored-by: gagb <gagb@users.noreply.github.com>
Co-authored-by: Jack Gerrits <jackgerrits@users.noreply.github.com>
* Fix formatting
* Better error message
---------
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
Co-authored-by: gagb <gagb@users.noreply.github.com>
Co-authored-by: Jack Gerrits <jackgerrits@users.noreply.github.com>
When running the AutoGen Studio from source, one needs to separately launch the frontend server. Updated the docs to include these instructions.
Co-authored-by: Victor Dibia <victordibia@microsoft.com>
* Feat/headless browser (retargeted) (#1832)
* Add headless browser to the WebSurferAgent, closes#1481
* replace soup.get_text() with markdownify.MarkdownConverter().convert_soup(soup)
* import HeadlessChromeBrowser
* implicitly wait for 10s
* inicrease max. wait time to 99s
* fix: trim trailing whitespace
* test: fix headless tests
* better bing query search
* docs: add example 3 for headless option
---------
Co-authored-by: Vijay Ramesh <vijay@regrello.com>
* Handle missing Selenium package.
* Added browser_chat.py example to simplify testing.
* Based browser on mdconvert. (#1847)
* Based browser on mdconvert.
* Updated web_surfer.
* Renamed HeadlessChromeBrowser to SeleniumChromeBrowser
* Added an initial POC with Playwright.
* Separated Bing search into it's own utility module.
* Simple browser now uses Bing tools.
* Updated Playwright browser to inherit from SimpleTextBrowser
* Got Selenium working too.
* Renamed classes and files for consistency.
* Added more instructions.
* Initial work to support other search providers.
* Added some basic behavior when the BING_API_KEY is missing.
* Cleaned up some search results.
* Moved to using the request.Sessions object. Moved Bing SERP paring to mdconvert to be more broadly useful.
* Added backward compatibility to WebSurferAgent
* Selenium and Playwright now grab the whole DOM, not jus the body, allowing the converters access to metadata.
* Fixed printing of page titles in Playwright.
* Moved installation of WebSurfer dependencies to contrib-tests.yml
* Fixing pre-commit issues.
* Reverting conversable_agent, which should not have been changed in prior commit.
* Added RequestMarkdownBrowser tests.
* Fixed a bug with Bing search, and added search test cases.
* Added tests for Bing search.
* Added tests for md_convert
* Added test files.
* Added missing pptx.
* Added more tests for WebSurfer coverage.
* Fixed guard on requests_markdown_browser test.
* Updated test coverage for mdconvert.
* Fix brwser_utils tests.
* Removed image test from browser, since exiftool isn't installed on test machine.
* Removed image test from browser, since exiftool isn't installed on test machine.
* Disable Selenium GPU and sandbox to ensure it runs headless in Docker.
* Added option for Bing API results to be interleaved (as Bing specifies), or presented in a categorized list (Web, News, Videos), etc
* Print more details when requests exceptions are thrown.
* Added additional documentation to markdown_search
* Added documentation to the selenium_markdown_browser.
* Added documentation to playwright_markdown_browser.py
* Added documentation to requests_markdown_browser
* Added documentation to mdconvert.py
* Updated agentchat_surfer notebook.
* Update .github/workflows/contrib-tests.yml
Co-authored-by: Davor Runje <davor@airt.ai>
* Merge main. Resolve conflicts.
* Resolve pre-commit checks.
* Removed offending LFS file.
* Re-added offending LFS file.
* Fixed browser_utils tests.
* Fixed style errors.
---------
Co-authored-by: Asapanna Rakesh <45640029+INF800@users.noreply.github.com>
Co-authored-by: Vijay Ramesh <vijay@regrello.com>
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
Co-authored-by: Davor Runje <davor@airt.ai>
* add couchbase vector store
* add unit test
* cleanup
* add couchbase to website
* fix code formatting
---------
Co-authored-by: Jack Gerrits <jackgerrits@users.noreply.github.com>
* Add kwargs to pass to docker container that runs the Jupyter Server
* Update docker_jupyter_server.py
* Update docker_jupyter_server.py
* Update docker_jupyter_server.py
---------
Co-authored-by: Jack Gerrits <jackgerrits@users.noreply.github.com>
There is a bug related to the interplay between the society of mind agent and the FileLogger, probably somewhere around https://github.com/microsoft/autogen/blob/main/autogen/agentchat/contrib/society_of_mind_agent.py#L181, which causes an empty name property to be sent. The FileLogger should gracefully handle this circumstance and not return an error to the function caller.
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
Co-authored-by: Jack Gerrits <jackgerrits@users.noreply.github.com>
* Catch token count issue while streaming with customized models
If llama, llava, phi, or some other models are used for streaming (with stream=True), the current design would crash after fetching the response.
A warning is enough in this case, just like the non-streaming use cases.
* Only catch not implemented error
---------
Co-authored-by: Chi Wang <wang.chi@microsoft.com>
Co-authored-by: Jack Gerrits <jackgerrits@users.noreply.github.com>
* update cohere tool calling multi agents
* Add agent name prefix to chatbot message
---------
Co-authored-by: Jack Gerrits <jackgerrits@users.noreply.github.com>
* Update LLM Caching link in Optional-Dependencies.md
Fix link to direct to the current location of the LLM Caching doc
* Update Optional-Dependencies.md
---------
Co-authored-by: Qingyun Wu <qingyun0327@gmail.com>
Co-authored-by: Jack Gerrits <jackgerrits@users.noreply.github.com>
* bump version, add claude default model
* Move WebSocketConnectionManager into its own file.
* Update the AutoGenStudio to use Async code throughout the call stack
Update *WorkflowManager* classes:
- Add async `a_send_message_function` parameter to mirror `send_message_function` param.
- Add async `a_process_message` coroutine to mirror the synchronous `process_message` function.
- Add async `a_run` coroutine to mirror the `run` function
- Add async `_a_run_workflow` coroutine to mirror the synchronous `_run_workflow` function.
Update *ExtendedConversableAgent* and *ExtendedGroupChatManager* classes:
- Override the async `a_receive` coroutines
Update *AutoGenChatManager*:
- Add async `a_send` and `a_chat` coroutines to mirror their sync counterparts.
- Accept the `WebSocketManager` instance as a parameter, so it can do Async comms directly.
Update *app.py*
- Provide the `WebSocketManager` instance to the *AutoGenChatManager* constructor
- Await the manager's `a_chat` coroutine, rather than calling the synchronous `chat` function.
* Add Human Input Support
Updates to *ExtendedConversableAgent* and *ExtendedGroupChatManager* classes
- override the `get_human_input` function and async `a_get_human_input` coroutine
Updates to *WorkflowManager* classes:
- add parameters `a_human_input_function` and `a_human_input_timeout` and pass along on to the ExtendedConversableAgent and ExtendedGroupChatManager
- fix for invalid configuration passed from UI when human input mode is not NEVER and no model is attached
Updates to *AutoGenChatManager* class:
- add parameter `human_input_timeout` and pass it along to *WorkflowManager* classes
- add async `a_prompt_for_input` coroutine that relies on `websocket_manager.get_input` coroutine (which snuck into last commit)
Updates to *App.py*
- global var HUMAN_INPUT_TIMEOUT_SECONDS = 180, we can replace this with a configurable value in the future
* add formatting/precommit fixes
* version bump
---------
Co-authored-by: Joe Landers <sailorjoe6@gmail.com>