Skip to content

Commit 328b1fd

Browse files
authored
Merge pull request #631 from shenchucheng/feature-huggingface-dev
Feature huggingface dev
2 parents 59586f3 + b766550 commit 328b1fd

10 files changed

Lines changed: 37 additions & 14 deletions

File tree

config/config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,3 +141,4 @@ TIMEOUT: 60 # Timeout for llm invocation
141141
#REDIS_PASSWORD: "YOUR_REDIS_PASSWORD"
142142
#REDIS_DB: "YOUR_REDIS_DB_INDEX, str, 0-based"
143143

144+
# DISABLE_LLM_PROVIDER_CHECK: false

metagpt/actions/research.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,11 @@ class WebBrowseAndSummarize(Action):
180180
llm: BaseGPTAPI = Field(default_factory=LLM)
181181
desc: str = "Explore the web and provide summaries of articles and webpages."
182182
browse_func: Union[Callable[[list[str]], None], None] = None
183-
web_browser_engine: WebBrowserEngine = WebBrowserEngine(
184-
engine=WebBrowserEngineType.CUSTOM if browse_func else None,
185-
run_func=browse_func,
183+
web_browser_engine: WebBrowserEngine = Field(
184+
default_factory=lambda: WebBrowserEngine(
185+
engine=WebBrowserEngineType.CUSTOM if WebBrowseAndSummarize.browse_func else None,
186+
run_func=WebBrowseAndSummarize.browse_func,
187+
)
186188
)
187189

188190
def __init__(self, **kwargs):

metagpt/config.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,9 @@ def _update(self):
138138
self.gemini_api_key = self._get("GEMINI_API_KEY")
139139
self.ollama_api_base = self._get("OLLAMA_API_BASE")
140140
self.ollama_api_model = self._get("OLLAMA_API_MODEL")
141-
# _ = self.get_default_llm_provider_enum()
141+
142+
if not self._get("DISABLE_LLM_PROVIDER_CHECK"):
143+
_ = self.get_default_llm_provider_enum()
142144

143145
# self.openai_base_url = self._get("OPENAI_BASE_URL")
144146
self.openai_proxy = self._get("OPENAI_PROXY") or self.global_proxy

metagpt/llm.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
@File : llm.py
77
"""
88

9+
from typing import Optional
10+
911
from metagpt.config import CONFIG, LLMProviderEnum
1012
from metagpt.provider.base_gpt_api import BaseGPTAPI
1113
from metagpt.provider.human_provider import HumanProvider
@@ -14,6 +16,9 @@
1416
_ = HumanProvider() # Avoid pre-commit error
1517

1618

17-
def LLM(provider: LLMProviderEnum = CONFIG.get_default_llm_provider_enum()) -> BaseGPTAPI:
19+
def LLM(provider: Optional[LLMProviderEnum] = None) -> BaseGPTAPI:
1820
"""get the default llm provider"""
21+
if provider is None:
22+
provider = CONFIG.get_default_llm_provider_enum()
23+
1924
return LLM_REGISTRY.get_provider(provider)

metagpt/logs.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import sys
1010
from datetime import datetime
11+
from functools import partial
1112

1213
from loguru import logger as _logger
1314

@@ -26,3 +27,15 @@ def define_log_level(print_level="INFO", logfile_level="DEBUG"):
2627

2728

2829
logger = define_log_level()
30+
31+
32+
def log_llm_stream(msg):
33+
_llm_stream_log(msg)
34+
35+
36+
def set_llm_stream_logfunc(func):
37+
global _llm_stream_log
38+
_llm_stream_log = func
39+
40+
41+
_llm_stream_log = partial(print, end="")

metagpt/provider/google_gemini_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
)
2121

2222
from metagpt.config import CONFIG, LLMProviderEnum
23-
from metagpt.logs import logger
23+
from metagpt.logs import log_llm_stream, logger
2424
from metagpt.provider.base_gpt_api import BaseGPTAPI
2525
from metagpt.provider.llm_provider_registry import register_provider
2626
from metagpt.provider.openai_api import log_and_reraise
@@ -121,7 +121,7 @@ async def _achat_completion_stream(self, messages: list[dict]) -> str:
121121
collected_content = []
122122
async for chunk in resp:
123123
content = chunk.text
124-
print(content, end="")
124+
log_llm_stream(content)
125125
collected_content.append(content)
126126

127127
full_content = "".join(collected_content)

metagpt/provider/ollama_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
from metagpt.config import CONFIG, LLMProviderEnum
1717
from metagpt.const import LLM_API_TIMEOUT
18-
from metagpt.logs import logger
18+
from metagpt.logs import log_llm_stream, logger
1919
from metagpt.provider.base_gpt_api import BaseGPTAPI
2020
from metagpt.provider.general_api_requestor import GeneralAPIRequestor
2121
from metagpt.provider.llm_provider_registry import register_provider
@@ -131,7 +131,7 @@ async def _achat_completion_stream(self, messages: list[dict]) -> str:
131131
if not chunk.get("done", False):
132132
content = self.get_choice_text(chunk)
133133
collected_content.append(content)
134-
print(content, end="")
134+
log_llm_stream(content)
135135
else:
136136
# stream finished
137137
usage = self.get_usage(chunk)

metagpt/provider/openai_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
from metagpt.config import CONFIG, Config, LLMProviderEnum
3131
from metagpt.const import DEFAULT_MAX_TOKENS, DEFAULT_TOKEN_SIZE
32-
from metagpt.logs import logger
32+
from metagpt.logs import log_llm_stream, logger
3333
from metagpt.provider.base_gpt_api import BaseGPTAPI
3434
from metagpt.provider.constant import GENERAL_FUNCTION_SCHEMA, GENERAL_TOOL_CHOICE
3535
from metagpt.provider.llm_provider_registry import register_provider
@@ -180,7 +180,7 @@ async def acompletion_text(self, messages: list[dict], stream=False, generator:
180180

181181
collected_messages = []
182182
async for i in resp:
183-
print(i, end="")
183+
log_llm_stream(i)
184184
collected_messages.append(i)
185185

186186
full_reply_content = "".join(collected_messages)

metagpt/provider/zhipuai_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
)
1717

1818
from metagpt.config import CONFIG, LLMProviderEnum
19-
from metagpt.logs import logger
19+
from metagpt.logs import log_llm_stream, logger
2020
from metagpt.provider.base_gpt_api import BaseGPTAPI
2121
from metagpt.provider.llm_provider_registry import register_provider
2222
from metagpt.provider.openai_api import log_and_reraise
@@ -96,7 +96,7 @@ async def _achat_completion_stream(self, messages: list[dict], timeout=3) -> str
9696
if event.event == ZhiPuEvent.ADD.value:
9797
content = event.data
9898
collected_content.append(content)
99-
print(content, end="")
99+
log_llm_stream(content)
100100
elif event.event == ZhiPuEvent.ERROR.value or event.event == ZhiPuEvent.INTERRUPTED.value:
101101
content = event.data
102102
logger.error(f"event error: {content}", end="")

metagpt/roles/role.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ class Role(BaseModel):
154154
builtin_class_name: str = ""
155155

156156
_private_attributes = {
157-
"_llm": LLM() if not is_human else HumanProvider(),
157+
"_llm": None,
158158
"_role_id": _role_id,
159159
"_states": [],
160160
"_actions": [],

0 commit comments

Comments
 (0)