Skip to content
This repository has been archived by the owner on Mar 16, 2024. It is now read-only.

Commit

Permalink
Feature/slim automata and rebase (#139)
Browse files Browse the repository at this point in the history
* unpatch np

* downgrade to python 3.8

* finish fix

* move tests, docs, and notebook out of automata

* add back samples

* update read the docs yaml

* slim automata directory down

* regenerate docs
  • Loading branch information
emrgnt-cmplxty authored Jul 6, 2023
1 parent b9fae27 commit 330675e
Show file tree
Hide file tree
Showing 396 changed files with 10,033 additions and 980 deletions.
5 changes: 5 additions & 0 deletions .github/workflows/run_regressions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ jobs:
python -m pip install --upgrade pip
pip3 install -e .
- name: Setup Git LFS
run: |
git lfs install
git lfs pull
- name: Run regression tests
run: |
pytest -m regression
Expand Down
16 changes: 3 additions & 13 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,12 @@ build:
os: ubuntu-22.04
tools:
python: "3.9"
# You can also specify other tool versions:
# nodejs: "19"
# rust: "1.64"
# golang: "1.19"

# Build documentation in the "docs/" directory with Sphinx
sphinx:
configuration: automata/docs/conf.py
# Optionally build your docs in additional formats such as PDF and ePub
# formats:
# - pdf
# - epub
configuration: docs/conf.py

# Optional but recommended, declare the Python requirements required
# to build your documentation
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
# Specify requirements
python:
install:
- requirements: automata/docs/requirements.txt
- requirements: docs/requirements.txt
22 changes: 12 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
![Banner](https://github.com/emrgnt-cmplxty/Automata/assets/68796651/61fe3c33-9b7a-4c1b-9726-a77140476b83)

[![codecov](https://codecov.io/github/emrgnt-cmplxty/Automata/branch/main/graph/badge.svg?token=ZNE7RDUJQD)](https://codecov.io/github/emrgnt-cmplxty/Automata)
<a href="https://github.com/emrgnt-cmplxty/automata/blob/main/LICENSE" target="_blank">
<img src="https://img.shields.io/static/v1?label=license&message=Apache 2.0&color=white" alt="License">
</a> |
[![Documentation Status](https://readthedocs.org/projects/automata/badge/?version=latest)](https://automata.readthedocs.io/en/latest/?badge=latest)
[![Type Checking](https://github.com/emrgnt-cmplxty/Automata/actions/workflows/check-mypy.yml/badge.svg)](https://github.com/emrgnt-cmplxty/Automata/actions/workflows/check-mypy.yml)
[![Discord](https://img.shields.io/discord/1120774652915105934?logo=discord)](https://discord.gg/j9GxfbxqAe)
[![Twitter Follow](https://img.shields.io/twitter/follow/ocolegro?style=social)](https://twitter.com/ocolegro)

Expand Down Expand Up @@ -105,10 +107,10 @@ Sometimes the best way to understand a complicated system is to start by underst

from automata.config.base import AgentConfigName
from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder
from automata.core.agent.providers import OpenAIAutomataAgent
from automata.core.singletons.dependency_factory import dependency_factory
from automata.core.singletons.py_module_loader import py_module_loader
from automata.core.tools.factory import AgentToolFactory
from automata.agent.providers import OpenAIAutomataAgent
from automata.singletons.dependency_factory import dependency_factory
from automata.singletons.py_module_loader import py_module_loader
from automata.tools.factory import AgentToolFactory

# Initialize the module loader to the local directory
py_module_loader.initialize()
Expand Down Expand Up @@ -147,10 +149,10 @@ Code example for creating an instance of 'SymbolCodeEmbedding':

```python
import numpy as np
from automata.core.symbol_embedding.base import SymbolCodeEmbedding
from automata.core.symbol.parser import parse_symbol
from automata.symbol_embedding.base import SymbolCodeEmbedding
from automata.symbol.parser import parse_symbol

symbol_str = 'scip-python python automata 75482692a6fe30c72db516201a6f47d9fb4af065 `automata.core.agent.agent_enums`/ActionIndicator#'
symbol_str = 'scip-python python automata 75482692a6fe30c72db516201a6f47d9fb4af065 `automata.agent.agent_enums`/ActionIndicator#'
symbol = parse_symbol(symbol_str)
source_code = 'symbol_source'
vector = np.array([1, 0, 0, 0])
Expand All @@ -161,8 +163,8 @@ embedding = SymbolCodeEmbedding(symbol=symbol, source_code=source_code, vector=v
Code example for creating an instance of 'SymbolDocEmbedding':

```python
from automata.core.symbol_embedding.base import SymbolDocEmbedding
from automata.core.symbol.parser import parse_symbol
from automata.symbol_embedding.base import SymbolDocEmbedding
from automata.symbol.parser import parse_symbol
import numpy as np

symbol = parse_symbol('your_symbol_here')
Expand Down
File renamed without changes.
7 changes: 2 additions & 5 deletions automata/core/agent/agent.py → automata/agent/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,8 @@
from pydantic import BaseModel

from automata.config.base import AgentConfigName, LLMProvider
from automata.core.llm.foundation import (
LLMConversationDatabaseProvider,
LLMIterationResult,
)
from automata.core.tools.base import Tool
from automata.llm.foundation import LLMConversationDatabaseProvider, LLMIterationResult
from automata.tools.base import Tool

logger = logging.getLogger(__name__)

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

from pydantic import BaseModel

from automata.agent.agent import AgentInstance
from automata.config.base import AgentConfigName
from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder
from automata.core.agent.agent import AgentInstance

if TYPE_CHECKING:
from automata.core.agent.providers import OpenAIAutomataAgent
from automata.agent.providers import OpenAIAutomataAgent


class OpenAIAutomataAgentInstance(AgentInstance, BaseModel):
Expand Down
14 changes: 7 additions & 7 deletions automata/core/agent/providers.py → automata/agent/providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,30 @@
from abc import ABC, abstractmethod
from typing import Dict, Final, List, Sequence

from automata.config.base import ConfigCategory
from automata.config.openai_agent import OpenAIAutomataAgentConfig
from automata.core.agent.agent import Agent, AgentToolkitBuilder
from automata.core.agent.error import (
from automata.agent.agent import Agent, AgentToolkitBuilder
from automata.agent.error import (
AgentDatabaseError,
AgentGeneralError,
AgentMaxIterError,
AgentResultError,
AgentStopIteration,
)
from automata.core.llm.foundation import (
from automata.config.base import ConfigCategory
from automata.config.openai_agent import OpenAIAutomataAgentConfig
from automata.core.utils import format_text, load_config
from automata.llm.foundation import (
LLMChatMessage,
LLMConversationDatabaseProvider,
LLMIterationResult,
)
from automata.core.llm.providers.openai import (
from automata.llm.providers.openai import (
FunctionCall,
OpenAIChatCompletionProvider,
OpenAIChatMessage,
OpenAIConversation,
OpenAIFunction,
OpenAITool,
)
from automata.core.utils import format_text, load_config

logger = logging.getLogger(__name__)

Expand Down
10 changes: 5 additions & 5 deletions automata/cli/scripts/run_agent.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import logging
from typing import List

from automata.agent.providers import OpenAIAutomataAgent
from automata.config import GITHUB_API_KEY, REPOSITORY_NAME
from automata.config.base import AgentConfigName
from automata.config.openai_agent import OpenAIAutomataAgentConfigBuilder
from automata.core.agent.providers import OpenAIAutomataAgent
from automata.core.github_management.client import GitHubClient
from automata.core.singletons.dependency_factory import dependency_factory
from automata.core.singletons.py_module_loader import py_module_loader
from automata.core.tools.factory import AgentToolFactory
from automata.github_management.client import GitHubClient
from automata.singletons.dependency_factory import dependency_factory
from automata.singletons.py_module_loader import py_module_loader
from automata.tools.factory import AgentToolFactory

logger = logging.getLogger(__name__)

Expand Down
2 changes: 1 addition & 1 deletion automata/cli/scripts/run_agent_config_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

from automata.config.base import ConfigCategory

# from automata.core.agent.action import AutomataActionExtractor
# from automata.agent.action import AutomataActionExtractor
from automata.core.utils import get_config_fpath, get_logging_config

logger = logging.getLogger(__name__)
Expand Down
12 changes: 6 additions & 6 deletions automata/cli/scripts/run_code_embedding.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
from tqdm import tqdm

from automata.config.base import ConfigCategory
from automata.core.llm.providers.openai import OpenAIEmbeddingProvider
from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler
from automata.core.singletons.dependency_factory import dependency_factory
from automata.core.singletons.py_module_loader import py_module_loader
from automata.core.symbol.graph import SymbolGraph
from automata.core.symbol.symbol_utils import get_rankable_symbols
from automata.core.utils import get_config_fpath
from automata.llm.providers.openai import OpenAIEmbeddingProvider
from automata.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler
from automata.singletons.dependency_factory import dependency_factory
from automata.singletons.py_module_loader import py_module_loader
from automata.symbol.graph import SymbolGraph
from automata.symbol.symbol_utils import get_rankable_symbols

logger = logging.getLogger(__name__)

Expand Down
18 changes: 9 additions & 9 deletions automata/cli/scripts/run_doc_embedding.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@
from tqdm import tqdm

from automata.config.base import ConfigCategory
from automata.core.context_providers.symbol_synchronization import (
from automata.context_providers.symbol_synchronization import (
SymbolProviderSynchronizationContext,
)
from automata.core.llm.providers.openai import OpenAIEmbeddingProvider
from automata.core.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler
from automata.core.memory_store.symbol_doc_embedding import SymbolDocEmbeddingHandler
from automata.core.singletons.dependency_factory import dependency_factory
from automata.core.singletons.py_module_loader import py_module_loader
from automata.core.symbol.graph import SymbolGraph
from automata.core.symbol.symbol_utils import get_rankable_symbols
from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase
from automata.core.utils import get_config_fpath
from automata.llm.providers.openai import OpenAIEmbeddingProvider
from automata.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler
from automata.memory_store.symbol_doc_embedding import SymbolDocEmbeddingHandler
from automata.singletons.dependency_factory import dependency_factory
from automata.singletons.py_module_loader import py_module_loader
from automata.symbol.graph import SymbolGraph
from automata.symbol.symbol_utils import get_rankable_symbols
from automata.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase

logger = logging.getLogger(__name__)

Expand Down
10 changes: 5 additions & 5 deletions automata/cli/scripts/run_doc_post_process.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import logging
import os

from automata.code_handling.py.writer import PyDocWriter
from automata.config.base import ConfigCategory
from automata.core.code_handling.py.writer import PyDocWriter
from automata.core.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase
from automata.core.utils import get_config_fpath, get_root_py_fpath
from automata.core.utils import get_config_fpath, get_root_fpath
from automata.symbol_embedding.base import JSONSymbolEmbeddingVectorDatabase

logger = logging.getLogger(__name__)

Expand All @@ -13,7 +13,7 @@ def main(*args, **kwargs) -> str:
"""
Update the symbol code embedding based on the specified SCIP index file.
"""
doc_writer = PyDocWriter(get_root_py_fpath())
doc_writer = PyDocWriter(get_root_fpath())

embedding_path = os.path.join(
get_config_fpath(), ConfigCategory.SYMBOL.value, "symbol_doc_embedding_l2.json"
Expand All @@ -25,5 +25,5 @@ def main(*args, **kwargs) -> str:

docs = {symbol: embedding_db.get(symbol.dotpath) for symbol in symbols}

doc_writer.write_documentation(docs, symbols, os.path.join(get_root_py_fpath(), "docs")) # type: ignore
doc_writer.write_documentation(docs, symbols, os.path.join(get_root_fpath(), "docs")) # type: ignore
return "Success"
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

from redbaron import ClassNode, DefNode, Node, RedBaron, StringNode

from automata.core.navigation.py.navigation_utils import find_syntax_tree_node
from automata.core.singletons.py_module_loader import py_module_loader
from automata.navigation.py.navigation_utils import find_syntax_tree_node
from automata.singletons.py_module_loader import py_module_loader

logger = logging.getLogger(__name__)
FSTNode = Union[Node, RedBaron]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@
import pypandoc
from redbaron import ClassNode, DefNode, Node, NodeList, RedBaron

from automata.core.code_handling.py.reader import PyReader
from automata.core.navigation.directory import DirectoryManager
from automata.core.navigation.py.navigation_utils import (
from automata.code_handling.py.reader import PyReader
from automata.navigation.directory import DirectoryManager
from automata.navigation.py.navigation_utils import (
find_all_function_and_class_syntax_tree_nodes,
find_import_syntax_tree_node_by_name,
find_import_syntax_tree_nodes,
find_syntax_tree_node,
)
from automata.core.singletons.py_module_loader import py_module_loader
from automata.core.symbol.base import Symbol
from automata.core.symbol_embedding.base import SymbolDocEmbedding
from automata.singletons.py_module_loader import py_module_loader
from automata.symbol.base import Symbol
from automata.symbol_embedding.base import SymbolDocEmbedding

logger = logging.getLogger(__name__)

Expand Down
2 changes: 1 addition & 1 deletion automata/config/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import yaml
from pydantic import BaseModel, PrivateAttr

from automata.core.tools.base import Tool
from automata.core.utils import convert_kebab_to_snake
from automata.tools.base import Tool


class ConfigCategory(Enum):
Expand Down
4 changes: 2 additions & 2 deletions automata/config/openai_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
InstructionConfigVersion,
LLMProvider,
)
from automata.core.experimental.search.rank import SymbolRank
from automata.core.singletons.dependency_factory import dependency_factory
from automata.experimental.search.rank import SymbolRank
from automata.singletons.dependency_factory import dependency_factory


class OpenAIAutomataAgentConfig(AgentConfig):
Expand Down
4 changes: 2 additions & 2 deletions automata/config/prompt/doc_generation.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@
## Related Symbols
- `config.config_enums.AgentConfigName`
- `automata.core.agent.agent.AutomataAgent`
- `automata.agent.agent.AutomataAgent`
- `config.automata_agent_config_utils.AutomataAgentConfigBuilder`
- `automata.core.coordinator.automata_instance.AutomataInstance`
- `automata.coordinator.automata_instance.AutomataInstance`
## Example
Expand Down
4 changes: 2 additions & 2 deletions automata/config/symbol/symbol_code_embedding.json
Git LFS file not shown
4 changes: 2 additions & 2 deletions automata/config/symbol/symbol_doc_embedding_l2.json
Git LFS file not shown
4 changes: 2 additions & 2 deletions automata/config/symbol/symbol_doc_embedding_l3.json
Git LFS file not shown
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import List, Set

from automata.core.symbol.base import ISymbolProvider, Symbol
from automata.symbol.base import ISymbolProvider, Symbol


class SymbolProviderRegistry:
Expand Down
2 changes: 1 addition & 1 deletion automata/core/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import openai
import yaml

from automata.core.symbol.base import Symbol
from automata.symbol.base import Symbol


def set_openai_api_key(override_key: Optional[str] = None) -> None:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import numpy as np

from automata.core.base.database.vector import VectorDatabaseProvider
from automata.core.symbol.base import Symbol
from automata.symbol.base import Symbol

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -54,7 +54,7 @@ def build(self, source_text: str, symbol: Symbol) -> Any:

def fetch_embedding_source_code(self, symbol: Symbol) -> str:
"""An abstract method for embedding the context is the source code itself."""
from automata.core.symbol.symbol_utils import ( # imported late for mocking
from automata.symbol.symbol_utils import ( # imported late for mocking
convert_to_fst_object,
)

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from networkx.exception import NetworkXError
from pydantic import BaseModel

from automata.core.symbol.base import Symbol
from automata.symbol.base import Symbol


class SymbolRankConfig(BaseModel):
Expand Down
Loading

0 comments on commit 330675e

Please sign in to comment.