mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-06-08 15:05:17 +02:00
refine code
This commit is contained in:
parent
5596e7e217
commit
45f5b02475
3 changed files with 95 additions and 60 deletions
|
|
@ -39,5 +39,6 @@ mock_llm_config_zhipu = LLMConfig(
|
|||
llm_type="zhipu",
|
||||
api_key="mock_api_key.zhipu",
|
||||
base_url="mock_base_url",
|
||||
model="mock_zhipu_model",
|
||||
proxy="http://localhost:8080",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -5,15 +5,10 @@
|
|||
@Author : alexanderwu
|
||||
@File : test_config.py
|
||||
"""
|
||||
from pydantic import BaseModel
|
||||
|
||||
from metagpt.config2 import Config
|
||||
from metagpt.configs.llm_config import LLMType
|
||||
from metagpt.context_mixin import ContextMixin
|
||||
from tests.metagpt.provider.mock_llm_config import (
|
||||
mock_llm_config,
|
||||
mock_llm_config_proxy,
|
||||
)
|
||||
from tests.metagpt.provider.mock_llm_config import mock_llm_config
|
||||
|
||||
|
||||
def test_config_1():
|
||||
|
|
@ -27,57 +22,3 @@ def test_config_from_dict():
|
|||
cfg = Config(llm=mock_llm_config)
|
||||
assert cfg
|
||||
assert cfg.llm.api_key == "mock_api_key"
|
||||
|
||||
|
||||
class ModelX(ContextMixin, BaseModel):
|
||||
a: str = "a"
|
||||
b: str = "b"
|
||||
|
||||
|
||||
class WTFMixin(BaseModel):
|
||||
c: str = "c"
|
||||
d: str = "d"
|
||||
|
||||
|
||||
class ModelY(WTFMixin, ModelX):
|
||||
pass
|
||||
|
||||
|
||||
def test_config_mixin_1():
|
||||
new_model = ModelX()
|
||||
assert new_model.a == "a"
|
||||
assert new_model.b == "b"
|
||||
|
||||
|
||||
def test_config_mixin_2():
|
||||
i = Config(llm=mock_llm_config)
|
||||
j = Config(llm=mock_llm_config_proxy)
|
||||
obj = ModelX(config=i)
|
||||
assert obj.config == i
|
||||
assert obj.config.llm == mock_llm_config
|
||||
|
||||
obj.set_config(j)
|
||||
# obj already has a config, so it will not be set
|
||||
assert obj.config == i
|
||||
|
||||
|
||||
def test_config_mixin_3():
|
||||
"""Test config mixin with multiple inheritance"""
|
||||
i = Config(llm=mock_llm_config)
|
||||
j = Config(llm=mock_llm_config_proxy)
|
||||
obj = ModelY(config=i)
|
||||
assert obj.config == i
|
||||
assert obj.config.llm == mock_llm_config
|
||||
|
||||
obj.set_config(j)
|
||||
# obj already has a config, so it will not be set
|
||||
assert obj.config == i
|
||||
assert obj.config.llm == mock_llm_config
|
||||
|
||||
assert obj.a == "a"
|
||||
assert obj.b == "b"
|
||||
assert obj.c == "c"
|
||||
assert obj.d == "d"
|
||||
|
||||
print(obj.__dict__.keys())
|
||||
assert "private_config" in obj.__dict__.keys()
|
||||
|
|
|
|||
93
tests/metagpt/test_context_mixin.py
Normal file
93
tests/metagpt/test_context_mixin.py
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
@Time : 2024/1/11 19:24
|
||||
@Author : alexanderwu
|
||||
@File : test_context_mixin.py
|
||||
"""
|
||||
from pydantic import BaseModel
|
||||
|
||||
from metagpt.config2 import Config
|
||||
from metagpt.context_mixin import ContextMixin
|
||||
from tests.metagpt.provider.mock_llm_config import (
|
||||
mock_llm_config,
|
||||
mock_llm_config_proxy,
|
||||
mock_llm_config_zhipu,
|
||||
)
|
||||
|
||||
|
||||
class ModelX(ContextMixin, BaseModel):
|
||||
a: str = "a"
|
||||
b: str = "b"
|
||||
|
||||
|
||||
class WTFMixin(BaseModel):
|
||||
c: str = "c"
|
||||
d: str = "d"
|
||||
|
||||
|
||||
class ModelY(WTFMixin, ModelX):
|
||||
pass
|
||||
|
||||
|
||||
def test_config_mixin_1():
|
||||
new_model = ModelX()
|
||||
assert new_model.a == "a"
|
||||
assert new_model.b == "b"
|
||||
|
||||
|
||||
def test_config_mixin_2():
|
||||
i = Config(llm=mock_llm_config)
|
||||
j = Config(llm=mock_llm_config_proxy)
|
||||
obj = ModelX(config=i)
|
||||
assert obj.config == i
|
||||
assert obj.config.llm == mock_llm_config
|
||||
|
||||
obj.set_config(j)
|
||||
# obj already has a config, so it will not be set
|
||||
assert obj.config == i
|
||||
|
||||
|
||||
def test_config_mixin_3_multi_inheritance_not_override_config():
|
||||
"""Test config mixin with multiple inheritance"""
|
||||
i = Config(llm=mock_llm_config)
|
||||
j = Config(llm=mock_llm_config_proxy)
|
||||
obj = ModelY(config=i)
|
||||
assert obj.config == i
|
||||
assert obj.config.llm == mock_llm_config
|
||||
|
||||
obj.set_config(j)
|
||||
# obj already has a config, so it will not be set
|
||||
assert obj.config == i
|
||||
assert obj.config.llm == mock_llm_config
|
||||
|
||||
assert obj.a == "a"
|
||||
assert obj.b == "b"
|
||||
assert obj.c == "c"
|
||||
assert obj.d == "d"
|
||||
|
||||
print(obj.__dict__.keys())
|
||||
assert "private_config" in obj.__dict__.keys()
|
||||
|
||||
|
||||
def test_config_mixin_4_multi_inheritance_override_config():
|
||||
"""Test config mixin with multiple inheritance"""
|
||||
i = Config(llm=mock_llm_config)
|
||||
j = Config(llm=mock_llm_config_zhipu)
|
||||
obj = ModelY(config=i)
|
||||
assert obj.config == i
|
||||
assert obj.config.llm == mock_llm_config
|
||||
|
||||
obj.set_config(j, override=True)
|
||||
# obj already has a config, so it will not be set
|
||||
assert obj.config == j
|
||||
assert obj.config.llm == mock_llm_config_zhipu
|
||||
|
||||
assert obj.a == "a"
|
||||
assert obj.b == "b"
|
||||
assert obj.c == "c"
|
||||
assert obj.d == "d"
|
||||
|
||||
print(obj.__dict__.keys())
|
||||
assert "private_config" in obj.__dict__.keys()
|
||||
assert obj.llm.model == "mock_zhipu_model"
|
||||
Loading…
Add table
Add a link
Reference in a new issue