use config

This commit is contained in:
geekan 2024-01-10 20:19:56 +08:00
parent 21cac0bffb
commit 479bbc9b2d
37 changed files with 102 additions and 276 deletions

View file

@ -11,7 +11,6 @@ from pathlib import Path
import pytest
from metagpt.actions.rebuild_class_view import RebuildClassView
from metagpt.config import CONFIG
from metagpt.const import GRAPH_REPO_FILE_REPO
from metagpt.llm import LLM
@ -22,7 +21,7 @@ async def test_rebuild():
name="RedBean", context=str(Path(__file__).parent.parent.parent.parent / "metagpt"), llm=LLM()
)
await action.run()
graph_file_repo = CONFIG.git_repo.new_file_repository(relative_path=GRAPH_REPO_FILE_REPO)
graph_file_repo = CONTEXT.git_repo.new_file_repository(relative_path=GRAPH_REPO_FILE_REPO)
assert graph_file_repo.changed_files

View file

@ -10,7 +10,6 @@ from pathlib import Path
import pytest
from metagpt.actions.rebuild_sequence_view import RebuildSequenceView
from metagpt.config import CONFIG
from metagpt.const import GRAPH_REPO_FILE_REPO
from metagpt.llm import LLM
from metagpt.utils.common import aread
@ -22,20 +21,20 @@ from metagpt.utils.git_repository import ChangeType
async def test_rebuild():
# Mock
data = await aread(filename=Path(__file__).parent / "../../data/graph_db/networkx.json")
graph_db_filename = Path(CONFIG.git_repo.workdir.name).with_suffix(".json")
graph_db_filename = Path(CONTEXT.git_repo.workdir.name).with_suffix(".json")
await FileRepository.save_file(
filename=str(graph_db_filename),
relative_path=GRAPH_REPO_FILE_REPO,
content=data,
)
CONFIG.git_repo.add_change({f"{GRAPH_REPO_FILE_REPO}/{graph_db_filename}": ChangeType.UNTRACTED})
CONFIG.git_repo.commit("commit1")
CONTEXT.git_repo.add_change({f"{GRAPH_REPO_FILE_REPO}/{graph_db_filename}": ChangeType.UNTRACTED})
CONTEXT.git_repo.commit("commit1")
action = RebuildSequenceView(
name="RedBean", context=str(Path(__file__).parent.parent.parent.parent / "metagpt"), llm=LLM()
)
await action.run()
graph_file_repo = CONFIG.git_repo.new_file_repository(relative_path=GRAPH_REPO_FILE_REPO)
graph_file_repo = CONTEXT.git_repo.new_file_repository(relative_path=GRAPH_REPO_FILE_REPO)
assert graph_file_repo.changed_files

View file

@ -9,7 +9,6 @@
import pytest
from metagpt.actions.summarize_code import SummarizeCode
from metagpt.config import CONFIG
from metagpt.const import SYSTEM_DESIGN_FILE_REPO, TASK_FILE_REPO
from metagpt.context import CONTEXT
from metagpt.logs import logger
@ -181,12 +180,12 @@ async def test_summarize_code():
CONTEXT.src_workspace = CONTEXT.git_repo.workdir / "src"
await CONTEXT.file_repo.save_file(filename="1.json", relative_path=SYSTEM_DESIGN_FILE_REPO, content=DESIGN_CONTENT)
await CONTEXT.file_repo.save_file(filename="1.json", relative_path=TASK_FILE_REPO, content=TASK_CONTENT)
await CONTEXT.file_repo.save_file(filename="food.py", relative_path=CONFIG.src_workspace, content=FOOD_PY)
await CONTEXT.file_repo.save_file(filename="game.py", relative_path=CONFIG.src_workspace, content=GAME_PY)
await CONTEXT.file_repo.save_file(filename="main.py", relative_path=CONFIG.src_workspace, content=MAIN_PY)
await CONTEXT.file_repo.save_file(filename="snake.py", relative_path=CONFIG.src_workspace, content=SNAKE_PY)
await CONTEXT.file_repo.save_file(filename="food.py", relative_path=CONTEXT.src_workspace, content=FOOD_PY)
await CONTEXT.file_repo.save_file(filename="game.py", relative_path=CONTEXT.src_workspace, content=GAME_PY)
await CONTEXT.file_repo.save_file(filename="main.py", relative_path=CONTEXT.src_workspace, content=MAIN_PY)
await CONTEXT.file_repo.save_file(filename="snake.py", relative_path=CONTEXT.src_workspace, content=SNAKE_PY)
src_file_repo = CONTEXT.git_repo.new_file_repository(relative_path=CONFIG.src_workspace)
src_file_repo = CONTEXT.git_repo.new_file_repository(relative_path=CONTEXT.src_workspace)
all_files = src_file_repo.all_files
ctx = CodeSummarizeContext(design_filename="1.json", task_filename="1.json", codes_filenames=all_files)
action = SummarizeCode(context=ctx)

View file

@ -10,13 +10,13 @@ from pathlib import Path
import pytest
from metagpt.config import CONFIG
from metagpt.context import CONTEXT
from metagpt.learn.skill_loader import SkillsDeclaration
@pytest.mark.asyncio
async def test_suite():
CONFIG.agent_skills = [
CONTEXT.kwargs.agent_skills = [
{"id": 1, "name": "text_to_speech", "type": "builtin", "config": {}, "enabled": True},
{"id": 2, "name": "text_to_image", "type": "builtin", "config": {}, "enabled": True},
{"id": 3, "name": "ai_call", "type": "builtin", "config": {}, "enabled": True},

View file

@ -9,14 +9,14 @@
import pytest
from metagpt.config import CONFIG
from metagpt.config2 import config
from metagpt.learn.text_to_embedding import text_to_embedding
@pytest.mark.asyncio
async def test_text_to_embedding():
# Prerequisites
assert CONFIG.OPENAI_API_KEY
assert config.get_openai_llm()
v = await text_to_embedding(text="Panda emoji")
assert len(v.data) > 0

View file

@ -12,6 +12,7 @@ import pytest
from azure.cognitiveservices.speech import ResultReason
from metagpt.config import CONFIG
from metagpt.config2 import config
from metagpt.tools.azure_tts import AzureTTS
@ -32,7 +33,7 @@ async def test_azure_tts():
Writing a binary file in Python is similar to writing a regular text file, but you'll work with bytes instead of strings.”
</mstts:express-as>
"""
path = CONFIG.path / "tts"
path = config.workspace.path / "tts"
path.mkdir(exist_ok=True, parents=True)
filename = path / "girl.wav"
filename.unlink(missing_ok=True)

View file

@ -12,14 +12,14 @@ from pathlib import Path
import pytest
import requests
from metagpt.config import CONFIG
from metagpt.context import CONTEXT
@pytest.mark.asyncio
async def test_oas2_svc():
workdir = Path(__file__).parent.parent.parent.parent
script_pathname = workdir / "metagpt/tools/metagpt_oas3_api_svc.py"
env = CONFIG.new_environ()
env = CONTEXT.new_environ()
env["PYTHONPATH"] = str(workdir) + ":" + env.get("PYTHONPATH", "")
process = subprocess.Popen(["python", str(script_pathname)], cwd=str(workdir), env=env)
await asyncio.sleep(5)

View file

@ -10,7 +10,7 @@ from unittest.mock import AsyncMock
import pytest
from metagpt.config import CONFIG
from metagpt.config2 import config
from metagpt.tools.metagpt_text_to_image import oas3_metagpt_text_to_image
@ -24,7 +24,7 @@ async def test_draw(mocker):
mock_post.return_value.__aenter__.return_value = mock_response
# Prerequisites
assert CONFIG.METAGPT_TEXT_TO_IMAGE_MODEL_URL
assert config.METAGPT_TEXT_TO_IMAGE_MODEL_URL
binary_data = await oas3_metagpt_text_to_image("Panda emoji")
assert binary_data

View file

@ -8,7 +8,7 @@
import pytest
from metagpt.config import CONFIG
from metagpt.config2 import config
from metagpt.llm import LLM
from metagpt.tools.moderation import Moderation
@ -24,9 +24,7 @@ from metagpt.tools.moderation import Moderation
)
async def test_amoderation(content):
# Prerequisites
assert CONFIG.OPENAI_API_KEY and CONFIG.OPENAI_API_KEY != "YOUR_API_KEY"
assert not CONFIG.OPENAI_API_TYPE
assert CONFIG.OPENAI_API_MODEL
assert config.get_openai_llm()
moderation = Moderation(LLM())
results = await moderation.amoderation(content=content)

View file

@ -8,16 +8,14 @@
import pytest
from metagpt.config import CONFIG
from metagpt.config2 import config
from metagpt.tools.openai_text_to_embedding import oas3_openai_text_to_embedding
@pytest.mark.asyncio
async def test_embedding():
# Prerequisites
assert CONFIG.OPENAI_API_KEY and CONFIG.OPENAI_API_KEY != "YOUR_API_KEY"
assert not CONFIG.OPENAI_API_TYPE
assert CONFIG.OPENAI_API_MODEL
assert config.get_openai_llm()
result = await oas3_openai_text_to_embedding("Panda emoji")
assert result

View file

@ -8,7 +8,7 @@
import pytest
from metagpt.config import CONFIG
from metagpt.config2 import config
from metagpt.tools.openai_text_to_image import (
OpenAIText2Image,
oas3_openai_text_to_image,
@ -18,9 +18,7 @@ from metagpt.tools.openai_text_to_image import (
@pytest.mark.asyncio
async def test_draw():
# Prerequisites
assert CONFIG.OPENAI_API_KEY and CONFIG.OPENAI_API_KEY != "YOUR_API_KEY"
assert not CONFIG.OPENAI_API_TYPE
assert CONFIG.OPENAI_API_MODEL
assert config.get_openai_llm()
binary_data = await oas3_openai_text_to_image("Panda emoji")
assert binary_data

View file

@ -12,14 +12,14 @@ from pathlib import Path
import pytest
import requests
from metagpt.config import CONFIG
from metagpt.context import CONTEXT
@pytest.mark.asyncio
async def test_hello():
workdir = Path(__file__).parent.parent.parent.parent
script_pathname = workdir / "metagpt/tools/openapi_v3_hello.py"
env = CONFIG.new_environ()
env = CONTEXT.new_environ()
env["PYTHONPATH"] = str(workdir) + ":" + env.get("PYTHONPATH", "")
process = subprocess.Popen(["python", str(script_pathname)], cwd=workdir, env=env)
await asyncio.sleep(5)

View file

@ -1,26 +0,0 @@
# -*- coding: utf-8 -*-
# @Date : 2023/7/22 02:40
# @Author : stellahong (stellahong@deepwisdom.ai)
#
import os
from metagpt.config import CONFIG
from metagpt.tools.sd_engine import SDEngine
def test_sd_engine_init():
sd_engine = SDEngine()
assert sd_engine.payload["seed"] == -1
def test_sd_engine_generate_prompt():
sd_engine = SDEngine()
sd_engine.construct_payload(prompt="test")
assert sd_engine.payload["prompt"] == "test"
async def test_sd_engine_run_t2i():
sd_engine = SDEngine()
await sd_engine.run_t2i(prompts=["test"])
img_path = CONFIG.path / "resources" / "SD_Output" / "output_0.png"
assert os.path.exists(img_path)

View file

@ -14,7 +14,7 @@ from typing import Callable
import pytest
import tests.data.search
from metagpt.config import CONFIG
from metagpt.config2 import config
from metagpt.logs import logger
from metagpt.tools import SearchEngineType
from metagpt.tools.search_engine import SearchEngine
@ -50,13 +50,12 @@ async def test_search_engine(search_engine_type, run_func: Callable, max_results
# Prerequisites
cache_json_path = None
if search_engine_type is SearchEngineType.SERPAPI_GOOGLE:
assert CONFIG.SERPAPI_API_KEY and CONFIG.SERPAPI_API_KEY != "YOUR_API_KEY"
assert config.search["serpapi"]
cache_json_path = search_cache_path / f"serpapi-metagpt-{max_results}.json"
elif search_engine_type is SearchEngineType.DIRECT_GOOGLE:
assert CONFIG.GOOGLE_API_KEY and CONFIG.GOOGLE_API_KEY != "YOUR_API_KEY"
assert CONFIG.GOOGLE_CSE_ID and CONFIG.GOOGLE_CSE_ID != "YOUR_CSE_ID"
assert config.search["google"]
elif search_engine_type is SearchEngineType.SERPER_GOOGLE:
assert CONFIG.SERPER_API_KEY and CONFIG.SERPER_API_KEY != "YOUR_API_KEY"
assert config.search["serper"]
cache_json_path = search_cache_path / f"serper-metagpt-{max_results}.json"
if cache_json_path:

View file

@ -9,7 +9,7 @@ from pathlib import Path
import pytest
from metagpt.config import CONFIG
from metagpt.config2 import config
from metagpt.const import API_QUESTIONS_PATH, UT_PY_PATH
from metagpt.tools.ut_writer import YFT_PROMPT_PREFIX, UTGenerator
@ -20,9 +20,7 @@ class TestUTWriter:
# Prerequisites
swagger_file = Path(__file__).parent / "../../data/ut_writer/yft_swaggerApi.json"
assert swagger_file.exists()
assert CONFIG.OPENAI_API_KEY and CONFIG.OPENAI_API_KEY != "YOUR_API_KEY"
assert not CONFIG.OPENAI_API_TYPE
assert CONFIG.OPENAI_API_MODEL
assert config.get_openai_llm()
tags = ["测试", "作业"]
# 这里在文件中手动加入了两个测试标签的API

View file

@ -9,6 +9,7 @@
import pytest
from metagpt.config import CONFIG
from metagpt.context import CONTEXT
from metagpt.utils.common import check_cmd_exists
from metagpt.utils.mermaid import MMC1, mermaid_to_file
@ -22,7 +23,7 @@ async def test_mermaid(engine):
assert check_cmd_exists("npm") == 0
CONFIG.mermaid_engine = engine
save_to = CONFIG.git_repo.workdir / f"{CONFIG.mermaid_engine}/1"
save_to = CONTEXT.git_repo.workdir / f"{CONFIG.mermaid_engine}/1"
await mermaid_to_file(MMC1, save_to)
# ink does not support pdf

View file

@ -2,13 +2,13 @@
# -*- coding: utf-8 -*-
# @Desc : unittest of repair_llm_raw_output
from metagpt.config import CONFIG
from metagpt.config2 import config
"""
CONFIG.repair_llm_output should be True before retry_parse_json_text imported.
so we move `from ... impot ...` into each `test_xx` to avoid `Module level import not at top of file` format warning.
"""
CONFIG.repair_llm_output = True
config.repair_llm_output = True
def test_repair_case_sensitivity():