From 5cb2fce58d0222bb7e97c06a804902ac245191a9 Mon Sep 17 00:00:00 2001 From: "minglang.wu" Date: Mon, 25 Dec 2023 14:48:09 +0800 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20token=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E6=96=B9=E5=BC=8F=E5=8F=8AReadme=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.token初始化方式改为env,便于提交代码时隔离token问题,且有助于后续扩展多llm的配置 2.Readme做部署相关对应内容补充 --- .gitignore | 1 + README.md | 17 +++++++++++++++++ codes/__init__.py | 6 +++++- codes/llm/__init__.py | 3 +-- codes/llm/llm_chat.py | 28 ++++++++++++++++++---------- codes/llm/tokens.py | 1 - example.env | 2 ++ requirements.txt | 1 + 8 files changed, 45 insertions(+), 14 deletions(-) create mode 100644 .gitignore delete mode 100644 codes/llm/tokens.py create mode 100644 example.env diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2eea525 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.env \ No newline at end of file diff --git a/README.md b/README.md index 9a0a45c..7d1188f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,23 @@ # ModulelyTools 一个基于LLM的函数模块化&说明文档生成小工具,开发中~ +## 环境部署 +#### python版本 +``` +python >= 3.7 +``` +#### 安装依赖 +``` +pip install -r requirements.txt +``` +#### 配置LLM相关参数(token) +``` +# 1.复制example.env并命名为.env文件到项目根目录 +$ cp example.env .env + +# 2.修改.env文件中的token +``` + ## 关于这个工具 这是一个基于LLM的函数模块化小工具,设计功能是 1. 给定一个.pynb文档,一键生成.py文件,.py文件具有较好的封装性。 diff --git a/codes/__init__.py b/codes/__init__.py index 782dfd4..20dea12 100644 --- a/codes/__init__.py +++ b/codes/__init__.py @@ -1,3 +1,7 @@ +from dotenv import load_dotenv + +load_dotenv('../.env') + from . import llm from . import extraction -from . import static_str \ No newline at end of file +from . import static_str diff --git a/codes/llm/__init__.py b/codes/llm/__init__.py index 8e2958b..bfe4162 100644 --- a/codes/llm/__init__.py +++ b/codes/llm/__init__.py @@ -1,2 +1 @@ -from . import llm_chat -from . import tokens \ No newline at end of file +from . import llm_chat \ No newline at end of file diff --git a/codes/llm/llm_chat.py b/codes/llm/llm_chat.py index b1cf61d..55561b5 100644 --- a/codes/llm/llm_chat.py +++ b/codes/llm/llm_chat.py @@ -1,43 +1,51 @@ +import os + import erniebot import json -# 一个自定义文件用来存放token,请自行到自己账号主页复制自己的token替换erniebot -from .tokens import erniebot_access_token +if os.getenv('erniebot_access_token'): + erniebot.access_token = os.getenv('erniebot_access_token') +else: + raise Exception("erniebot_access_token未配置:\n" + "请移步百度文心一言!https://aistudio.baidu.com/index/accessToken\n" + "将token替换到.env的erniebot_access_token中") + def get_llm_answer_with_msg(msg): erniebot.api_type = 'aistudio' - erniebot.access_token = erniebot_access_token response = erniebot.ChatCompletion.create( model='ernie-bot', messages=msg, top_p=0, - temperature = 0.1, + temperature=0.1, ) result = response.get_result() return result + def get_llm_answer(prompt): erniebot.api_type = 'aistudio' - erniebot.access_token = erniebot_access_token response = erniebot.ChatCompletion.create( model='ernie-bot', messages=[{'role': 'user', 'content': prompt}], top_p=0, - temperature = 0.1, + temperature=0.1, ) result = response.get_result() return result + def extract_json_from_llm_answer(result, start_str="```json", end_str="```", replace_list=["\n"]): s_id = result.index(start_str) - e_id = result.index(end_str, s_id+len(start_str)) - json_str = result[s_id+len(start_str):e_id] + e_id = result.index(end_str, s_id + len(start_str)) + json_str = result[s_id + len(start_str):e_id] for replace_str in replace_list: - json_str = json_str.replace(replace_str,"") + json_str = json_str.replace(replace_str, "") json_dict = json.loads(json_str) return json_dict + def get_llm_json_answer(prompt): result = get_llm_answer(prompt) json_dict = extract_json_from_llm_answer(result) - return json_dict \ No newline at end of file + return json_dict diff --git a/codes/llm/tokens.py b/codes/llm/tokens.py deleted file mode 100644 index 6d410ce..0000000 --- a/codes/llm/tokens.py +++ /dev/null @@ -1 +0,0 @@ -erniebot_access_token = '************************************' \ No newline at end of file diff --git a/example.env b/example.env new file mode 100644 index 0000000..bc4a384 --- /dev/null +++ b/example.env @@ -0,0 +1,2 @@ +# 移步百度文心一言!https://aistudio.baidu.com/index/accessToken获取 +erniebot_access_token=97e93cfcddb26a250293fe68e83b57262c27369a \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index d173106..df5303d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ nbformat erniebot +python-dotenv \ No newline at end of file From b07d032e54fd731263a81371d5c7e0ae5f9223b4 Mon Sep 17 00:00:00 2001 From: "minglang.wu" Date: Tue, 26 Dec 2023 10:54:43 +0800 Subject: [PATCH 2/4] test before --- temp_test | 1 + 1 file changed, 1 insertion(+) create mode 100644 temp_test diff --git a/temp_test b/temp_test new file mode 100644 index 0000000..d84cffb --- /dev/null +++ b/temp_test @@ -0,0 +1 @@ +test before \ No newline at end of file From bb2d5854d0c89c062c14a117c922493e41f9fc7d Mon Sep 17 00:00:00 2001 From: "minglang.wu" Date: Tue, 26 Dec 2023 10:55:47 +0800 Subject: [PATCH 3/4] ignore temp_test --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2eea525..b95aa67 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.env \ No newline at end of file +.env +temp_test \ No newline at end of file From 112c56bce25e5a46deef37e00f3b9a329f4d1261 Mon Sep 17 00:00:00 2001 From: "minglang.wu" Date: Tue, 26 Dec 2023 11:02:02 +0800 Subject: [PATCH 4/4] ignore temp_test after --- temp_test | 1 - 1 file changed, 1 deletion(-) delete mode 100644 temp_test diff --git a/temp_test b/temp_test deleted file mode 100644 index d84cffb..0000000 --- a/temp_test +++ /dev/null @@ -1 +0,0 @@ -test before \ No newline at end of file