From b91d3ebed219dec703736c91a315ccb94fddbe2e Mon Sep 17 00:00:00 2001 From: paulaan Date: Sat, 9 Sep 2023 17:58:02 +0700 Subject: [PATCH 1/2] [feat/stream-config] Enable Stream config to avoid hardcode in base openai_api.py --- config/config.yaml | 2 +- metagpt/config.py | 1 + metagpt/provider/base_gpt_api.py | 6 +++++- metagpt/provider/openai_api.py | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 274cdf469..731d0b4da 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -22,7 +22,7 @@ RPM: 10 #OPENAI_API_KEY: "YOUR_AZURE_API_KEY" #OPENAI_API_VERSION: "YOUR_AZURE_API_VERSION" #DEPLOYMENT_ID: "YOUR_DEPLOYMENT_ID" - +#STREAM: true #### for Search ## Supported values: serpapi/google/serper/ddg diff --git a/metagpt/config.py b/metagpt/config.py index 76c6563cb..24d6a83d6 100644 --- a/metagpt/config.py +++ b/metagpt/config.py @@ -60,6 +60,7 @@ def __init__(self, yaml_file=default_yaml_file): self.openai_api_model = self._get("OPENAI_API_MODEL", "gpt-4") self.max_tokens_rsp = self._get("MAX_TOKENS", 2048) self.deployment_id = self._get("DEPLOYMENT_ID") + self.stream = self._get("STREAM") self.claude_api_key = self._get("Anthropic_API_KEY") self.serpapi_api_key = self._get("SERPAPI_API_KEY") diff --git a/metagpt/provider/base_gpt_api.py b/metagpt/provider/base_gpt_api.py index de61167b9..eccf765d7 100644 --- a/metagpt/provider/base_gpt_api.py +++ b/metagpt/provider/base_gpt_api.py @@ -15,6 +15,7 @@ class BaseGPTAPI(BaseChatbot): """GPT API abstract class, requiring all inheritors to provide a series of standard capabilities""" system_prompt = 'You are a helpful assistant.' + stream = True def _user_msg(self, msg: str) -> dict[str, str]: return {"role": "user", "content": msg} @@ -41,7 +42,7 @@ async def aask(self, msg: str, system_msgs: Optional[list[str]] = None) -> str: message = self._system_msgs(system_msgs) + [self._user_msg(msg)] else: message = [self._default_system_msg(), self._user_msg(msg)] - rsp = await self.acompletion_text(message, stream=True) + rsp = await self.acompletion_text(message, stream=self.stream) logger.debug(message) # logger.debug(rsp) return rsp @@ -49,6 +50,9 @@ async def aask(self, msg: str, system_msgs: Optional[list[str]] = None) -> str: def _extract_assistant_rsp(self, context): return "\n".join([i["content"] for i in context if i["role"] == "assistant"]) + def set_stream(self, stream: bool): + self.stream = stream + def ask_batch(self, msgs: list) -> str: context = [] for msg in msgs: diff --git a/metagpt/provider/openai_api.py b/metagpt/provider/openai_api.py index ff8943d3b..77275cc98 100644 --- a/metagpt/provider/openai_api.py +++ b/metagpt/provider/openai_api.py @@ -146,6 +146,7 @@ def __init__(self): def __init_openai(self, config): openai.api_key = config.openai_api_key + self.set_stream(config.stream) if config.openai_api_base: openai.api_base = config.openai_api_base if config.openai_api_type: From 3e19406d1f4fe6c267d9960007eb076392c11222 Mon Sep 17 00:00:00 2001 From: paulaan Date: Tue, 7 Nov 2023 15:50:08 +0700 Subject: [PATCH 2/2] [feat/stream-config] config STREAM=true as default --- config/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.yaml b/config/config.yaml index 731d0b4da..f396ed85a 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -22,7 +22,7 @@ RPM: 10 #OPENAI_API_KEY: "YOUR_AZURE_API_KEY" #OPENAI_API_VERSION: "YOUR_AZURE_API_VERSION" #DEPLOYMENT_ID: "YOUR_DEPLOYMENT_ID" -#STREAM: true +STREAM: true #### for Search ## Supported values: serpapi/google/serper/ddg