diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b95aa67 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +temp_test \ 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