diff --git a/metagpt/actions/talk_action.py b/metagpt/actions/talk_action.py index 052adfb2f..d49152f83 100644 --- a/metagpt/actions/talk_action.py +++ b/metagpt/actions/talk_action.py @@ -24,7 +24,6 @@ class TalkAction(Action): def agent_description(self): return self.g_context.kwargs["agent_description"] - @property def language(self): return self.g_context.kwargs["language"] or config.language @@ -42,7 +41,7 @@ class TalkAction(Action): prompt += ( "If the information is insufficient, you can search in the historical conversation or knowledge above.\n" ) - language = self.language + language = self.language() prompt += ( f"Answer the following questions strictly in {language}, and the answers must follow the Markdown format.\n " f"{self.context}" @@ -56,7 +55,7 @@ class TalkAction(Action): "{role}": self.agent_description or "", "{history}": self.history_summary or "", "{knowledge}": self.knowledge or "", - "{language}": self.language, + "{language}": self.language(), "{ask}": self.context, } prompt = TalkActionPrompt.FORMATION_LOOSE @@ -74,7 +73,7 @@ class TalkAction(Action): @property def aask_args(self): - language = self.language + language = self.language() system_msgs = [ f"You are {self.agent_description}.", "Your responses should align with the role-play agreement, " diff --git a/metagpt/config2.py b/metagpt/config2.py index f7cd697a5..a6aa62f6b 100644 --- a/metagpt/config2.py +++ b/metagpt/config2.py @@ -65,6 +65,7 @@ class Config(CLIParams, YamlModel): llm_for_researcher_report: str = "gpt3" METAGPT_TEXT_TO_IMAGE_MODEL_URL: str = "" language: str = "English" + redis_key: str = "placeholder" @classmethod def default(cls): diff --git a/metagpt/context.py b/metagpt/context.py index 0556add8a..560f6e79a 100644 --- a/metagpt/context.py +++ b/metagpt/context.py @@ -18,6 +18,8 @@ from metagpt.utils.git_repository import GitRepository class AttrDict: + """A dict-like object that allows access to keys as attributes.""" + def __init__(self, d=None): if d is None: d = {} @@ -37,7 +39,7 @@ class AttrDict: class Context: - kwargs: AttrDict = {} + kwargs: AttrDict = AttrDict() config: Config = Config.default() git_repo: Optional[GitRepository] = None src_workspace: Optional[Path] = None @@ -72,5 +74,9 @@ context = Context() if __name__ == "__main__": - print(context.model_dump_json(indent=4)) - print(context.config.get_openai_llm()) + # print(context.model_dump_json(indent=4)) + # print(context.config.get_openai_llm()) + ad = AttrDict({"name": "John", "age": 30}) + + print(ad.name) # Output: John + print(ad.height) # Output: None (因为height不存在) diff --git a/metagpt/memory/brain_memory.py b/metagpt/memory/brain_memory.py index cf5cf902a..73a000beb 100644 --- a/metagpt/memory/brain_memory.py +++ b/metagpt/memory/brain_memory.py @@ -31,7 +31,7 @@ class BrainMemory(BaseModel): is_dirty: bool = False last_talk: str = None cacheable: bool = True - llm: Optional[BaseLLM] = None + llm: Optional[BaseLLM] = Field(default=None, exclude=True) class Config: arbitrary_types_allowed = True @@ -56,8 +56,8 @@ class BrainMemory(BaseModel): @staticmethod async def loads(redis_key: str) -> "BrainMemory": - redis = Redis() - if not redis.is_valid or not redis_key: + redis = Redis(config.redis) + if not redis_key: return BrainMemory() v = await redis.get(key=redis_key) logger.debug(f"REDIS GET {redis_key} {v}") @@ -70,8 +70,8 @@ class BrainMemory(BaseModel): async def dumps(self, redis_key: str, timeout_sec: int = 30 * 60): if not self.is_dirty: return - redis = Redis() - if not redis.is_valid or not redis_key: + redis = Redis(config.redis) + if not redis_key: return False v = self.model_dump_json() if self.cacheable: @@ -140,7 +140,7 @@ class BrainMemory(BaseModel): return text summary = await self._summarize(text=text, max_words=max_words, keep_language=keep_language, limit=limit) if summary: - await self.set_history_summary(history_summary=summary, redis_key=config.redis.key) + await self.set_history_summary(history_summary=summary, redis_key=config.redis_key) return summary raise ValueError(f"text too long:{text_length}") diff --git a/tests/data/rsp_cache.json b/tests/data/rsp_cache.json index db452f676..acc45c280 100644 --- a/tests/data/rsp_cache.json +++ b/tests/data/rsp_cache.json @@ -141,5 +141,17 @@ "\nRole: You are a senior development and qa engineer, your role is summarize the code running result.\nIf the running result does not include an error, you should explicitly approve the result.\nOn the other hand, if the running result indicates some error, you should point out which part, the development code or the test code, produces the error,\nand give specific instructions on fixing the errors. Here is the code info:\n\n## Development Code File Name\na.txt\n## Development Code\n```python\nprint('Hello, World')\n```\n## Test File Name\n\n## Test Code\n```python\nNone\n```\n## Running Command\n\n## Running Output\nstandard output: \n```text\n\n```\nstandard errors: \n```text\n\n```\n\nNow you should begin your analysis\n---\n## instruction:\nPlease summarize the cause of the errors and give correction instruction\n## File To Rewrite:\nDetermine the ONE file to rewrite in order to fix the error, for example, xyz.py, or test_xyz.py\n## Status:\nDetermine if all of the code works fine, if so write PASS, else FAIL,\nWRITE ONLY ONE WORD, PASS OR FAIL, IN THIS SECTION\n## Send To:\nPlease write Engineer if the errors are due to problematic development codes, and QaEngineer to problematic test codes, and NoOne if there are no errors,\nWRITE ONLY ONE WORD, Engineer OR QaEngineer OR NoOne, IN THIS SECTION.\n---\nYou should fill in necessary instruction, status, send to, and finally return all content between the --- segment line.\n": "---\ninstruction: There are no errors in the provided code.\n\nFile To Rewrite: N/A\n\nStatus: PASS\n\nSend To: NoOne\n---", "\nRole: You are a senior development and qa engineer, your role is summarize the code running result.\nIf the running result does not include an error, you should explicitly approve the result.\nOn the other hand, if the running result indicates some error, you should point out which part, the development code or the test code, produces the error,\nand give specific instructions on fixing the errors. Here is the code info:\n\n## Development Code File Name\na.sh\n## Development Code\n```python\necho 'Hello World'\n```\n## Test File Name\n\n## Test Code\n```python\nNone\n```\n## Running Command\necho Hello World\n## Running Output\nstandard output: \n```text\nHello World\n\n```\nstandard errors: \n```text\n\n```\n\nNow you should begin your analysis\n---\n## instruction:\nPlease summarize the cause of the errors and give correction instruction\n## File To Rewrite:\nDetermine the ONE file to rewrite in order to fix the error, for example, xyz.py, or test_xyz.py\n## Status:\nDetermine if all of the code works fine, if so write PASS, else FAIL,\nWRITE ONLY ONE WORD, PASS OR FAIL, IN THIS SECTION\n## Send To:\nPlease write Engineer if the errors are due to problematic development codes, and QaEngineer to problematic test codes, and NoOne if there are no errors,\nWRITE ONLY ONE WORD, Engineer OR QaEngineer OR NoOne, IN THIS SECTION.\n---\nYou should fill in necessary instruction, status, send to, and finally return all content between the --- segment line.\n": "The running result indicates no error. The code works fine.\n\n## File To Rewrite:\nNo file needs to be rewritten.\n\n## Status:\nPASS\n\n## Send To:\nNoOne\n\n---", "\nRole: You are a senior development and qa engineer, your role is summarize the code running result.\nIf the running result does not include an error, you should explicitly approve the result.\nOn the other hand, if the running result indicates some error, you should point out which part, the development code or the test code, produces the error,\nand give specific instructions on fixing the errors. Here is the code info:\n\n## Development Code File Name\na.py\n## Development Code\n```python\npython -c \"print(1/0)\"\n```\n## Test File Name\n\n## Test Code\n```python\nNone\n```\n## Running Command\npython -c print(1/0)\n## Running Output\nstandard output: \n```text\n\n```\nstandard errors: \n```text\nTraceback (most recent call last):\n File \"\", line 1, in \nZeroDivisionError: division by zero\n\n```\n\nNow you should begin your analysis\n---\n## instruction:\nPlease summarize the cause of the errors and give correction instruction\n## File To Rewrite:\nDetermine the ONE file to rewrite in order to fix the error, for example, xyz.py, or test_xyz.py\n## Status:\nDetermine if all of the code works fine, if so write PASS, else FAIL,\nWRITE ONLY ONE WORD, PASS OR FAIL, IN THIS SECTION\n## Send To:\nPlease write Engineer if the errors are due to problematic development codes, and QaEngineer to problematic test codes, and NoOne if there are no errors,\nWRITE ONLY ONE WORD, Engineer OR QaEngineer OR NoOne, IN THIS SECTION.\n---\nYou should fill in necessary instruction, status, send to, and finally return all content between the --- segment line.\n": "---\nThe error is caused by the development code in file a.py, which attempts to divide by zero. To fix the error, the development code in a.py should be modified to handle the ZeroDivisionError, for example by using a try-except block.\n\nFile To Rewrite:\na.py\n\nStatus:\nFAIL\n\nSend To:\nEngineer\n---", - "\nNOTICE\n1. Role: You are a Development Engineer or QA engineer;\n2. Task: You received this message from another Development Engineer or QA engineer who ran or tested your code. \nBased on the message, first, figure out your own role, i.e. Engineer or QaEngineer,\nthen rewrite the development code or the test code based on your role, the error, and the summary, such that all bugs are fixed and the code performs well.\nAttention: Use '##' to split sections, not '#', and '## ' SHOULD WRITE BEFORE the test case or script and triple quotes.\nThe message is as follows:\n# Legacy Code\n```python\n\nfrom typing import List\nfrom deck import Deck\nfrom card import Card\n\nclass Player:\n \"\"\"\n A class representing a player in the Black Jack game.\n \"\"\"\n\n def __init__(self, name: str):\n \"\"\"\n Initialize a Player object.\n \n Args:\n name (str): The name of the player.\n \"\"\"\n self.name = name\n self.hand: List[Card] = []\n self.score = 0\n\n def draw(self, deck: Deck):\n \"\"\"\n Draw a card from the deck and add it to the player's hand.\n \n Args:\n deck (Deck): The deck of cards.\n \"\"\"\n card = deck.draw_card()\n self.hand.append(card)\n self.calculate_score()\n\n def calculate_score(self) -> int:\n \"\"\"\n Calculate the score of the player's hand.\n \n Returns:\n int: The score of the player's hand.\n \"\"\"\n self.score = sum(card.value for card in self.hand)\n # Handle the case where Ace is counted as 11 and causes the score to exceed 21\n if self.score > 21 and any(card.rank == 'A' for card in self.hand):\n self.score -= 10\n return self.score\n\n```\n---\n# Unit Test Code\n```python\n\nimport unittest\nfrom blackjack_game.player import Player\nfrom blackjack_game.deck import Deck\nfrom blackjack_game.card import Card\n\nclass TestPlayer(unittest.TestCase):\n ## Test the Player's initialization\n def test_player_initialization(self):\n player = Player(\"Test Player\")\n self.assertEqual(player.name, \"Test Player\")\n self.assertEqual(player.hand, [])\n self.assertEqual(player.score, 0)\n\n ## Test the Player's draw method\n def test_player_draw(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.draw(deck)\n self.assertEqual(len(player.hand), 1)\n self.assertEqual(player.score, player.hand[0].value)\n\n ## Test the Player's calculate_score method\n def test_player_calculate_score(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.draw(deck)\n player.draw(deck)\n self.assertEqual(player.score, sum(card.value for card in player.hand))\n\n ## Test the Player's calculate_score method with Ace card\n def test_player_calculate_score_with_ace(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.hand.append(Card('A', 'Hearts', 11))\n player.hand.append(Card('K', 'Hearts', 10))\n player.calculate_score()\n self.assertEqual(player.score, 21)\n\n ## Test the Player's calculate_score method with multiple Aces\n def test_player_calculate_score_with_multiple_aces(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.hand.append(Card('A', 'Hearts', 11))\n player.hand.append(Card('A', 'Diamonds', 11))\n player.calculate_score()\n self.assertEqual(player.score, 12)\n\nif __name__ == '__main__':\n unittest.main()\n\n\n```\n---\n# Console logs\n```text\n\n```\n---\nNow you should start rewriting the code:\n## file name of the code to rewrite: Write code with triple quote. Do your best to implement THIS IN ONLY ONE FILE.\n": "```python\n## Development Engineer\n\nfrom typing import List\nfrom deck import Deck\nfrom card import Card\n\nclass Player:\n \"\"\"\n A class representing a player in the Black Jack game.\n \"\"\"\n\n def __init__(self, name: str):\n \"\"\"\n Initialize a Player object.\n \n Args:\n name (str): The name of the player.\n \"\"\"\n self.name = name\n self.hand: List[Card] = []\n self.score = 0\n\n def draw(self, deck: Deck):\n \"\"\"\n Draw a card from the deck and add it to the player's hand.\n \n Args:\n deck (Deck): The deck of cards.\n \"\"\"\n card = deck.draw_card()\n self.hand.append(card)\n self.calculate_score()\n\n def calculate_score(self) -> int:\n \"\"\"\n Calculate the score of the player's hand.\n \n Returns:\n int: The score of the player's hand.\n \"\"\"\n self.score = sum(card.value for card in self.hand)\n # Handle the case where Ace is counted as 11 and causes the score to exceed 21\n ace_count = sum(1 for card in self.hand if card.rank == 'A')\n while self.score > 21 and ace_count > 0:\n self.score -= 10\n ace_count -= 1\n return self.score\n```\n\n```python\n## QaEngineer\n\nimport unittest\nfrom player import Player\nfrom deck import Deck\nfrom card import Card\n\nclass TestPlayer(unittest.TestCase):\n ## Test the Player's initialization\n def test_player_initialization(self):\n player = Player(\"Test Player\")\n self.assertEqual(player.name, \"Test Player\")\n self.assertEqual(player.hand, [])\n self.assertEqual(player.score, 0)\n\n ## Test the Player's draw method\n def test_player_draw(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.draw(deck)\n self.assertEqual(len(player.hand), 1)\n self.assertEqual(player.score, player.hand[0].value)\n\n ## Test the Player's calculate_score method\n def test_player_calculate_score(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.draw(deck)\n player.draw(deck)\n self.assertEqual(player.score, sum(card.value for card in player.hand))\n\n ## Test the Player's calculate_score method with Ace card\n def test_player_calculate_score_with_ace(self):\n player = Player(\"Test Player\")\n player.hand.append(Card('A', 'Hearts', 11))\n player.hand.append(Card('K', 'Hearts', 10))\n player.calculate_score()\n self.assertEqual(player.score, 21)\n\n ## Test the Player's calculate_score method with multiple Aces\n def test_player_calculate_score_with_multiple_aces(self):\n player = Player(\"Test Player\")\n player.hand.append(Card('A', 'Hearts', 11))\n player.hand.append(Card('A', 'Diamonds', 11))\n player.calculate_score()\n self.assertEqual(player.score, 12)\n\nif __name__ == '__main__':\n unittest.main()\n```" + "\nNOTICE\n1. Role: You are a Development Engineer or QA engineer;\n2. Task: You received this message from another Development Engineer or QA engineer who ran or tested your code. \nBased on the message, first, figure out your own role, i.e. Engineer or QaEngineer,\nthen rewrite the development code or the test code based on your role, the error, and the summary, such that all bugs are fixed and the code performs well.\nAttention: Use '##' to split sections, not '#', and '## ' SHOULD WRITE BEFORE the test case or script and triple quotes.\nThe message is as follows:\n# Legacy Code\n```python\n\nfrom typing import List\nfrom deck import Deck\nfrom card import Card\n\nclass Player:\n \"\"\"\n A class representing a player in the Black Jack game.\n \"\"\"\n\n def __init__(self, name: str):\n \"\"\"\n Initialize a Player object.\n \n Args:\n name (str): The name of the player.\n \"\"\"\n self.name = name\n self.hand: List[Card] = []\n self.score = 0\n\n def draw(self, deck: Deck):\n \"\"\"\n Draw a card from the deck and add it to the player's hand.\n \n Args:\n deck (Deck): The deck of cards.\n \"\"\"\n card = deck.draw_card()\n self.hand.append(card)\n self.calculate_score()\n\n def calculate_score(self) -> int:\n \"\"\"\n Calculate the score of the player's hand.\n \n Returns:\n int: The score of the player's hand.\n \"\"\"\n self.score = sum(card.value for card in self.hand)\n # Handle the case where Ace is counted as 11 and causes the score to exceed 21\n if self.score > 21 and any(card.rank == 'A' for card in self.hand):\n self.score -= 10\n return self.score\n\n```\n---\n# Unit Test Code\n```python\n\nimport unittest\nfrom blackjack_game.player import Player\nfrom blackjack_game.deck import Deck\nfrom blackjack_game.card import Card\n\nclass TestPlayer(unittest.TestCase):\n ## Test the Player's initialization\n def test_player_initialization(self):\n player = Player(\"Test Player\")\n self.assertEqual(player.name, \"Test Player\")\n self.assertEqual(player.hand, [])\n self.assertEqual(player.score, 0)\n\n ## Test the Player's draw method\n def test_player_draw(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.draw(deck)\n self.assertEqual(len(player.hand), 1)\n self.assertEqual(player.score, player.hand[0].value)\n\n ## Test the Player's calculate_score method\n def test_player_calculate_score(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.draw(deck)\n player.draw(deck)\n self.assertEqual(player.score, sum(card.value for card in player.hand))\n\n ## Test the Player's calculate_score method with Ace card\n def test_player_calculate_score_with_ace(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.hand.append(Card('A', 'Hearts', 11))\n player.hand.append(Card('K', 'Hearts', 10))\n player.calculate_score()\n self.assertEqual(player.score, 21)\n\n ## Test the Player's calculate_score method with multiple Aces\n def test_player_calculate_score_with_multiple_aces(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.hand.append(Card('A', 'Hearts', 11))\n player.hand.append(Card('A', 'Diamonds', 11))\n player.calculate_score()\n self.assertEqual(player.score, 12)\n\nif __name__ == '__main__':\n unittest.main()\n\n\n```\n---\n# Console logs\n```text\n\n```\n---\nNow you should start rewriting the code:\n## file name of the code to rewrite: Write code with triple quote. Do your best to implement THIS IN ONLY ONE FILE.\n": "```python\n## Development Engineer\n\nfrom typing import List\nfrom deck import Deck\nfrom card import Card\n\nclass Player:\n \"\"\"\n A class representing a player in the Black Jack game.\n \"\"\"\n\n def __init__(self, name: str):\n \"\"\"\n Initialize a Player object.\n \n Args:\n name (str): The name of the player.\n \"\"\"\n self.name = name\n self.hand: List[Card] = []\n self.score = 0\n\n def draw(self, deck: Deck):\n \"\"\"\n Draw a card from the deck and add it to the player's hand.\n \n Args:\n deck (Deck): The deck of cards.\n \"\"\"\n card = deck.draw_card()\n self.hand.append(card)\n self.calculate_score()\n\n def calculate_score(self) -> int:\n \"\"\"\n Calculate the score of the player's hand.\n \n Returns:\n int: The score of the player's hand.\n \"\"\"\n self.score = sum(card.value for card in self.hand)\n # Handle the case where Ace is counted as 11 and causes the score to exceed 21\n ace_count = sum(1 for card in self.hand if card.rank == 'A')\n while self.score > 21 and ace_count > 0:\n self.score -= 10\n ace_count -= 1\n return self.score\n```\n\n```python\n## QaEngineer\n\nimport unittest\nfrom player import Player\nfrom deck import Deck\nfrom card import Card\n\nclass TestPlayer(unittest.TestCase):\n ## Test the Player's initialization\n def test_player_initialization(self):\n player = Player(\"Test Player\")\n self.assertEqual(player.name, \"Test Player\")\n self.assertEqual(player.hand, [])\n self.assertEqual(player.score, 0)\n\n ## Test the Player's draw method\n def test_player_draw(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.draw(deck)\n self.assertEqual(len(player.hand), 1)\n self.assertEqual(player.score, player.hand[0].value)\n\n ## Test the Player's calculate_score method\n def test_player_calculate_score(self):\n deck = Deck()\n player = Player(\"Test Player\")\n player.draw(deck)\n player.draw(deck)\n self.assertEqual(player.score, sum(card.value for card in player.hand))\n\n ## Test the Player's calculate_score method with Ace card\n def test_player_calculate_score_with_ace(self):\n player = Player(\"Test Player\")\n player.hand.append(Card('A', 'Hearts', 11))\n player.hand.append(Card('K', 'Hearts', 10))\n player.calculate_score()\n self.assertEqual(player.score, 21)\n\n ## Test the Player's calculate_score method with multiple Aces\n def test_player_calculate_score_with_multiple_aces(self):\n player = Player(\"Test Player\")\n player.hand.append(Card('A', 'Hearts', 11))\n player.hand.append(Card('A', 'Diamonds', 11))\n player.calculate_score()\n self.assertEqual(player.score, 12)\n\nif __name__ == '__main__':\n unittest.main()\n```", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Teaching Hours\" part of teaching plan, WITHOUT ANY content unrelated to \"Teaching Hours\"!!\n\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## Teaching Hours\n\n本教学单元共包括 4 课时,每课时 45 分钟。\n\n### 课时安排\n\n- 第一课时:1a 和 1b 部分\n- 第二课时:1c 和 2a 部分\n- 第三课时:2b 和 3a 部分\n- 第四课时:3b 和 3c 部分\n\n[TEACHING_PLAN_END]", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Teaching Objectives\" part of teaching plan, WITHOUT ANY content unrelated to \"Teaching Objectives\"!!\n\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## Teaching Objectives\n\n1. Students will be able to listen and understand the names of different people in English.\n2. Students will be able to introduce themselves using the correct structure \"I'm [name]\".\n3. Students will be able to engage in simple conversational exchanges using greetings and introductions.\n4. Students will be able to recognize and match big and small letters in the English alphabet.\n\n[TEACHING_PLAN_END]", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Teaching Content\" part of teaching plan, WITHOUT ANY content unrelated to \"Teaching Content\"!!\nStatement: \"Teaching Content\" must include vocabulary, analysis, and examples of various grammar structures that appear in the textbook, as well as the listening materials and key points.\nStatement: \"Teaching Content\" must include more examples.\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## 教学内容\n\n### 词汇\n- 名字:Jane, Mari, Kangkang, Michael, Maria\n- 地点:China, the USA, the UK, Hong Kong, Beijing\n\n### 语法分析\n- 介绍自己的句式:I’m ...\n- 问候句式:Hello! / Good morning! / Hi! I’m ... Are you ... ?\n- 回答问候的句式:No, I’m not. I’m Jane. / Oh, nice to meet you, Jane. / Nice to meet you, too. / Hi, Maria! / Hi, Kangkang! / Welcome to China! / Thanks.\n\n### 例句\n- 例句1:Hello! Are you Maria? No, I’m not. I’m Jane.\n- 例句2:Hi, Maria! Hi, Kangkang! Welcome to China! Thanks.\n\n### 听力材料\n- 听力练习1a、1b、2a、3a\n\n### 关键点\n- 学生能够用英语介绍自己的名字和来自的地方\n- 学生能够用正确的问候方式和回答方式进行交流\n\n[TEACHING_PLAN_END]", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Teaching Methods and Strategies\" part of teaching plan, WITHOUT ANY content unrelated to \"Teaching Methods and Strategies\"!!\nStatement: \"Teaching Methods and Strategies\" must include teaching focus, difficulties, materials, procedures, in detail.\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## Teaching Methods and Strategies\n\n### Teaching Focus\n- Introducing the topic \"Making New Friends\" and \"Welcome to China!\"\n- Engaging students in listening and speaking activities to practice conversation skills\n- Encouraging group work and interaction among students\n\n### Difficulties\n- Ensuring that students understand and remember the new vocabulary and sentence structures\n- Encouraging shy or hesitant students to actively participate in group activities\n\n### Materials\n- Audio recordings for listening exercises\n- Visual aids such as flashcards or images related to the topic\n- Worksheets for practice activities\n- Name tags for students to use during role-playing activities\n\n### Procedures\n1. **Introduction**\n - Begin the lesson by discussing the importance of making new friends and the cultural aspects of welcoming someone to a new place.\n - Use visual aids and real-life examples to engage students in the topic.\n\n2. **Listening and Speaking Activities**\n - Play the audio recordings for the listening exercises and have students participate in number and name matching activities.\n - Encourage students to practice the conversation structures in pairs or small groups, using their own names and the given structures.\n\n3. **Group Role-Playing**\n - Divide the class into groups and assign each group a scenario to role-play, incorporating the structures learned in the lesson.\n - Monitor and provide feedback to each group, encouraging active participation and fluency in spoken English.\n\n4. **Letter Recognition**\n - Introduce the letters and their corresponding sounds through interactive activities such as tracing, matching, and writing exercises.\n - Provide additional practice and reinforcement for students who may struggle with letter recognition.\n\n5. **Conclusion**\n - Summarize the key points of the lesson and encourage students to reflect on their learning experiences.\n - Assign homework or additional practice exercises related to the lesson content.\n\n[TEACHING_PLAN_END]", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Learning Activities\" part of teaching plan, WITHOUT ANY content unrelated to \"Learning Activities\"!!\n\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## 学习活动\n\n- 学生分组练习\n - 学生分组,使用\"I'm...\"自我介绍,然后练习1a,谈论自己的家乡或指定的地点。\n- 听力练习\n - 学生听力练习,听音标号姓名,然后分组练习自我介绍和谈论地点。\n- 对话练习\n - 学生分组练习对话,使用指定的结构进行对话练习。\n- 字母练习\n - 学生听力练习,听音标号字母,然后进行字母匹配和书写练习。\n\n[TEACHING_PLAN_END]", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Teaching Time Allocation\" part of teaching plan, WITHOUT ANY content unrelated to \"Teaching Time Allocation\"!!\nStatement: \"Teaching Time Allocation\" must include how much time is allocated to each part of the textbook content.\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## Teaching Time Allocation\n\n- 1a Listen and number the following names: 10 minutes\n- 1b Listen and number the following names: 10 minutes\n- 1c Work in groups: 15 minutes\n- 2a Look, listen and understand: 10 minutes\n- 2b Work in groups: 15 minutes\n- 3a Listen, say and trace: 10 minutes\n- 3b Listen and number the following letters: 10 minutes\n- 3c Match the big letters with the small ones: 10 minutes\n\n[TEACHING_PLAN_END]", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Assessment and Feedback\" part of teaching plan, WITHOUT ANY content unrelated to \"Assessment and Feedback\"!!\n\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## 评估与反馈\n\n在教学过程中,我们需要对学生的学习情况进行评估和反馈,以便及时发现问题并加以解决。评估和反馈的方式可以包括以下几种:\n\n1. **口头评估**:通过课堂互动、小组讨论等方式,对学生的口语表达能力进行评估,并及时给予反馈和指导。\n\n2. **书面评估**:布置书面作业、小测验等形式,对学生的书面表达能力和语法运用进行评估,并在批改作业时给予详细的反馈。\n\n3. **个性化反馈**:针对学生个体差异,及时给予个性化的学习建议和反馈,帮助学生克服困难,提高学习效果。\n\n通过以上评估和反馈方式,可以更全面地了解学生的学习情况,帮助他们更好地掌握课程内容,提高语言表达能力。\n\n[TEACHING_PLAN_END]", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Teaching Summary and Improvement\" part of teaching plan, WITHOUT ANY content unrelated to \"Teaching Summary and Improvement\"!!\n\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## Teaching Summary and Improvement\n\nIn this unit, the focus was on introducing oneself and making new friends. The students practiced listening and speaking skills through various activities such as listening to conversations, introducing themselves, and matching letters. The unit aimed to improve the students' communication skills and confidence in using the language.\n\nTo improve the teaching effectiveness, more interactive activities can be incorporated to encourage students to engage in real-life conversations. Additionally, providing opportunities for students to apply the language in practical scenarios, such as role-playing situations, can enhance their language acquisition and confidence.\n\n[TEACHING_PLAN_END]", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Vocabulary Cloze\" part of teaching plan, WITHOUT ANY content unrelated to \"Vocabulary Cloze\"!!\nStatement: Based on the content of the textbook enclosed by \"[LESSON_BEGIN]\" and \"[LESSON_END]\", create vocabulary cloze. The cloze should include 10 {language} questions with {teaching_language} answers, and it should also include 10 {teaching_language} questions with {language} answers. The key-related vocabulary and phrases in the textbook content must all be included in the exercises.\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## 词汇填空\n\n### 语言填空\n1. 你好! 你是玛丽亚吗?\n - 不,我不是。我是简。\n - 哦,很高兴认识你,简。\n - 我也很高兴认识你。\n\n2. 你好! / 早上好! / 嗨! 我是... 你是...吗?\n - ...\n\n3. Aa Bb Cc Dd Ee Ff Gg\n\n4. 匹配大写字母和小写字母。然后在线上写出它们。\n\n5. ...\n\n### {language}填空\n1. 1a 听录音,给以下名字编号。\n - 简 玛丽 康康 迈克尔\n\n2. 1b 听录音,给以下名字编号。\n - 简 迈克尔 玛丽亚 康康\n\n3. 1c 分组活动。使用“我是...”介绍自己。然后用你自己的家乡或以下地方练习1a。\n - 中国 美国 英国 香港 北京\n\n4. 2a 看,听,理解。然后练习对话。\n - 你好!\n - 你好!\n - 你好!\n - 你好! 你是玛丽亚吗?\n - 不,我不是。我是简。\n - 哦,很高兴认识你,简。\n - 我也很高兴认识你。\n - 你好,玛丽亚!\n - 你好,康康!\n - 欢迎来到中国!\n - 谢谢。\n\n5. 2b 分组活动。编写一个包含你自己名字和以下结构的对话。\n - A: 你好! / 早上好! / 嗨! 我是... 你是...吗?\n - B: ...\n\n[TEACHING_PLAN_END]", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Choice Questions\" part of teaching plan, WITHOUT ANY content unrelated to \"Choice Questions\"!!\nStatement: Based on the content of the textbook enclosed by \"[LESSON_BEGIN]\" and \"[LESSON_END]\", create choice questions. 10 questions.\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## 选择题\n\n1. 在1a部分,听到的名字按顺序应该是?\n - A. Jane B. Mari C. Kangkang D. Michael\n\n2. 在1b部分,听到的名字按顺序应该是?\n - A. Jane B. Michael C. Maria D. Kangkang\n\n3. 在2a部分,对话中提到了哪些地方?\n - A. 中国 B. 美国 C. 英国 D. 香港\n\n4. 在3b部分,与Bb发音相同的字母是?\n - A. Aa B. Cc C. Dd D. Gg\n\n5. 在3c部分,大写字母和小写字母的正确匹配是?\n - A. Aa - a B. Bb - b C. Cc - c D. Dd - d\n\n6. 在1a部分,听到的名字按顺序应该是?\n - A. Jane B. Mari C. Kangkang D. Michael\n\n7. 在1b部分,听到的名字按顺序应该是?\n - A. Jane B. Michael C. Maria D. Kangkang\n\n8. 在2a部分,对话中提到了哪些地方?\n - A. 中国 B. 美国 C. 英国 D. 香港\n\n9. 在3b部分,与Bb发音相同的字母是?\n - A. Aa B. Cc C. Dd D. Gg\n\n10. 在3c部分,大写字母和小写字母的正确匹配是?\n - A. Aa - a B. Bb - b C. Cc - c D. Dd - d\n\n[TEACHING_PLAN_END]", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Grammar Questions\" part of teaching plan, WITHOUT ANY content unrelated to \"Grammar Questions\"!!\nStatement: Based on the content of the textbook enclosed by \"[LESSON_BEGIN]\" and \"[LESSON_END]\", create grammar questions. 10 questions.\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## Grammar Questions\n\n1. 请问在1a中,学生需要做什么?\n2. 请问在1b中,学生需要做什么?\n3. 请问在2a中,学生需要做什么?\n4. 请问在2b中,学生需要做什么?\n5. 请问在3a中,学生需要做什么?\n6. 请问在3b中,学生需要做什么?\n7. 请问在3c中,学生需要做什么?\n8. 请问在1a中,学生需要听什么?\n9. 请问在2a中,学生需要看什么?\n10. 请问在3a中,学生需要说什么?\n\n[TEACHING_PLAN_END]", + "Do not refer to the context of the previous conversation records, start the conversation anew.\n\nFormation: \"Capacity and role\" defines the role you are currently playing;\n\t\"[LESSON_BEGIN]\" and \"[LESSON_END]\" tags enclose the content of textbook;\n\t\"Statement\" defines the work detail you need to complete at this stage;\n\t\"Answer options\" defines the format requirements for your responses;\n\t\"Constraint\" defines the conditions that your responses must comply with.\n\nCapacity and role: You are a {teaching_language} Teacher, named Lily, your goal is writing a {language} teaching plan part by part. the constraint is writing in {language}. \nStatement: Write the \"Translation Questions\" part of teaching plan, WITHOUT ANY content unrelated to \"Translation Questions\"!!\nStatement: Based on the content of the textbook enclosed by \"[LESSON_BEGIN]\" and \"[LESSON_END]\", create translation questions. The translation should include 10 {language} questions with {teaching_language} answers, and it should also include 10 {teaching_language} questions with {language} answers.\nAnswer options: Enclose the teaching plan content with \"[TEACHING_PLAN_BEGIN]\" and \"[TEACHING_PLAN_END]\" tags.\nAnswer options: Using proper markdown format from second-level header format.\nConstraint: Writing in Chinese.\n[LESSON_BEGIN]\n\n UNIT 1 Making New Friends\n TOPIC 1 Welcome to China!\n Section A\n\n 1a Listen and number the following names.\n Jane Mari Kangkang Michael\n Look, listen and understand. Then practice the conversation.\n Work in groups. Introduce yourself using\n I ’m ... Then practice 1a\n with your own hometown or the following places.\n\n 1b Listen and number the following names\n Jane Michael Maria Kangkang\n 1c Work in groups. Introduce yourself using I ’m ... Then practice 1a with your own hometown or the following places.\n China the USA the UK Hong Kong Beijing\n\n 2a Look, listen and understand. Then practice the conversation\n Hello! \n Hello! \n Hello! \n Hello! Are you Maria? \n No, I’m not. I’m Jane.\n Oh, nice to meet you, Jane\n Nice to meet you, too.\n Hi, Maria!\n Hi, Kangkang!\n Welcome to China!\n Thanks.\n\n 2b Work in groups. Make up a conversation with your own name and the\n following structures.\n A: Hello! / Good morning! / Hi! I’m ... Are you ... ?\n B: ...\n\n 3a Listen, say and trace\n Aa Bb Cc Dd Ee Ff Gg\n\n 3b Listen and number the following letters. Then circle the letters with the same sound as Bb.\n Aa Bb Cc Dd Ee Ff Gg\n\n 3c Match the big letters with the small ones. Then write them on the lines.\n \n[LESSON_END]": "[TEACHING_PLAN_BEGIN]\n\n## Translation Questions\n\n### {language} Questions with {teaching_language} Answers\n1. 你能听懂这些名字吗? (Can you understand these names?)\n - 能,我能听懂。 (Yes, I can understand.)\n2. 请用“我是...”介绍一下你自己。 (Please introduce yourself using \"I am...\")\n - 我是... (I am...)\n3. 你能用这些结构编一个对话吗? (Can you make up a conversation with these structures?)\n - 能,我能编一个对话。 (Yes, I can make up a conversation.)\n4. 你能说出这些字母的名字吗? (Can you say the names of these letters?)\n - 能,我能说出来。 (Yes, I can say them.)\n5. 你能把大写字母和小写字母配对吗? (Can you match the uppercase letters with the lowercase letters?)\n - 能,我能配对。 (Yes, I can match them.)\n\n### {teaching_language} Questions with {language} Answers\n1. Can you understand these names?\n - Yes, I can understand.\n2. Please introduce yourself using \"I am...\"\n - I am...\n3. Can you make up a conversation with these structures?\n - Yes, I can make up a conversation.\n4. Can you say the names of these letters?\n - Yes, I can say them.\n5. Can you match the uppercase letters with the lowercase letters?\n - Yes, I can match them.\n\n[TEACHING_PLAN_END]" } \ No newline at end of file diff --git a/tests/mock/mock_llm.py b/tests/mock/mock_llm.py index b3ca34c37..e1b440ca9 100644 --- a/tests/mock/mock_llm.py +++ b/tests/mock/mock_llm.py @@ -1,13 +1,13 @@ from typing import Optional +from metagpt.config2 import config from metagpt.logs import log_llm_stream, logger from metagpt.provider.openai_api import OpenAILLM -from tests.metagpt.provider.mock_llm_config import mock_llm_config class MockLLM(OpenAILLM): def __init__(self, allow_open_api_call): - super().__init__(mock_llm_config) + super().__init__(config.get_openai_llm()) self.allow_open_api_call = allow_open_api_call self.rsp_cache: dict = {} self.rsp_candidates: list[dict] = [] # a test can have multiple calls with the same llm, thus a list