Skip to content

Commit 1733faa

Browse files
committed
Merge branch 'victordibia-patch-1' of github.com:microsoft/autogen into victordibia-patch-1
2 parents 82bf018 + ca03644 commit 1733faa

565 files changed

Lines changed: 57451 additions & 11623 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/ISSUE_TEMPLATE/1-bug_report.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,14 @@ body:
9090
multiple: false
9191
options:
9292
- "Python dev (main branch)"
93+
- "Python 0.5.6"
94+
- "Python 0.5.5"
95+
- "Python 0.5.4"
96+
- "Python 0.5.3"
97+
- "Python 0.5.2"
98+
- "Python 0.5.1"
99+
- "Python 0.4.9"
100+
- "Python 0.4.8"
93101
- "Python 0.4.7"
94102
- "Python 0.4.6"
95103
- "Python 0.4.5"

.github/workflows/checks.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,44 @@ jobs:
181181
name: coverage-autogen-ext-grpc
182182
path: ./python/coverage_autogen-ext-grpc.xml
183183

184+
test-autogen-ext-pwsh:
185+
runs-on: windows-latest
186+
steps:
187+
- uses: actions/checkout@v4
188+
189+
- uses: astral-sh/setup-uv@v5
190+
with:
191+
enable-cache: true
192+
version: "0.5.18"
193+
194+
- uses: actions/setup-python@v5
195+
with:
196+
python-version: "3.11"
197+
198+
- name: Install Python deps
199+
run: |
200+
uv sync --locked --all-extras
201+
shell: pwsh
202+
working-directory: ./python
203+
204+
- name: Run tests for Windows
205+
run: |
206+
.venv/Scripts/activate.ps1
207+
poe --directory ./packages/autogen-ext test-windows
208+
shell: pwsh
209+
working-directory: ./python
210+
211+
- name: Move coverage file
212+
run: |
213+
mv ./packages/autogen-ext/coverage.xml coverage_autogen_ext_windows.xml
214+
working-directory: ./python
215+
216+
- name: Upload coverage artifact
217+
uses: actions/upload-artifact@v4
218+
with:
219+
name: coverage-autogen-ext-windows
220+
path: ./python/coverage_autogen_ext_windows.xml
221+
184222
codecov:
185223
runs-on: ubuntu-latest
186224
needs: [test, test-grpc]

.github/workflows/docs.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
[
3434
# For main use the workflow target
3535
{ ref: "${{github.ref}}", dest-dir: dev, uv-version: "0.5.13", sphinx-release-override: "dev" },
36-
{ ref: "python-v0.4.7", dest-dir: stable, uv-version: "0.5.13", sphinx-release-override: "stable" },
36+
{ ref: "python-v0.5.6", dest-dir: stable, uv-version: "0.5.13", sphinx-release-override: "stable" },
3737
{ ref: "v0.4.0.post1", dest-dir: "0.4.0", uv-version: "0.5.13", sphinx-release-override: "" },
3838
{ ref: "v0.4.1", dest-dir: "0.4.1", uv-version: "0.5.13", sphinx-release-override: "" },
3939
{ ref: "v0.4.2", dest-dir: "0.4.2", uv-version: "0.5.13", sphinx-release-override: "" },
@@ -42,6 +42,14 @@ jobs:
4242
{ ref: "python-v0.4.5", dest-dir: "0.4.5", uv-version: "0.5.13", sphinx-release-override: "" },
4343
{ ref: "python-v0.4.6", dest-dir: "0.4.6", uv-version: "0.5.13", sphinx-release-override: "" },
4444
{ ref: "python-v0.4.7", dest-dir: "0.4.7", uv-version: "0.5.13", sphinx-release-override: "" },
45+
{ ref: "python-v0.4.8", dest-dir: "0.4.8", uv-version: "0.5.13", sphinx-release-override: "" },
46+
{ ref: "python-v0.4.9-website", dest-dir: "0.4.9", uv-version: "0.5.13", sphinx-release-override: "" },
47+
{ ref: "python-v0.5.1", dest-dir: "0.5.1", uv-version: "0.5.13", sphinx-release-override: "" },
48+
{ ref: "python-v0.5.2", dest-dir: "0.5.2", uv-version: "0.5.13", sphinx-release-override: "" },
49+
{ ref: "python-v0.5.3", dest-dir: "0.5.3", uv-version: "0.5.13", sphinx-release-override: "" },
50+
{ ref: "python-v0.5.4", dest-dir: "0.5.4", uv-version: "0.5.13", sphinx-release-override: "" },
51+
{ ref: "python-v0.5.5", dest-dir: "0.5.5", uv-version: "0.5.13", sphinx-release-override: "" },
52+
{ ref: "python-v0.5.6", dest-dir: "0.5.6", uv-version: "0.5.13", sphinx-release-override: "" },
4553
]
4654
steps:
4755
- name: Checkout
@@ -133,10 +141,11 @@ jobs:
133141
- name: setup python
134142
uses: actions/setup-python@v5
135143
with:
136-
python-version: "3.8"
144+
python-version: "3.9"
137145
- name: pydoc-markdown install
138146
run: |
139147
python -m pip install --upgrade pip
148+
pip install nr_util>=0.8.12
140149
pip install pydoc-markdown pyyaml termcolor
141150
# Pin databind packages as version 4.5.0 is not compatible with pydoc-markdown.
142151
pip install databind.core==4.4.2 databind.json==4.4.2

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,4 +198,7 @@ notebook/coding
198198
artifacts
199199

200200
# project data
201-
registry.json
201+
registry.json
202+
203+
# files created by the gitty agent in python/samples/gitty
204+
.gitty/

CONTRIBUTING.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ For common tasks that are helpful during development and run in CI, see [here](.
3434

3535
## Roadmap
3636

37-
We use GitHub issues and milestones to track our roadmap. You can view the upcoming milestones [here]([Roadmap Issues](https://aka.ms/autogen-roadmap).
37+
We use GitHub issues and milestones to track our roadmap. You can view the upcoming milestones [here]([Roadmap Issues](https://aka.ms/autogen-roadmap)).
3838

3939
## Versioning
4040

@@ -48,11 +48,11 @@ We will update verion numbers according to the following rules:
4848
## Release process
4949

5050
1. Create a PR that updates the version numbers across the codebase ([example](https://github.com/microsoft/autogen/pull/4359))
51-
2. The docs CI will fail for the PR, but this is expected and will be resolved in the next step
52-
2. After merging the PR, create and push a tag that corresponds to the new verion. For example, for `0.4.0.dev13`:
51+
2. The docs CI will fail for the PR, but this is expected and will be resolved in the next step
52+
3. After merging the PR, create and push a tag that corresponds to the new verion. For example, for `0.4.0.dev13`:
5353
- `git tag v0.4.0.dev13 && git push origin v0.4.0.dev13`
54-
3. Restart the docs CI by finding the failed [job corresponding to the `push` event](https://github.com/microsoft/autogen/actions/workflows/docs.yml) and restarting all jobs
55-
4. Run [this](https://github.com/microsoft/autogen/actions/workflows/single-python-package.yml) workflow for each of the packages that need to be released and get an approval for the release for it to run
54+
4. Restart the docs CI by finding the failed [job corresponding to the `push` event](https://github.com/microsoft/autogen/actions/workflows/docs.yml) and restarting all jobs
55+
5. Run [this](https://github.com/microsoft/autogen/actions/workflows/single-python-package.yml) workflow for each of the packages that need to be released and get an approval for the release for it to run
5656

5757
## Triage process
5858

README.md

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,22 +47,24 @@ from autogen_agentchat.agents import AssistantAgent
4747
from autogen_ext.models.openai import OpenAIChatCompletionClient
4848

4949
async def main() -> None:
50-
agent = AssistantAgent("assistant", OpenAIChatCompletionClient(model="gpt-4o"))
50+
model_client = OpenAIChatCompletionClient(model="gpt-4o")
51+
agent = AssistantAgent("assistant", model_client=model_client)
5152
print(await agent.run(task="Say 'Hello World!'"))
53+
await model_client.close()
5254

5355
asyncio.run(main())
5456
```
5557

56-
### Team
58+
### Web Browsing Agent Team
5759

58-
Create a group chat team with an assistant agent, a web surfer agent, and a user proxy agent
60+
Create a group chat team with a web surfer agent and a user proxy agent
5961
for web browsing tasks. You need to install [playwright](https://playwright.dev/python/docs/library).
6062

6163
```python
6264
# pip install -U autogen-agentchat autogen-ext[openai,web-surfer]
6365
# playwright install
6466
import asyncio
65-
from autogen_agentchat.agents import AssistantAgent, UserProxyAgent
67+
from autogen_agentchat.agents import UserProxyAgent
6668
from autogen_agentchat.conditions import TextMentionTermination
6769
from autogen_agentchat.teams import RoundRobinGroupChat
6870
from autogen_agentchat.ui import Console
@@ -71,12 +73,21 @@ from autogen_ext.agents.web_surfer import MultimodalWebSurfer
7173

7274
async def main() -> None:
7375
model_client = OpenAIChatCompletionClient(model="gpt-4o")
74-
assistant = AssistantAgent("assistant", model_client)
75-
web_surfer = MultimodalWebSurfer("web_surfer", model_client)
76+
# The web surfer will open a Chromium browser window to perform web browsing tasks.
77+
web_surfer = MultimodalWebSurfer("web_surfer", model_client, headless=False, animate_actions=True)
78+
# The user proxy agent is used to get user input after each step of the web surfer.
79+
# NOTE: you can skip input by pressing Enter.
7680
user_proxy = UserProxyAgent("user_proxy")
77-
termination = TextMentionTermination("exit") # Type 'exit' to end the conversation.
78-
team = RoundRobinGroupChat([web_surfer, assistant, user_proxy], termination_condition=termination)
79-
await Console(team.run_stream(task="Find information about AutoGen and write a short summary."))
81+
# The termination condition is set to end the conversation when the user types 'exit'.
82+
termination = TextMentionTermination("exit", sources=["user_proxy"])
83+
# Web surfer and user proxy take turns in a round-robin fashion.
84+
team = RoundRobinGroupChat([web_surfer, user_proxy], termination_condition=termination)
85+
try:
86+
# Start the team and wait for it to terminate.
87+
await Console(team.run_stream(task="Find information about AutoGen and write a short summary."))
88+
finally:
89+
await web_surfer.close()
90+
await model_client.close()
8091

8192
asyncio.run(main())
8293
```
@@ -101,7 +112,7 @@ The AutoGen ecosystem provides everything you need to create AI agents, especial
101112
The _framework_ uses a layered and extensible design. Layers have clearly divided responsibilities and build on top of layers below. This design enables you to use the framework at different levels of abstraction, from high-level APIs to low-level components.
102113

103114
- [Core API](./python/packages/autogen-core/) implements message passing, event-driven agents, and local and distributed runtime for flexibility and power. It also support cross-language support for .NET and Python.
104-
- [AgentChat API](./python/packages/autogen-agentchat/) implements a simpler but opinionated API rapid for prototyping. This API is built on top of the Core API and is closest to what users of v0.2 are familiar with and supports familiar multi-agent patterns such as two-agent chat or group chats.
115+
- [AgentChat API](./python/packages/autogen-agentchat/) implements a simpler but opinionated API for rapid prototyping. This API is built on top of the Core API and is closest to what users of v0.2 are familiar with and supports common multi-agent patterns such as two-agent chat or group chats.
105116
- [Extensions API](./python/packages/autogen-ext/) enables first- and third-party extensions continuously expanding framework capabilities. It support specific implementation of LLM clients (e.g., OpenAI, AzureOpenAI), and capabilities such as code execution.
106117

107118
The ecosystem also supports two essential _developer tools_:
@@ -113,7 +124,7 @@ The ecosystem also supports two essential _developer tools_:
113124
- [AutoGen Studio](./python/packages/autogen-studio/) provides a no-code GUI for building multi-agent applications.
114125
- [AutoGen Bench](./python/packages/agbench/) provides a benchmarking suite for evaluating agent performance.
115126

116-
You can use the AutoGen framework and developer tools to create applications for your domain. For example, [Magentic-One](./python/packages/magentic-one-cli/) is a state-of-art multi-agent team built using AgentChat API and Extensions API that can handle variety of tasks that require web browsing, code execution, and file handling.
127+
You can use the AutoGen framework and developer tools to create applications for your domain. For example, [Magentic-One](./python/packages/magentic-one-cli/) is a state-of-the-art multi-agent team built using AgentChat API and Extensions API that can handle a variety of tasks that require web browsing, code execution, and file handling.
117128

118129
With AutoGen you get to join and contribute to a thriving ecosystem. We host weekly office hours and talks with maintainers and community. We also have a [Discord server](https://aka.ms/autogen-discord) for real-time chat, GitHub Discussions for Q&A, and a blog for tutorials and updates.
119130

docs/design/01 - Programming Model.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Each event in the system is defined using the [CloudEvents Specification](https:
1111
1. *id* - A unique id (eg. a UUID).
1212
2. *source* - A URI or URN indicating the event's origin.
1313
3. *type* - The namespace of the event - prefixed with a reverse-DNS name.
14-
- The prefixed domain dictates the organization which defines the semantics of this event type: e.g `com.github.pull_request.opened` or `com.example.object.deleted.v2`), and optionally fields describing the data schema/content-type or extensions.
14+
- The prefixed domain dictates the organization which defines the semantics of this event type: e.g (`com.github.pull_request.opened` or `com.example.object.deleted.v2`), and optionally fields describing the data schema/content-type or extensions.
1515

1616
## Event Handlers
1717

docs/design/02 - Topics.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ For this subscription source should map directly to agent key.
6262

6363
This subscription will therefore receive all events for the following well known topics:
6464

65-
- `{AgentType}:` - General purpose direct messages. These should be routed to the approriate message handler.
66-
- `{AgentType}:rpc_request={RequesterAgentType}` - RPC request messages. These should be routed to the approriate RPC handler, and RequesterAgentType used to publish the response
65+
- `{AgentType}:` - General purpose direct messages. These should be routed to the appropriate message handler.
66+
- `{AgentType}:rpc_request={RequesterAgentType}` - RPC request messages. These should be routed to the appropriate RPC handler, and RequesterAgentType used to publish the response
6767
- `{AgentType}:rpc_response={RequestId}` - RPC response messages. These should be routed back to the response future of the caller.
6868
- `{AgentType}:error={RequestId}` - Error message that corresponds to the given request.

docs/dotnet/core/toc.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
- name: Differences from Python
88
href: differences-from-python.md
99
- name: Protobuf message types
10-
href: protobuf-message-types.md
10+
href: protobuf-message-types.md

docs/dotnet/docfx.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,4 @@
7373
"keepFileLink": false,
7474
"disableGitFeatures": false
7575
}
76-
}
76+
}

0 commit comments

Comments
 (0)