From d9ef12635539898757f0cb68b0815061fa687dc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=9F=20=E7=B9=81?= Date: Wed, 24 Jul 2024 21:53:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E4=B8=80?= =?UTF-8?q?=E4=B8=8B=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/__init__.py | 0 src/mindpilot/__init__.py | 0 src/mindpilot/app/api/api_schemas.py | 4 +- src/mindpilot/app/chat/chat.py | 10 +-- src/mindpilot/app/utils/__init__.py | 0 src/mindpilot/app/utils/colorful.py | 61 +++++++++++++++++++ .../app/{utils.py => utils/openai_utils.py} | 0 src/mindpilot/main.py | 9 ++- 8 files changed, 72 insertions(+), 12 deletions(-) create mode 100644 src/__init__.py create mode 100644 src/mindpilot/__init__.py create mode 100644 src/mindpilot/app/utils/__init__.py create mode 100644 src/mindpilot/app/utils/colorful.py rename src/mindpilot/app/{utils.py => utils/openai_utils.py} (100%) diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mindpilot/__init__.py b/src/mindpilot/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mindpilot/app/api/api_schemas.py b/src/mindpilot/app/api/api_schemas.py index 4a0ae41..26de7ba 100644 --- a/src/mindpilot/app/api/api_schemas.py +++ b/src/mindpilot/app/api/api_schemas.py @@ -12,11 +12,13 @@ from openai.types.chat import ( completion_create_params, ) +from ..utils.openai_utils import MsgType + # from chatchat.configs import DEFAULT_LLM_MODEL, TEMPERATURE DEFAULT_LLM_MODEL = None # TODO 配置文件 TEMPERATURE = 0.8 from ..pydantic_v2 import AnyUrl, BaseModel, Field -from ..utils import MsgType + class OpenAIBaseInput(BaseModel): diff --git a/src/mindpilot/app/chat/chat.py b/src/mindpilot/app/chat/chat.py index 16764fc..e2dbfb8 100644 --- a/src/mindpilot/app/chat/chat.py +++ b/src/mindpilot/app/chat/chat.py @@ -16,14 +16,8 @@ from ..callback_handler.agent_callback_handler import ( AgentStatus, ) from ..chat.utils import History -from ..utils import ( - MsgType, - get_ChatOpenAI, - get_prompt_template, - get_tool, - wrap_done, -) -from app.configs import MODEL_CONFIG,TOOL_CONFIG +from ..configs import MODEL_CONFIG, TOOL_CONFIG +from ..utils.openai_utils import get_ChatOpenAI, get_prompt_template, get_tool, wrap_done, MsgType def create_models_from_config(configs, callbacks, stream): diff --git a/src/mindpilot/app/utils/__init__.py b/src/mindpilot/app/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/mindpilot/app/utils/colorful.py b/src/mindpilot/app/utils/colorful.py new file mode 100644 index 0000000..f0414e5 --- /dev/null +++ b/src/mindpilot/app/utils/colorful.py @@ -0,0 +1,61 @@ +import platform +from sys import stdout + +if platform.system()=="Linux": + pass +else: + from colorama import init + init() + +# Do you like the elegance of Chinese characters? +def print红(*kw,**kargs): + print("\033[0;31m",*kw,"\033[0m",**kargs) +def print绿(*kw,**kargs): + print("\033[0;32m",*kw,"\033[0m",**kargs) +def print黄(*kw,**kargs): + print("\033[0;33m",*kw,"\033[0m",**kargs) +def print蓝(*kw,**kargs): + print("\033[0;34m",*kw,"\033[0m",**kargs) +def print紫(*kw,**kargs): + print("\033[0;35m",*kw,"\033[0m",**kargs) +def print靛(*kw,**kargs): + print("\033[0;36m",*kw,"\033[0m",**kargs) + +def print亮红(*kw,**kargs): + print("\033[1;31m",*kw,"\033[0m",**kargs) +def print亮绿(*kw,**kargs): + print("\033[1;32m",*kw,"\033[0m",**kargs) +def print亮黄(*kw,**kargs): + print("\033[1;33m",*kw,"\033[0m",**kargs) +def print亮蓝(*kw,**kargs): + print("\033[1;34m",*kw,"\033[0m",**kargs) +def print亮紫(*kw,**kargs): + print("\033[1;35m",*kw,"\033[0m",**kargs) +def print亮靛(*kw,**kargs): + print("\033[1;36m",*kw,"\033[0m",**kargs) + +# Do you like the elegance of Chinese characters? +def sprint红(*kw): + return "\033[0;31m"+' '.join(kw)+"\033[0m" +def sprint绿(*kw): + return "\033[0;32m"+' '.join(kw)+"\033[0m" +def sprint黄(*kw): + return "\033[0;33m"+' '.join(kw)+"\033[0m" +def sprint蓝(*kw): + return "\033[0;34m"+' '.join(kw)+"\033[0m" +def sprint紫(*kw): + return "\033[0;35m"+' '.join(kw)+"\033[0m" +def sprint靛(*kw): + return "\033[0;36m"+' '.join(kw)+"\033[0m" +def sprint亮红(*kw): + return "\033[1;31m"+' '.join(kw)+"\033[0m" +def sprint亮绿(*kw): + return "\033[1;32m"+' '.join(kw)+"\033[0m" +def sprint亮黄(*kw): + return "\033[1;33m"+' '.join(kw)+"\033[0m" +def sprint亮蓝(*kw): + return "\033[1;34m"+' '.join(kw)+"\033[0m" +def sprint亮紫(*kw): + return "\033[1;35m"+' '.join(kw)+"\033[0m" +def sprint亮靛(*kw): + return "\033[1;36m"+' '.join(kw)+"\033[0m" diff --git a/src/mindpilot/app/utils.py b/src/mindpilot/app/utils/openai_utils.py similarity index 100% rename from src/mindpilot/app/utils.py rename to src/mindpilot/app/utils/openai_utils.py diff --git a/src/mindpilot/main.py b/src/mindpilot/main.py index e5b297c..e99af2f 100644 --- a/src/mindpilot/main.py +++ b/src/mindpilot/main.py @@ -8,7 +8,9 @@ from contextlib import asynccontextmanager from multiprocessing import Process import argparse from fastapi import FastAPI -from app.configs import HOST,PORT +from app.configs import HOST, PORT +from src.mindpilot.app.utils.colorful import print亮蓝 + logger = logging.getLogger() @@ -37,7 +39,7 @@ def run_api_server( ): import uvicorn from app.api.api_server import create_app - from app.utils import set_httpx_config + from src.mindpilot.app.utils.openai_utils import set_httpx_config set_httpx_config() app = create_app(run_mode=run_mode) @@ -115,7 +117,8 @@ def main(): cwd = os.getcwd() sys.path.append(cwd) multiprocessing.freeze_support() - print("cwd:" + cwd) + print亮蓝(f"当前工作目录:{cwd}") + print亮蓝(f"OpenAPI 文档地址:http://{HOST}:{PORT}/docs") if sys.version_info < (3, 10): loop = asyncio.get_event_loop() From 4789c65b1a23a4e893a30a551d368a5e4c86bc18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=9F=20=E7=B9=81?= Date: Wed, 24 Jul 2024 22:29:13 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E4=B8=80?= =?UTF-8?q?=E4=B8=8B=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mindpilot/app/api/openai_routes.py | 2 +- src/mindpilot/app/tools/search_internet.py | 3 ++- src/mindpilot/app/tools/weather_check.py | 3 +-- src/mindpilot/app/tools/wolfram.py | 3 ++- src/mindpilot/app/utils/openai_utils.py | 22 +++++++++++----------- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/mindpilot/app/api/openai_routes.py b/src/mindpilot/app/api/openai_routes.py index 4a7617b..a510e2f 100644 --- a/src/mindpilot/app/api/openai_routes.py +++ b/src/mindpilot/app/api/openai_routes.py @@ -17,7 +17,7 @@ from openai.types.file_object import FileObject from sse_starlette.sse import EventSourceResponse # from chatchat.configs import BASE_TEMP_DIR, log_verbose -from ..utils import get_OpenAIClient + from .api_schemas import * diff --git a/src/mindpilot/app/tools/search_internet.py b/src/mindpilot/app/tools/search_internet.py index f25d0a7..0683ecd 100644 --- a/src/mindpilot/app/tools/search_internet.py +++ b/src/mindpilot/app/tools/search_internet.py @@ -6,12 +6,13 @@ from langchain_community.utilities import BingSearchAPIWrapper from langchain_community.utilities import DuckDuckGoSearchAPIWrapper from markdownify import markdownify from strsimpy.normalized_levenshtein import NormalizedLevenshtein -from app.utils import get_tool_config + from ..pydantic_v1 import Field # from chatchat.server.utils import get_tool_config from .tools_registry import BaseToolOutput, regist_tool +from ..utils.openai_utils import get_tool_config def bing_search(text, config): diff --git a/src/mindpilot/app/tools/weather_check.py b/src/mindpilot/app/tools/weather_check.py index 2fddd66..4f17b2b 100644 --- a/src/mindpilot/app/tools/weather_check.py +++ b/src/mindpilot/app/tools/weather_check.py @@ -6,8 +6,7 @@ import requests from ..pydantic_v1 import Field from .tools_registry import BaseToolOutput, regist_tool - -from app.utils import get_tool_config +from ..utils.openai_utils import get_tool_config @regist_tool(title="天气查询") diff --git a/src/mindpilot/app/tools/wolfram.py b/src/mindpilot/app/tools/wolfram.py index 1627867..3edf5cf 100644 --- a/src/mindpilot/app/tools/wolfram.py +++ b/src/mindpilot/app/tools/wolfram.py @@ -1,8 +1,9 @@ # Langchain 自带的 Wolfram Alpha API 封装 from ..pydantic_v1 import Field -from app.utils import get_tool_config + from .tools_registry import BaseToolOutput, regist_tool +from ..utils.openai_utils import get_tool_config @regist_tool diff --git a/src/mindpilot/app/utils/openai_utils.py b/src/mindpilot/app/utils/openai_utils.py index c8d337f..44c1208 100644 --- a/src/mindpilot/app/utils/openai_utils.py +++ b/src/mindpilot/app/utils/openai_utils.py @@ -148,7 +148,7 @@ def get_prompt_template(type: str, name: str) -> Optional[str]: type: "llm_chat","knowledge_base_chat","search_engine_chat"的其中一种,如果有新功能,应该进行加入。 """ - from .configs.prompt_config import PROMPT_TEMPLATES + from src.mindpilot.app.configs import PROMPT_TEMPLATES return PROMPT_TEMPLATES.get(type, {}).get(name) @@ -156,12 +156,11 @@ def get_prompt_template(type: str, name: str) -> Optional[str]: def get_tool(name: str = None) -> Union[BaseTool, Dict[str, BaseTool]]: import importlib - from app import tools + from src.mindpilot.app import tools importlib.reload(tools) - from app.tools import tools_registry - + from src.mindpilot.app.tools import tools_registry if name is None: return tools_registry._TOOLS_REGISTRY @@ -183,10 +182,11 @@ async def wrap_done(fn: Awaitable, event: asyncio.Event): # Signal the aiter to stop. event.set() + def get_OpenAIClient( - platform_name: str = None, - model_name: str = None, - is_async: bool = True, + platform_name: str = None, + model_name: str = None, + is_async: bool = True, ) -> Union[openai.Client, openai.AsyncClient]: # """ # construct an openai Client for specified platform or model @@ -204,7 +204,7 @@ def get_OpenAIClient( # assert platform_info, f"cannot find configured platform: {platform_name}" # TODO 配置文件 params = { - "base_url":"https://open.bigmodel.cn/api/paas/v4/", + "base_url": "https://open.bigmodel.cn/api/paas/v4/", "api_key": "8424573178d3681bb2e9bfbc5af24dd5.BKKxdk1d6zzgvfnV" } httpx_params = {} @@ -223,11 +223,11 @@ def get_OpenAIClient( params["http_client"] = httpx.Client(**httpx_params) return openai.Client(**params) -def get_tool_config(name: str = None) -> Dict: - from app.configs import TOOL_CONFIG +def get_tool_config(name: str = None) -> Dict: + from src.mindpilot.app.configs import TOOL_CONFIG if name is None: return TOOL_CONFIG else: - return TOOL_CONFIG.get(name, {}) \ No newline at end of file + return TOOL_CONFIG.get(name, {})