diff --git a/README.md b/README.md index fb203ff..e69de29 100644 --- a/README.md +++ b/README.md @@ -1,2 +0,0 @@ -# nested_repo_3 - diff --git a/auto_classes.json b/auto_classes.json new file mode 100644 index 0000000..68804d8 --- /dev/null +++ b/auto_classes.json @@ -0,0 +1,5 @@ +{ + "AutoConfig": "program.config.AgentWRetreiverConfig", + "AutoProgram": "program.program.AgentWRetreiver", + "AutoRetriever": "program.retriever.ExampleRetriever" +} \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..3d69d97 --- /dev/null +++ b/config.json @@ -0,0 +1,15 @@ +{ + "model": null, + "num_fetch": 1, + "lm": "openai/gpt-4o-mini", + "embedder": "openai/text-embedding-3-small", + "clients": { + "mit": [ + "csail", + "mit-media-lab" + ], + "berkeley": [ + "bear" + ] + } +} \ No newline at end of file diff --git a/program.json b/program.json new file mode 100644 index 0000000..e3e9a5b --- /dev/null +++ b/program.json @@ -0,0 +1,9 @@ +{ + "metadata": { + "dependency_versions": { + "python": "3.13", + "dspy": "3.1.2", + "cloudpickle": "3.1" + } + } +} \ No newline at end of file diff --git a/program/__init__.py b/program/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/program/config.py b/program/config.py new file mode 100644 index 0000000..cd32533 --- /dev/null +++ b/program/config.py @@ -0,0 +1,10 @@ +from pydantic import Field + +from modaic import PrecompiledConfig + + +class AgentWRetreiverConfig(PrecompiledConfig): + num_fetch: int + lm: str = "openai/gpt-4o-mini" + embedder: str = "openai/text-embedding-3-small" + clients: dict = Field(default_factory=lambda: {"mit": ["csail", "mit-media-lab"], "berkeley": ["bear"]}) diff --git a/program/program.py b/program/program.py new file mode 100644 index 0000000..2e24ce8 --- /dev/null +++ b/program/program.py @@ -0,0 +1,29 @@ +import sys + +from modaic import PrecompiledProgram + +from .config import AgentWRetreiverConfig +from .retriever import ExampleRetriever +from .tools.google.google_search import search_google # noqa: F401 +from .utils.used import random_util # noqa: F401 + + +class AgentWRetreiver(PrecompiledProgram): + config: AgentWRetreiverConfig + + def __init__(self, config: AgentWRetreiverConfig, retriever: ExampleRetriever, **kwargs): + super().__init__(config, retriever=retriever, **kwargs) + self.lm = self.config.lm + self.clients = self.config.clients + + def forward(self, query: str) -> str: + return self.retriever.retrieve(query) + + +if __name__ == "__main__": + username = sys.argv[1] # ← first arg after script name (username) + config = AgentWRetreiverConfig(num_fetch=1) + retriever = ExampleRetriever(config, needed_param="hi") + program = AgentWRetreiver(config, retriever=retriever) + repo_path = f"{username}/nested_repo_3" + program.push_to_hub(repo_path, with_code=True) diff --git a/program/retriever.py b/program/retriever.py new file mode 100644 index 0000000..d106f03 --- /dev/null +++ b/program/retriever.py @@ -0,0 +1,17 @@ +from modaic import Retriever + +from .config import AgentWRetreiverConfig +from .tools.jira.jira_api_tools import call_jira_api # noqa: F401 +from .utils.used import random_util # noqa: F401 + + +class ExampleRetriever(Retriever): + config: AgentWRetreiverConfig + + def __init__(self, config: AgentWRetreiverConfig, needed_param: str, **kwargs): + super().__init__(config, **kwargs) + self.embedder_name = config.embedder + self.needed_param = needed_param + + def retrieve(self, query: str) -> str: + return f"Retrieved {self.config.num_fetch} results for {query}" diff --git a/program/tools/__init__.py b/program/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/program/tools/google/__init__.py b/program/tools/google/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/program/tools/google/google_search.py b/program/tools/google/google_search.py new file mode 100644 index 0000000..f72e81e --- /dev/null +++ b/program/tools/google/google_search.py @@ -0,0 +1,2 @@ +def search_google() -> str: + return "search_google" diff --git a/program/tools/jira/__init__.py b/program/tools/jira/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/program/tools/jira/jira_api_tools.py b/program/tools/jira/jira_api_tools.py new file mode 100644 index 0000000..e8d3c7f --- /dev/null +++ b/program/tools/jira/jira_api_tools.py @@ -0,0 +1,2 @@ +def call_jira_api() -> str: + return "call_jira_api" diff --git a/program/tools/unused_but_included2.py b/program/tools/unused_but_included2.py new file mode 100644 index 0000000..e69de29 diff --git a/program/utils/__init__.py b/program/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/program/utils/second_degree_import.py b/program/utils/second_degree_import.py new file mode 100644 index 0000000..6f42458 --- /dev/null +++ b/program/utils/second_degree_import.py @@ -0,0 +1,2 @@ +def import_me_too() -> str: + return "import_me_too" diff --git a/program/utils/unused_but_included.py b/program/utils/unused_but_included.py new file mode 100644 index 0000000..e69de29 diff --git a/program/utils/used.py b/program/utils/used.py new file mode 100644 index 0000000..7a1ca62 --- /dev/null +++ b/program/utils/used.py @@ -0,0 +1,5 @@ +from .second_degree_import import import_me_too # noqa: F401 + + +def random_util() -> str: + return "random_util" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..9ae5e2e --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,11 @@ +[project] +name = "nested_repo_3" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.10" +dependencies = ["dspy", "modaic"] + +[tool.uv.sources] +modaic = { workspace = true } +