From fba730390c36343f9bb1dd90a101e6026447a5e0 Mon Sep 17 00:00:00 2001 From: shenchucheng Date: Fri, 5 Jan 2024 16:42:57 +0800 Subject: [PATCH 1/2] fix test_scrape_web_page proxy error --- tests/conftest.py | 9 ++++++--- .../metagpt/tools/test_web_browser_engine_playwright.py | 8 +++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index a15e3e85b..68a2ff596 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -112,7 +112,7 @@ def llm_api(): logger.info("Tearing down the test") -@pytest.fixture(scope="session") +@pytest.fixture def proxy(): pattern = re.compile( rb"(?P[a-zA-Z]+) (?P(\w+://)?(?P[^\s\'\"<>\[\]{}|/:]+)(:(?P\d+))?[^\s\'\"<>\[\]{}|]*) " @@ -136,8 +136,11 @@ def proxy(): remote_writer.write(data) await asyncio.gather(pipe(reader, remote_writer), pipe(remote_reader, writer)) - server = asyncio.get_event_loop().run_until_complete(asyncio.start_server(handle_client, "127.0.0.1", 0)) - return "http://{}:{}".format(*server.sockets[0].getsockname()) + async def proxy_func(): + server = await asyncio.start_server(handle_client, "127.0.0.1", 0) + return server, "http://{}:{}".format(*server.sockets[0].getsockname()) + + return proxy_func() # see https://github.com/Delgan/loguru/issues/59#issuecomment-466591978 diff --git a/tests/metagpt/tools/test_web_browser_engine_playwright.py b/tests/metagpt/tools/test_web_browser_engine_playwright.py index 1e23ebb31..0f2679531 100644 --- a/tests/metagpt/tools/test_web_browser_engine_playwright.py +++ b/tests/metagpt/tools/test_web_browser_engine_playwright.py @@ -13,9 +13,9 @@ from metagpt.utils.parse_html import WebPage @pytest.mark.parametrize( "browser_type, use_proxy, kwagrs, url, urls", [ - ("chromium", {"proxy": True}, {}, "https://deepwisdom.ai", ("https://deepwisdom.ai",)), - ("firefox", {}, {"ignore_https_errors": True}, "https://deepwisdom.ai", ("https://deepwisdom.ai",)), - ("webkit", {}, {"ignore_https_errors": True}, "https://deepwisdom.ai", ("https://deepwisdom.ai",)), + ("chromium", {"proxy": True}, {}, "https://www.deepwisdom.ai", ("https://www.deepwisdom.ai",)), + ("firefox", {}, {"ignore_https_errors": True}, "https://www.deepwisdom.ai", ("https://www.deepwisdom.ai",)), + ("webkit", {}, {"ignore_https_errors": True}, "https://www.deepwisdom.ai", ("https://www.deepwisdom.ai",)), ], ids=["chromium-normal", "firefox-normal", "webkit-normal"], ) @@ -23,6 +23,7 @@ async def test_scrape_web_page(browser_type, use_proxy, kwagrs, url, urls, proxy global_proxy = CONFIG.global_proxy try: if use_proxy: + server, proxy = await proxy CONFIG.global_proxy = proxy browser = web_browser_engine_playwright.PlaywrightWrapper(browser_type=browser_type, **kwagrs) result = await browser.run(url) @@ -35,6 +36,7 @@ async def test_scrape_web_page(browser_type, use_proxy, kwagrs, url, urls, proxy assert len(results) == len(urls) + 1 assert all(("MetaGPT" in i.inner_text) for i in results) if use_proxy: + server.close() assert "Proxy:" in capfd.readouterr().out finally: CONFIG.global_proxy = global_proxy From 9ce0182fab54dcfc562925e8defe25f466d2a6e4 Mon Sep 17 00:00:00 2001 From: shenchucheng Date: Fri, 5 Jan 2024 16:50:03 +0800 Subject: [PATCH 2/2] Log newline character after receiving llm stream response --- metagpt/provider/google_gemini_api.py | 1 + metagpt/provider/ollama_api.py | 1 + metagpt/provider/openai_api.py | 1 + metagpt/provider/zhipuai_api.py | 1 + 4 files changed, 4 insertions(+) diff --git a/metagpt/provider/google_gemini_api.py b/metagpt/provider/google_gemini_api.py index 795687773..c36c677ef 100644 --- a/metagpt/provider/google_gemini_api.py +++ b/metagpt/provider/google_gemini_api.py @@ -120,6 +120,7 @@ class GeminiLLM(BaseLLM): content = chunk.text log_llm_stream(content) collected_content.append(content) + log_llm_stream("\n") full_content = "".join(collected_content) usage = await self.aget_usage(messages, full_content) diff --git a/metagpt/provider/ollama_api.py b/metagpt/provider/ollama_api.py index 8ee04de7d..25086737f 100644 --- a/metagpt/provider/ollama_api.py +++ b/metagpt/provider/ollama_api.py @@ -119,6 +119,7 @@ class OllamaLLM(BaseLLM): else: # stream finished usage = self.get_usage(chunk) + log_llm_stream("\n") self._update_costs(usage) full_content = "".join(collected_content) diff --git a/metagpt/provider/openai_api.py b/metagpt/provider/openai_api.py index 20dde9ea5..747e36480 100644 --- a/metagpt/provider/openai_api.py +++ b/metagpt/provider/openai_api.py @@ -134,6 +134,7 @@ class OpenAILLM(BaseLLM): async for i in resp: log_llm_stream(i) collected_messages.append(i) + log_llm_stream("\n") full_reply_content = "".join(collected_messages) usage = self._calc_usage(messages, full_reply_content) diff --git a/metagpt/provider/zhipuai_api.py b/metagpt/provider/zhipuai_api.py index 865b7fce1..e1ccf0de5 100644 --- a/metagpt/provider/zhipuai_api.py +++ b/metagpt/provider/zhipuai_api.py @@ -118,6 +118,7 @@ class ZhiPuAILLM(BaseLLM): usage = meta.get("usage") else: print(f"zhipuapi else event: {event.data}", end="") + log_llm_stream("\n") self._update_costs(usage) full_content = "".join(collected_content)