|
- #!/usr/bin/env python3 -m pytest
-
- import json
- import os
- import sys
-
- import pytest
-
- from autogen.agentchat.contrib.agent_builder import AgentBuilder
-
- sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
- sys.path.append(os.path.join(os.path.dirname(__file__), "../.."))
- from conftest import reason, skip_openai # noqa: E402
- from test_assistant_agent import KEY_LOC, OAI_CONFIG_LIST # noqa: E402
-
- try:
- import chromadb
- import huggingface_hub
- except ImportError:
- skip = True
- else:
- skip = False
-
- here = os.path.abspath(os.path.dirname(__file__))
-
-
- def _config_check(config):
- # check config loading
- assert config.get("coding", None) is not None
- assert config.get("default_llm_config", None) is not None
- assert config.get("code_execution_config", None) is not None
-
- for agent_config in config["agent_configs"]:
- assert agent_config.get("name", None) is not None
- assert agent_config.get("model", None) is not None
- assert agent_config.get("description", None) is not None
- assert agent_config.get("system_message", None) is not None
-
-
- @pytest.mark.skipif(
- skip_openai,
- reason=reason,
- )
- def test_build():
- builder = AgentBuilder(
- config_file_or_env=OAI_CONFIG_LIST,
- config_file_location=KEY_LOC,
- builder_model=["gpt-4", "gpt-4-1106-preview"],
- agent_model=["gpt-4", "gpt-4-1106-preview"],
- )
- building_task = (
- "Find a paper on arxiv by programming, and analyze its application in some domain. "
- "For example, find a recent paper about gpt-4 on arxiv "
- "and find its potential applications in software."
- )
- agent_list, agent_config = builder.build(
- building_task=building_task,
- default_llm_config={"temperature": 0},
- code_execution_config={
- "last_n_messages": 2,
- "work_dir": f"{here}/test_agent_scripts",
- "timeout": 60,
- "use_docker": "python:3",
- },
- )
- _config_check(agent_config)
-
- # check number of agents
- assert len(agent_config["agent_configs"]) <= builder.max_agents
-
-
- @pytest.mark.skipif(
- skip_openai or skip,
- reason=reason + "OR dependency not installed",
- )
- def test_build_from_library():
- builder = AgentBuilder(
- config_file_or_env=OAI_CONFIG_LIST,
- config_file_location=KEY_LOC,
- builder_model=["gpt-4", "gpt-4-1106-preview"],
- agent_model=["gpt-4", "gpt-4-1106-preview"],
- )
- building_task = (
- "Find a paper on arxiv by programming, and analyze its application in some domain. "
- "For example, find a recent paper about gpt-4 on arxiv "
- "and find its potential applications in software."
- )
- agent_list, agent_config = builder.build_from_library(
- building_task=building_task,
- library_path_or_json=f"{here}/example_agent_builder_library.json",
- default_llm_config={"temperature": 0},
- code_execution_config={
- "last_n_messages": 2,
- "work_dir": f"{here}/test_agent_scripts",
- "timeout": 60,
- "use_docker": "python:3",
- },
- )
- _config_check(agent_config)
-
- # check number of agents
- assert len(agent_config["agent_configs"]) <= builder.max_agents
-
- builder.clear_all_agents()
-
- # test embedding similarity selection
- agent_list, agent_config = builder.build_from_library(
- building_task=building_task,
- library_path_or_json=f"{here}/example_agent_builder_library.json",
- default_llm_config={"temperature": 0},
- embedding_model="all-mpnet-base-v2",
- code_execution_config={
- "last_n_messages": 2,
- "work_dir": f"{here}/test_agent_scripts",
- "timeout": 60,
- "use_docker": "python:3",
- },
- )
- _config_check(agent_config)
-
- # check number of agents
- assert len(agent_config["agent_configs"]) <= builder.max_agents
-
-
- @pytest.mark.skipif(
- skip_openai,
- reason=reason,
- )
- def test_save():
- builder = AgentBuilder(
- config_file_or_env=OAI_CONFIG_LIST,
- config_file_location=KEY_LOC,
- builder_model=["gpt-4", "gpt-4-1106-preview"],
- agent_model=["gpt-4", "gpt-4-1106-preview"],
- )
- building_task = (
- "Find a paper on arxiv by programming, and analyze its application in some domain. "
- "For example, find a recent paper about gpt-4 on arxiv "
- "and find its potential applications in software."
- )
-
- builder.build(
- building_task=building_task,
- default_llm_config={"temperature": 0},
- code_execution_config={
- "last_n_messages": 2,
- "work_dir": f"{here}/test_agent_scripts",
- "timeout": 60,
- "use_docker": "python:3",
- },
- )
- saved_files = builder.save(f"{here}/example_save_agent_builder_config.json")
-
- # check config file path
- assert os.path.isfile(saved_files)
-
- saved_configs = json.load(open(saved_files))
-
- _config_check(saved_configs)
-
-
- @pytest.mark.skipif(
- skip_openai,
- reason=reason,
- )
- def test_load():
- builder = AgentBuilder(
- config_file_or_env=OAI_CONFIG_LIST,
- config_file_location=KEY_LOC,
- builder_model=["gpt-4", "gpt-4-1106-preview"],
- agent_model=["gpt-4", "gpt-4-1106-preview"],
- )
-
- config_save_path = f"{here}/example_test_agent_builder_config.json"
- json.load(open(config_save_path, "r"))
-
- agent_list, loaded_agent_configs = builder.load(
- config_save_path,
- code_execution_config={
- "last_n_messages": 2,
- "work_dir": f"{here}/test_agent_scripts",
- "timeout": 60,
- "use_docker": "python:3",
- },
- )
- print(loaded_agent_configs)
-
- _config_check(loaded_agent_configs)
-
-
- @pytest.mark.skipif(
- skip_openai,
- reason=reason,
- )
- def test_clear_agent():
- builder = AgentBuilder(
- config_file_or_env=OAI_CONFIG_LIST,
- config_file_location=KEY_LOC,
- builder_model=["gpt-4", "gpt-4-1106-preview"],
- agent_model=["gpt-4", "gpt-4-1106-preview"],
- )
-
- config_save_path = f"{here}/example_test_agent_builder_config.json"
- builder.load(
- config_save_path,
- code_execution_config={
- "last_n_messages": 2,
- "work_dir": f"{here}/test_agent_scripts",
- "timeout": 60,
- "use_docker": "python:3",
- },
- )
- builder.clear_all_agents()
-
- # check if the agent cleared
- assert len(builder.agent_procs_assign) == 0
-
-
- if __name__ == "__main__":
- test_build()
- test_build_from_library()
- test_save()
- test_load()
- test_clear_agent()
|