From 790ff5598192005e57c1c0da0dcc6ca887381f10 Mon Sep 17 00:00:00 2001 From: seehi <6580@pm.me> Date: Fri, 7 Jun 2024 18:15:23 +0800 Subject: [PATCH] add scorer example --- examples/exp_pool/{simple.py => manager.py} | 0 examples/exp_pool/scorer.py | 25 +++++++++++++++++++++ metagpt/exp_pool/scorers/simple.py | 4 ++-- 3 files changed, 27 insertions(+), 2 deletions(-) rename examples/exp_pool/{simple.py => manager.py} (100%) create mode 100644 examples/exp_pool/scorer.py diff --git a/examples/exp_pool/simple.py b/examples/exp_pool/manager.py similarity index 100% rename from examples/exp_pool/simple.py rename to examples/exp_pool/manager.py diff --git a/examples/exp_pool/scorer.py b/examples/exp_pool/scorer.py new file mode 100644 index 000000000..1efe07bdf --- /dev/null +++ b/examples/exp_pool/scorer.py @@ -0,0 +1,25 @@ +import asyncio + +from metagpt.exp_pool.scorers import SimpleScorer +from metagpt.logs import logger + + +def echo(req: str): + """Echo from req.""" + + return req + + +async def simple(): + scorer = SimpleScorer() + + score = await scorer.evaluate(echo, "data", ("data",)) + logger.info(f"The score is: {score}") + + +async def main(): + await simple() + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/metagpt/exp_pool/scorers/simple.py b/metagpt/exp_pool/scorers/simple.py index 5779f7fb1..84995b60f 100644 --- a/metagpt/exp_pool/scorers/simple.py +++ b/metagpt/exp_pool/scorers/simple.py @@ -10,7 +10,7 @@ from metagpt.exp_pool.schema import Score from metagpt.exp_pool.scorers.base import ExperienceScorer from metagpt.llm import LLM from metagpt.provider.base_llm import BaseLLM -from metagpt.utils.common import parse_json_code_block +from metagpt.utils.common import CodeParser SIMPLE_SCORER_TEMPLATE = """ Role: You're an expert score evaluator. You specialize in assessing the output of the given function, based on its intended requirement and produced result. @@ -78,6 +78,6 @@ class SimpleScorer(ExperienceScorer): func_result=result, ) resp = await self.llm.aask(prompt) - resp_json = json.loads(parse_json_code_block(resp)[0]) + resp_json = json.loads(CodeParser.parse_code(resp, lang="json")) return Score(**resp_json)