Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename Develop to Studio #15

Merged
merged 5 commits into from
Sep 23, 2024
Merged
Show file tree
Hide file tree
Changes from 4 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
2 changes: 1 addition & 1 deletion examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ In the order of increasing complexity:
- [gaia_agent](examples/gaia_agent) - custom agent that solves Gaia benchmark using planning and a set of tools with web search, documents and media parsers, code execution.
- [delegate.py](examples/delegate.py) - multi-agent setup where agent contains multiple sub-agents and delegates the tasks to them.
- [delegate_stack.py](examples/delegate_stack.py) - more complex multi-agent setup where agent uses stack of the tape views to track data for each sub-agent.
- [develop.py](examples/develop.py) - interactive Gradio demo of agent that could be edited in runtime.
- [studio.py](examples/studio.py) - interactive Gradio demo of agent that could be edited in runtime.
- [tape_improver.py](examples/tape_improver.py) - the agent that revisit and improves the tapes produced by another agent.
- [gsm8k_tuning](examples/gsm8k_tuning) - custom agent that solves GSM-8k benchmark, collect tapes and finetune smaller LLaMA model on them.

14 changes: 7 additions & 7 deletions examples/chat.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import sys

from tapeagents.team import TeamAgent, TeamTape
from tapeagents.develop import Develop
from tapeagents.studio import Studio
from tapeagents.llms import LLAMA, LLM
from tapeagents.rendering import PrettyRenderer


def try_chat(llm: LLM, develop: bool):
def try_chat(llm: LLM, studio: bool):
# equilavent of https://microsoft.github.io/autogen/docs/tutorial/introduction
comedy_duo = TeamAgent.create_chat_initiator(
name="Joe",
Expand All @@ -18,8 +18,8 @@ def try_chat(llm: LLM, develop: bool):
max_turns=3,
init_message="Hey Cathy, tell me a joke",
)
if develop:
Develop(comedy_duo, TeamTape(context=None, steps=[]), PrettyRenderer()).launch()
if studio:
Studio(comedy_duo, TeamTape(context=None, steps=[]), PrettyRenderer()).launch()
else:
for event in comedy_duo.run(TeamTape(context=None, steps=[])):
print(event.model_dump_json(indent=2))
Expand All @@ -32,11 +32,11 @@ def try_chat(llm: LLM, develop: bool):
parameters=dict(temperature=0.7, max_tokens=512),
)
if len(sys.argv) == 2:
if sys.argv[1] == "develop":
try_chat(llm, develop=True)
if sys.argv[1] == "studio":
try_chat(llm, studio=True)
else:
raise ValueError()
elif len(sys.argv) == 1:
try_chat(llm, develop=False)
try_chat(llm, studio=False)
else:
raise ValueError()
14 changes: 7 additions & 7 deletions examples/code_chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from tapeagents.autogen_prompts import AUTOGEN_ASSISTANT_SYSTEM_MESSAGE
from tapeagents.team import TeamAgent, TeamTape
from tapeagents.container_executor import ContainerExecutor
from tapeagents.develop import Develop
from tapeagents.studio import Studio
from tapeagents.environment import CodeExecutionEnvironment
from tapeagents.llms import LLM, LiteLLM
from tapeagents.rendering import PrettyRenderer
Expand All @@ -14,7 +14,7 @@
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")


def try_chat(llm: LLM, develop: bool):
def try_chat(llm: LLM, studio: bool):
# equilavent of https://microsoft.github.io/autogen/docs/tutorial/introduction
org = TeamAgent.create_chat_initiator(
name="UserProxy",
Expand All @@ -32,8 +32,8 @@ def try_chat(llm: LLM, develop: bool):
start_tape = TeamTape(context=None, steps=[])
now = f"{datetime.datetime.now():%Y%m%d%H%M%S}"
env = CodeExecutionEnvironment(ContainerExecutor(work_dir=f"outputs/chat_code/{now}"))
if develop:
Develop(org, start_tape, PrettyRenderer(), env).launch()
if studio:
Studio(org, start_tape, PrettyRenderer(), env).launch()
else:
loop = main_loop(org, start_tape, env)
for event in loop:
Expand All @@ -48,11 +48,11 @@ def try_chat(llm: LLM, develop: bool):
if __name__ == "__main__":
llm = LiteLLM(model_name="gpt-4o")
if len(sys.argv) == 2:
if sys.argv[1] == "develop":
try_chat(llm, develop=True)
if sys.argv[1] == "studio":
try_chat(llm, studio=True)
else:
raise ValueError()
elif len(sys.argv) == 1:
try_chat(llm, develop=False)
try_chat(llm, studio=False)
else:
raise ValueError()
18 changes: 9 additions & 9 deletions examples/data_science.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@ def make_renderers() -> dict[str, BasicRenderer]:
}


def main(develop: bool):
def main(studio: bool):
agent, start_tape, env = make_world()
if develop:
from tapeagents.develop import Develop
if studio:
from tapeagents.studio import Studio

Develop(agent, start_tape, make_renderers(), env).launch()
Studio(agent, start_tape, make_renderers(), env).launch()
else:
events = list(main_loop(agent, start_tape, env))
assert (ae := events[-1].agent_event) and ae.final_tape
Expand All @@ -75,12 +75,12 @@ def main(develop: bool):
if __name__ == "__main__":
match sys.argv[1:]:
case []:
main(develop=False)
case ["develop"]:
main(develop=True)
main(studio=False)
case ["studio"]:
main(studio=True)
case ["make_test_data"]:
with run_in_tmp_dir_to_make_test_data("data_science"):
main(develop=False)
main(studio=False)
case _:
print("Usage: python -m examples.data_science [develop]")
print("Usage: python -m examples.data_science [studio]")
sys.exit(1)
6 changes: 3 additions & 3 deletions examples/develop.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import logging
import sys

from tapeagents.develop import Develop
from tapeagents.studio import Studio
from tapeagents.dialog import Dialog, SystemStep, UserStep
from tapeagents.llms import LLAMA
from tapeagents.rendering import PrettyRenderer
Expand All @@ -15,7 +15,7 @@
def try_development_app_with_stack(llm):
tape = ExampleTape(context=EXAMPLE_TEXT)
agent = make_analyze_text_chain(llm)
Develop(agent, tape, PrettyRenderer()).launch()
Studio(agent, tape, PrettyRenderer()).launch()


def try_development_app_with_chat(llm):
Expand All @@ -29,7 +29,7 @@ def try_development_app_with_chat(llm):
],
)
agent = LLAMAChatBot.create(llm)
Develop(agent, tape, PrettyRenderer()).launch()
Studio(agent, tape, PrettyRenderer()).launch()


if __name__ == "__main__":
Expand Down
4 changes: 2 additions & 2 deletions examples/gaia_agent/scripts/develop.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from hydra.utils import instantiate
from omegaconf import DictConfig

from tapeagents.develop import Develop
from tapeagents.studio import Studio
from tapeagents.llms import CachedLLM
from tapeagents.rendering import TapeBrowserRenderer

Expand Down Expand Up @@ -39,7 +39,7 @@ def main(cfg: DictConfig) -> None:
agent = GaiaAgent.create(llm, config=instantiate(cfg.agent_config))
agent.max_iterations = 10
tape = GaiaTape(steps=[GaiaQuestion(content="How many calories in 2 teaspoons of hummus")])
Develop(agent, tape, TapeBrowserRenderer(), env).launch()
Studio(agent, tape, TapeBrowserRenderer(), env).launch()


if __name__ == "__main__":
Expand Down
16 changes: 8 additions & 8 deletions examples/multi_chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from tapeagents.team import TeamAgent, TeamTape
from tapeagents.container_executor import ContainerExecutor
from tapeagents.core import FinalStep
from tapeagents.develop import Develop
from tapeagents.studio import Studio
from tapeagents.environment import CodeExecutionEnvironment
from tapeagents.llms import LiteLLM
from tapeagents.rendering import PrettyRenderer
Expand All @@ -16,7 +16,7 @@
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")


def try_chat(develop: bool):
def try_chat(studio: bool):
llm = LiteLLM(model_name="gpt-4o", parameters={"timeout": 15.0}, use_cache=True)
product_manager = TeamAgent.create(
name="ProductManager",
Expand Down Expand Up @@ -47,22 +47,22 @@ def try_chat(develop: bool):
start_tape = TeamTape(context=None, steps=[])
now = f"{datetime.datetime.now():%Y%m%d%H%M%S}"
env = CodeExecutionEnvironment(ContainerExecutor(work_dir=f"outputs/multi_chat_code/{now}"))
if develop:
if studio:
renderers = {
"messages": PrettyRenderer(filter_steps=(Call, Respond, FinalStep), render_llm_calls=False),
"full": PrettyRenderer(),
}
Develop(org, start_tape, renderers, env).launch()
Studio(org, start_tape, renderers, env).launch()
else:
_ = list(main_loop(org, start_tape, env))


if __name__ == "__main__":
match sys.argv[1:]:
case ["develop"]:
try_chat(develop=True)
case ["studio"]:
try_chat(studio=True)
case []:
try_chat(develop=False)
try_chat(studio=False)
case _:
print("Usage: python multi_chat.py [develop]")
print("Usage: python multi_chat.py [studio]")
sys.exit(1)
24 changes: 12 additions & 12 deletions examples/tape_improver.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,18 +206,18 @@ def make_world(llm: LLM | None = None) -> tuple[Agent, Tape, Tape]:
return code_improver, bad_tape, improver_tape


def main(mode: Literal["run improver", "develop agent", "develop improver"]):
def main(mode: Literal["run improver", "studio agent", "studio improver"]):
code_improver, bad_tape, improver_tape = make_world()

if mode == "run improver":
final_tape = code_improver.run(improver_tape).get_final_tape()
with open("final_tape.json", "w") as f:
f.write(final_tape.model_dump_json(indent=2))
elif mode == "develop improver":
from tapeagents.develop import Develop
elif mode == "studio improver":
from tapeagents.studio import Studio

Develop(code_improver, improver_tape, PrettyRenderer()).launch()
elif mode == "develop agent":
Studio(code_improver, improver_tape, PrettyRenderer()).launch()
elif mode == "studio agent":
data_science_agent, _, env = data_science_make_world()

def improve_code(tape: Tape):
Expand All @@ -238,22 +238,22 @@ def improve_code(tape: Tape):
return result

transforms = {"improve_code": improve_code}
from tapeagents.develop import Develop
from tapeagents.studio import Studio

Develop(data_science_agent, bad_tape, make_renderers(), env, transforms).launch()
Studio(data_science_agent, bad_tape, make_renderers(), env, transforms).launch()
else:
assert False, f"Invalid mode {mode}"


if __name__ == "__main__":
match sys.argv[1:]:
case ["develop", "agent"]:
main("develop agent")
case ["develop", "improver"]:
main("develop improver")
case ["studio", "agent"]:
main("studio agent")
case ["studio", "improver"]:
main("studio improver")
case ["make_test_data"]:
with run_in_tmp_dir_to_make_test_data("tape_improver"):
main("run improver")
case _:
# print usage and exit
print("Usage: python -m examples.data_science [develop agent] [develop improver]")
print("Usage: python -m examples.data_science [studio agent] [studio improver]")
2 changes: 1 addition & 1 deletion tapeagents/develop.py → tapeagents/studio.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
logger = logging.getLogger(__name__)


class Develop:
class Studio:

def __init__(
self,
Expand Down
Loading