Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 25 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ If you have questions or need help, please ask in our [Discord community](https:

> 🛠️🚨 AgentStack is in open preview. We're building in public, use at your own risk but have fun :)

AgentStack serves as a great tool for starting your agent project and offers many CLI utilities for easy code-gen throughout the development process.

AgentStack is _not_ a low-code alternative to development. Developers will still need an understanding of how to build with their selected agent framework.

## Quick Overview

```sh
Expand Down Expand Up @@ -73,12 +77,14 @@ Runs the agent project in development mode.<br>

## Philosophy

- **Agents should be easy:** There are so many frameworks out there, but starting from scratch is a pain. Similar to Create React App, AgentStack aims to simplify the "from scratch" process by giving you a simple boilerplate of an agent. It uses popular agent frameworks and LLM providers, but provides a cohesive curated experience on top of them.
- **Agents should be easy:** There are so many frameworks out there, but starting from scratch is a pain. Similar to `create-react-app`, AgentStack aims to simplify the "from scratch" process by giving you a simple boilerplate of an agent. It uses popular agent frameworks and LLM providers, but provides a cohesive curated experience on top of them.

- **No Configuration Required:** You don't need to configure anything. A reasonably good configuration of both development and production builds is handled for you so you can focus on writing code.

- **No Lock-In:** You can customize your setup at any time. AgentStack is designed to make it easy to get the components you need running right off the bat; it's up to you what to do next.

AgentStack is not designed to be a low-code solution to building agents. Instead it is a great head-start for starting an agent project from scratch.

## What's Included?

Your environment will have everything you need to build a modern AI agent project:
Expand All @@ -92,16 +98,24 @@ Your environment will have everything you need to build a modern AI agent projec
- Hassle-free updates for the above tools with a single dependency.

## Roadmap
* Frameworks
* Autogen
* LiteLLM
* Swarms (OpenAI)
* Tools
* MultiOn
* Firecrawl
* Anon
* E2B
* More

### Frameworks

#### CrewAI
Development of AgentStack is being done primarily on [CrewAI](https://crewai.com).

#### AutoGen
Some work has been done to add Microsoft's [AutoGen](https://microsoft.github.io/autogen/0.2/), although these efforts have been paused. AutoGen is currently in the process of making [large design decisions](https://microsoft.github.io/autogen/dev/) that will effect the integration with AgentStack.

### Tools
Many tools are currently supported. The short-term roadmap includes:
* MultiOn
* Firecrawl
* Anon
* E2B
* More

### Other Features
* Generated testing
* Integrated benchmarking

Expand Down
2 changes: 1 addition & 1 deletion agentstack/generation/agent_generation.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def generate_crew_agent(
f"def {name}(self) -> Agent:",
" return Agent(",
f" config=self.agents_config['{name}'],",
" tools=[], # add tools here or use `agentstack tools add <tool_name>",
" tools=[], # add tools here or use `agentstack tools add <tool_name>", # TODO: Add any tools in agentstack.json
" verbose=True",
" )",
""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,3 +162,4 @@ cython_debug/
#.idea/

.agentops/
OAI_CONFIG_LIST
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[
{
"model": "gpt-4",
"api_key": "<your_key>",
"tags": ["gpt-4", "tool"]
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,4 @@ license = "{{cookiecutter.project_metadata.license}}"
[tool.poetry.dependencies]
python = "^3.11"
agentops = "^0.3.12"
{%- if cookiecutter.framework == "crewai" %}
crewai = "^0.63.6"
{%- endif %}
autogen-agentchat = "~0.2"
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
from typing import Annotated, Literal

import agentops

from autogen import ConversableAgent, UserProxyAgent, config_list_from_json, register_function

agentops.init()


def main():
# Load LLM inference endpoints from an env variable or a file
# See https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints
# and OAI_CONFIG_LIST_sample.
# For example, if you have created a OAI_CONFIG_LIST file in the current working directory, that file will be used.
config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST")

{%- for agent in cookiecutter.structure.agents %}

{{agent.name}}_agent = ConversableAgent(
name="{{agent.name}}",
system_message="""
role:
{{agent.role}}
goal:
{{agent.goal}}
backstory:
{{agent.backstory}}
""",
llm_config={"config_list": config_list}, # TODO: support other models
)
{%- endfor %}

# # The user proxy agent is used for interacting with the assistant agent
# # and executes tool calls.
user_proxy = ConversableAgent(
name="User",
llm_config=False,
is_termination_msg=lambda msg: msg.get("content") is not None and "TERMINATE" in msg["content"],
human_input_mode="NEVER",
)

# TODO: use this as tool add example
# assistant.register_for_llm(name="calculator", description="A simple calculator")(calculator)
# user_proxy.register_for_execution(name="calculator")(calculator)

# Register the calculator function to the two agents.
# register_function(
# calculator,
# caller=assistant, # The assistant agent can suggest calls to the calculator.
# executor=user_proxy, # The user proxy agent can execute the calculator calls.
# name="calculator", # By default, the function name is used as the tool name.
# description="A simple calculator", # A description of the tool.
# )

# Let the assistant start the conversation. It will end when the user types exit.
# user_proxy.initiate_chat(assistant, message="What is (1423 - 123) / 3 + (32 + 23) * 5?")

agentops.end_session("Success")


if __name__ == "__main__":
main()
Loading