diff --git a/README.md b/README.md index c6d016bc1..22be8ea70 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# AGNext (temp name) - (aka codename Starfleet) Agents Framework SDK +# AGNext - Codename Starfleet - Agents Framework SDK -Starfleet is a framework for developing intelligent applications using AI Agents patterns. +Starfleet (*formerly AGNext - product name TBD*) is a OSS framework for developing intelligent applications using AI Agents patterns. Starfleet offers an easy way to quickly build event-driven, distributed, scalable, resilient AI agent systems. Agents are developed by using the [Actor model](https://en.wikipedia.org/wiki/Actor_model). Each agent has events that it cares about and can process. Each agent may also emit events. @@ -8,6 +8,16 @@ You can build and run your agent system locally and easily move to a distributed The SDK comes with built-in agents that you can use as starting points. You can also use your own agents built from scratch, and use the Starfleet SDK to integrate them with other systems or to scale them into the cloud. +## Key Aspects of Starfleet + +- Event-driven: Agents act by handling & emitting events (chatrooms are just a special case of an event-driven system) +- Scalable & Distributed: Enable complex scenarios with networks of agents across org boundaries +- Modular, extensible & highly customizable: E.g. custom agents, memory as a service, tools registry, model library +- x-lang support: Python & Dotnet interoperating agents today, others coming soon +- Observable, traceable & debuggable + +## Developing with Starfleet + To build an agent system in Starfleet developers focus on understanding the overall workflow and mapping that flow into various AI agents. - Identify the workflow/goals of the system @@ -19,12 +29,17 @@ To build an agent system in Starfleet developers focus on understanding the over - Model any Events that the agent Emits - Build Evaluation for the Workflow/Agent System (are there specific events that demonstrate successful completion, etc.) - Build APIs/Control code for invoking the Agent System +- You can test and run your agent system locally +- When you are ready you can use 'azd' or GH Actions to deploy your agent system to the cloud -You may want to leverage more prescriptive agent behavior contracts, and Starfleet also includes base agents that implement different approaches to agent behavior, including layering request/response patterns on top of the event-driven model. For an example of this see the ChatAgents in the Python examples. +You may want to leverage more prescriptive agent behavior contracts, and in addition to the pub/sub model agents Starfleet also offers request/response message system base agents that implement different approaches to agent behavior, including layering request/response patterns on top of the event-driven model. For an example of this see the ChatAgents in the Python examples. -## Languages +## Getting Started + +We are admittedly in the early stages of development, but we are excited to share our progress with you. We are looking for feedback and contributions to help shape the future of this project. Your best place to start is in the samples directories for [python](https://github.com/microsoft/agnext/tree/main/python/samples) and [.NET](https://github.com/microsoft/agnext/tree/main/dotnet/samples). - [Python README](https://github.com/microsoft/agnext/tree/main/python/README.md) for how to develop and test the Python package. - [Python Documentation](http://microsoft.github.io/agnext) for the core concepts and API reference. -- [Python Examples](https://github.com/microsoft/agnext/tree/main/python/examples) for examples of how to use the Python package and multi-agent patterns. +- [Python Examples](https://github.com/microsoft/agnext/tree/main/python/samples) for examples of how to use the Python package and multi-agent patterns. - [.NET](https://github.com/microsoft/agnext/tree/main/dotnet) +- [.NET Examples](https://github.com/mircrosoft/agnext/tree/main/dotnet/samples) diff --git a/python/pyproject.toml b/python/pyproject.toml index dfea206e1..e98106492 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -109,7 +109,7 @@ line-length = 120 fix = true exclude = ["build", "dist", "src/agnext/worker/protos"] target-version = "py310" -include = ["src/**", "examples/*.py"] +include = ["src/**", "samples/*.py"] [tool.ruff.format] docstring-code-format = true @@ -123,7 +123,7 @@ ignore = ["F401", "E501"] "unittest".msg = "Use `pytest` instead." [tool.mypy] -files = ["src", "examples", "tests"] +files = ["src", "samples", "tests"] exclude = ["src/agnext/worker/protos"] strict = true @@ -143,7 +143,7 @@ disallow_untyped_decorators = true disallow_any_unimported = true [tool.pyright] -include = ["src", "tests", "examples"] +include = ["src", "tests", "samples"] typeCheckingMode = "strict" reportUnnecessaryIsInstance = false reportMissingTypeStubs = false diff --git a/python/examples/README.md b/python/samples/README.md similarity index 100% rename from python/examples/README.md rename to python/samples/README.md diff --git a/python/examples/common/__init__.py b/python/samples/common/__init__.py similarity index 100% rename from python/examples/common/__init__.py rename to python/samples/common/__init__.py diff --git a/python/examples/common/agents/__init__.py b/python/samples/common/agents/__init__.py similarity index 100% rename from python/examples/common/agents/__init__.py rename to python/samples/common/agents/__init__.py diff --git a/python/examples/common/agents/_chat_completion_agent.py b/python/samples/common/agents/_chat_completion_agent.py similarity index 100% rename from python/examples/common/agents/_chat_completion_agent.py rename to python/samples/common/agents/_chat_completion_agent.py diff --git a/python/examples/common/agents/_image_generation_agent.py b/python/samples/common/agents/_image_generation_agent.py similarity index 100% rename from python/examples/common/agents/_image_generation_agent.py rename to python/samples/common/agents/_image_generation_agent.py diff --git a/python/examples/common/agents/_oai_assistant.py b/python/samples/common/agents/_oai_assistant.py similarity index 100% rename from python/examples/common/agents/_oai_assistant.py rename to python/samples/common/agents/_oai_assistant.py diff --git a/python/examples/common/agents/_user_proxy.py b/python/samples/common/agents/_user_proxy.py similarity index 100% rename from python/examples/common/agents/_user_proxy.py rename to python/samples/common/agents/_user_proxy.py diff --git a/python/examples/common/memory/__init__.py b/python/samples/common/memory/__init__.py similarity index 100% rename from python/examples/common/memory/__init__.py rename to python/samples/common/memory/__init__.py diff --git a/python/examples/common/memory/_buffered.py b/python/samples/common/memory/_buffered.py similarity index 100% rename from python/examples/common/memory/_buffered.py rename to python/samples/common/memory/_buffered.py diff --git a/python/examples/common/memory/_head_and_tail.py b/python/samples/common/memory/_head_and_tail.py similarity index 100% rename from python/examples/common/memory/_head_and_tail.py rename to python/samples/common/memory/_head_and_tail.py diff --git a/python/examples/common/patterns/__init__.py b/python/samples/common/patterns/__init__.py similarity index 100% rename from python/examples/common/patterns/__init__.py rename to python/samples/common/patterns/__init__.py diff --git a/python/examples/common/patterns/_group_chat_manager.py b/python/samples/common/patterns/_group_chat_manager.py similarity index 100% rename from python/examples/common/patterns/_group_chat_manager.py rename to python/samples/common/patterns/_group_chat_manager.py diff --git a/python/examples/common/patterns/_group_chat_utils.py b/python/samples/common/patterns/_group_chat_utils.py similarity index 100% rename from python/examples/common/patterns/_group_chat_utils.py rename to python/samples/common/patterns/_group_chat_utils.py diff --git a/python/examples/common/patterns/_orchestrator_chat.py b/python/samples/common/patterns/_orchestrator_chat.py similarity index 100% rename from python/examples/common/patterns/_orchestrator_chat.py rename to python/samples/common/patterns/_orchestrator_chat.py diff --git a/python/examples/common/types.py b/python/samples/common/types.py similarity index 100% rename from python/examples/common/types.py rename to python/samples/common/types.py diff --git a/python/examples/common/utils.py b/python/samples/common/utils.py similarity index 100% rename from python/examples/common/utils.py rename to python/samples/common/utils.py diff --git a/python/examples/core/inner_outer_direct.py b/python/samples/core/inner_outer_direct.py similarity index 100% rename from python/examples/core/inner_outer_direct.py rename to python/samples/core/inner_outer_direct.py diff --git a/python/examples/core/one_agent_direct.py b/python/samples/core/one_agent_direct.py similarity index 100% rename from python/examples/core/one_agent_direct.py rename to python/samples/core/one_agent_direct.py diff --git a/python/examples/core/two_agents_pub_sub.py b/python/samples/core/two_agents_pub_sub.py similarity index 100% rename from python/examples/core/two_agents_pub_sub.py rename to python/samples/core/two_agents_pub_sub.py diff --git a/python/examples/demos/assistant.py b/python/samples/demos/assistant.py similarity index 100% rename from python/examples/demos/assistant.py rename to python/samples/demos/assistant.py diff --git a/python/examples/demos/chat_room.py b/python/samples/demos/chat_room.py similarity index 100% rename from python/examples/demos/chat_room.py rename to python/samples/demos/chat_room.py diff --git a/python/examples/demos/chess_game.py b/python/samples/demos/chess_game.py similarity index 100% rename from python/examples/demos/chess_game.py rename to python/samples/demos/chess_game.py diff --git a/python/examples/demos/illustrator_critics.py b/python/samples/demos/illustrator_critics.py similarity index 100% rename from python/examples/demos/illustrator_critics.py rename to python/samples/demos/illustrator_critics.py diff --git a/python/examples/demos/software_consultancy.py b/python/samples/demos/software_consultancy.py similarity index 100% rename from python/examples/demos/software_consultancy.py rename to python/samples/demos/software_consultancy.py diff --git a/python/examples/demos/utils.py b/python/samples/demos/utils.py similarity index 100% rename from python/examples/demos/utils.py rename to python/samples/demos/utils.py diff --git a/python/examples/marketing-agents/app.py b/python/samples/marketing-agents/app.py similarity index 100% rename from python/examples/marketing-agents/app.py rename to python/samples/marketing-agents/app.py diff --git a/python/examples/marketing-agents/auditor.py b/python/samples/marketing-agents/auditor.py similarity index 100% rename from python/examples/marketing-agents/auditor.py rename to python/samples/marketing-agents/auditor.py diff --git a/python/examples/marketing-agents/graphic_designer.py b/python/samples/marketing-agents/graphic_designer.py similarity index 100% rename from python/examples/marketing-agents/graphic_designer.py rename to python/samples/marketing-agents/graphic_designer.py diff --git a/python/examples/marketing-agents/messages.py b/python/samples/marketing-agents/messages.py similarity index 100% rename from python/examples/marketing-agents/messages.py rename to python/samples/marketing-agents/messages.py diff --git a/python/examples/marketing-agents/test_usage.py b/python/samples/marketing-agents/test_usage.py similarity index 100% rename from python/examples/marketing-agents/test_usage.py rename to python/samples/marketing-agents/test_usage.py diff --git a/python/examples/marketing-agents/worker.py b/python/samples/marketing-agents/worker.py similarity index 100% rename from python/examples/marketing-agents/worker.py rename to python/samples/marketing-agents/worker.py diff --git a/python/examples/patterns/coder_executor.py b/python/samples/patterns/coder_executor.py similarity index 100% rename from python/examples/patterns/coder_executor.py rename to python/samples/patterns/coder_executor.py diff --git a/python/examples/patterns/coder_reviewer.py b/python/samples/patterns/coder_reviewer.py similarity index 100% rename from python/examples/patterns/coder_reviewer.py rename to python/samples/patterns/coder_reviewer.py diff --git a/python/examples/patterns/group_chat.py b/python/samples/patterns/group_chat.py similarity index 100% rename from python/examples/patterns/group_chat.py rename to python/samples/patterns/group_chat.py diff --git a/python/examples/patterns/mixture_of_agents.py b/python/samples/patterns/mixture_of_agents.py similarity index 100% rename from python/examples/patterns/mixture_of_agents.py rename to python/samples/patterns/mixture_of_agents.py diff --git a/python/examples/patterns/multi_agent_debate.py b/python/samples/patterns/multi_agent_debate.py similarity index 100% rename from python/examples/patterns/multi_agent_debate.py rename to python/samples/patterns/multi_agent_debate.py diff --git a/python/examples/patterns/orchestrator.py b/python/samples/patterns/orchestrator.py similarity index 100% rename from python/examples/patterns/orchestrator.py rename to python/samples/patterns/orchestrator.py diff --git a/python/examples/tool-use/coding_one_agent_direct.py b/python/samples/tool-use/coding_one_agent_direct.py similarity index 100% rename from python/examples/tool-use/coding_one_agent_direct.py rename to python/samples/tool-use/coding_one_agent_direct.py diff --git a/python/examples/tool-use/coding_two_agent_pub_sub.py b/python/samples/tool-use/coding_two_agent_pub_sub.py similarity index 100% rename from python/examples/tool-use/coding_two_agent_pub_sub.py rename to python/samples/tool-use/coding_two_agent_pub_sub.py diff --git a/python/examples/tool-use/custom_function_tool_one_agent_direct.py b/python/samples/tool-use/custom_function_tool_one_agent_direct.py similarity index 100% rename from python/examples/tool-use/custom_function_tool_one_agent_direct.py rename to python/samples/tool-use/custom_function_tool_one_agent_direct.py