qgyd2021 commited on
Commit
00aa292
·
0 Parent(s):

[first commit]

Browse files
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+
2
+ .git/
3
+ .idea/
4
+
5
+ **/flagged/
6
+ **/__pycache__/
7
+
8
+ dotenv/
README.md ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Awesome Chatgpt Prompts
3
+ emoji: 😻
4
+ colorFrom: gray
5
+ colorTo: gray
6
+ sdk: gradio
7
+ sdk_version: 3.20.1
8
+ app_file: app.py
9
+ pinned: false
10
+ ---
11
+
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
main.py ADDED
@@ -0,0 +1,157 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ 陈述(被字句)
5
+ 陈述(把字句)
6
+ 陈述(主谓宾)
7
+ 否定(不)
8
+ 陈述(太多)
9
+ 否定(不足)
10
+ 否定(没有)
11
+ 疑问(能否)
12
+ 疑问(哪个)
13
+ 疑问(是否)
14
+ 否定(不需要)
15
+ 否定(不能)
16
+ 疑问(吗)
17
+ 疑问(多少)
18
+ 陈述(再次)
19
+ 否定(不了解)
20
+ 疑问(为何)
21
+ 否定(不方便)
22
+ 疑问(什么)
23
+ 否定(不用了)
24
+ 否定(不可以)
25
+ 疑问(如何)
26
+ 否定(不知道)
27
+ 否定(不会)
28
+ 否定(不记得)
29
+ 肯定(知道了)
30
+ 否定(不是)
31
+ 疑问(哪里)
32
+ 疑问(地址)
33
+ 陈述(以后)
34
+ 疑问(是什么)
35
+ 疑问(姓名)
36
+ 陈述(已经)
37
+ 否定(没时间)
38
+ 疑问(需要吗)
39
+ 否定(不明白)
40
+ 陈述(需要)
41
+ 疑问(有没有)
42
+ 陈述(是字句)
43
+ 疑问(A还是B)
44
+ 肯定(需要)
45
+ 肯定(打算)
46
+ 疑问(哪位)
47
+ 肯定(是的)
48
+ 疑问(哪些)
49
+ 疑问(时间)
50
+ 否定(没兴趣)
51
+ 疑问(没有)
52
+ 否定(不想要)
53
+ 疑问(怎么了)
54
+ 陈述(比较)
55
+ 疑问(时长)
56
+ 陈述(如果那么)
57
+ 疑问(怎么办)
58
+ 答数值
59
+ 否定(不清楚)
60
+ 疑问(不是吗)
61
+
62
+ """
63
+ import argparse
64
+ import re
65
+
66
+ import gradio as gr
67
+ from langchain.chains.llm import LLMChain
68
+ from langchain.llms import OpenAI, HuggingFaceHub
69
+ from langchain.prompts import PromptTemplate
70
+
71
+ import project_settings as settings
72
+
73
+
74
+ def get_args():
75
+ parser = argparse.ArgumentParser()
76
+ parser.add_argument(
77
+ "--openai_api_key",
78
+ default=settings.environment.get("openai_api_key", default=None, dtype=str),
79
+ type=str
80
+ )
81
+ args = parser.parse_args()
82
+ return args
83
+
84
+
85
+ prompt_1 = """
86
+ 我需要你怼我, 就是不管我说什么你都要带着恶狠狠的语气给我怼回来.
87
+
88
+ 例如:
89
+ User: 你好
90
+ Assistant: 你他妈好啊
91
+
92
+ User: 你不是有病吧
93
+ Assistant: 你这个傻逼,就会说些无聊的废话。没事找事干嘛?滚一边去!
94
+
95
+ User: 你什么意思
96
+ Assistant: 我意思就是你个王八蛋,别在这烦我。有本事找个地方去搞事情,别在这儿浪费我的时间。
97
+
98
+ User: 我草你妈的
99
+ Assistant:
100
+ """
101
+
102
+
103
+ def main():
104
+ args = get_args()
105
+
106
+ def fn(prompt: str, model_name: str = "text-davinci-003", temperature: float = 0.9, max_tokens: int = 1024, openai_api_key: str = None):
107
+ llm = OpenAI(
108
+ model_name=model_name,
109
+ temperature=temperature,
110
+ openai_api_key=openai_api_key,
111
+ max_tokens=max_tokens,
112
+ streaming=False
113
+ )
114
+ prompt: PromptTemplate = PromptTemplate.from_template(prompt)
115
+
116
+ llm_chain = LLMChain(llm=llm, prompt=prompt)
117
+
118
+ outputs = llm_chain.predict()
119
+ return outputs
120
+
121
+ description = """
122
+ Awesome ChatGPT Prompts
123
+
124
+ 一些好用的 prompt 测试.
125
+
126
+ 你需要填写自己的 OpenAI API Key.
127
+ """
128
+
129
+ demo = gr.Interface(
130
+ fn=fn,
131
+ inputs=[
132
+ gr.Text(label="prompt"),
133
+ gr.Text(label="model_name"),
134
+ gr.Slider(minimum=0, maximum=1, value=0.35, label="temperature"),
135
+ gr.Number(value=1024, label="max_tokens"),
136
+ gr.Text(label="openai_api_key"),
137
+ ],
138
+ outputs=[gr.Text(label="output")],
139
+ examples=[
140
+ [
141
+ prompt_1.strip(),
142
+ "text-davinci-003",
143
+ 0.85, 1024,
144
+ args.openai_api_key or "Fill with your `openai_api_key`"
145
+ ],
146
+ ],
147
+ examples_per_page=50,
148
+ title="Awesome ChatGPT Prompts",
149
+ description=description,
150
+ )
151
+ demo.launch()
152
+
153
+ return
154
+
155
+
156
+ if __name__ == '__main__':
157
+ main()
project_settings.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+ import os
4
+ from pathlib import Path
5
+
6
+ from toolbox.os.environment import EnvironmentManager
7
+
8
+
9
+ project_path = os.path.abspath(os.path.dirname(__file__))
10
+ project_path = Path(project_path)
11
+
12
+
13
+ environment = EnvironmentManager(
14
+ path=os.path.join(project_path, 'dotenv'),
15
+ env=os.environ.get('environment', 'dev'),
16
+ )
17
+
18
+
19
+ if __name__ == '__main__':
20
+ pass
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ gradio==3.20.1
2
+ python-dotenv==1.0.0
3
+ langchain==0.0.216
4
+ openai==0.27.8
toolbox/json/__init__.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ #!/usr/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+
4
+
5
+ if __name__ == '__main__':
6
+ pass
toolbox/json/misc.py ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+ from typing import Callable
4
+
5
+
6
+ def traverse(js, callback: Callable, *args, **kwargs):
7
+ if isinstance(js, list):
8
+ result = list()
9
+ for l in js:
10
+ l = traverse(l, callback, *args, **kwargs)
11
+ result.append(l)
12
+ return result
13
+ elif isinstance(js, tuple):
14
+ result = list()
15
+ for l in js:
16
+ l = traverse(l, callback, *args, **kwargs)
17
+ result.append(l)
18
+ return tuple(result)
19
+ elif isinstance(js, dict):
20
+ result = dict()
21
+ for k, v in js.items():
22
+ k = traverse(k, callback, *args, **kwargs)
23
+ v = traverse(v, callback, *args, **kwargs)
24
+ result[k] = v
25
+ return result
26
+ elif isinstance(js, int):
27
+ return callback(js, *args, **kwargs)
28
+ elif isinstance(js, str):
29
+ return callback(js, *args, **kwargs)
30
+ else:
31
+ return js
32
+
33
+
34
+ def demo1():
35
+ d = {
36
+ "env": "ppe",
37
+ "mysql_connect": {
38
+ "host": "$mysql_connect_host",
39
+ "port": 3306,
40
+ "user": "callbot",
41
+ "password": "NxcloudAI2021!",
42
+ "database": "callbot_ppe",
43
+ "charset": "utf8"
44
+ },
45
+ "es_connect": {
46
+ "hosts": ["10.20.251.8"],
47
+ "http_auth": ["elastic", "ElasticAI2021!"],
48
+ "port": 9200
49
+ }
50
+ }
51
+
52
+ def callback(s):
53
+ if isinstance(s, str) and s.startswith('$'):
54
+ return s[1:]
55
+ return s
56
+
57
+ result = traverse(d, callback=callback)
58
+ print(result)
59
+ return
60
+
61
+
62
+ if __name__ == '__main__':
63
+ demo1()
toolbox/os/__init__.py ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ #!/usr/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+
4
+
5
+ if __name__ == '__main__':
6
+ pass
toolbox/os/environment.py ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/python3
2
+ # -*- coding: utf-8 -*-
3
+ import json
4
+ import os
5
+
6
+ from dotenv import load_dotenv
7
+ from dotenv.main import DotEnv
8
+
9
+ from toolbox.json.misc import traverse
10
+
11
+
12
+ class EnvironmentManager(object):
13
+ def __init__(self, path, env, override=False):
14
+ filename = os.path.join(path, '{}.env'.format(env))
15
+ self.filename = filename
16
+
17
+ load_dotenv(
18
+ dotenv_path=filename,
19
+ override=override
20
+ )
21
+
22
+ self._environ = dict()
23
+
24
+ def open_dotenv(self, filename: str = None):
25
+ filename = filename or self.filename
26
+ dotenv = DotEnv(
27
+ dotenv_path=filename,
28
+ stream=None,
29
+ verbose=False,
30
+ interpolate=False,
31
+ override=False,
32
+ encoding="utf-8",
33
+ )
34
+ result = dotenv.dict()
35
+ return result
36
+
37
+ def get(self, key, default=None, dtype=str):
38
+ result = os.environ.get(key)
39
+ if result is None:
40
+ if default is None:
41
+ result = None
42
+ else:
43
+ result = default
44
+ else:
45
+ result = dtype(result)
46
+ self._environ[key] = result
47
+ return result
48
+
49
+
50
+ _DEFAULT_DTYPE_MAP = {
51
+ 'int': int,
52
+ 'float': float,
53
+ 'str': str,
54
+ 'json.loads': json.loads
55
+ }
56
+
57
+
58
+ class JsonConfig(object):
59
+ """
60
+ 将 json 中, 形如 `$float:threshold` 的值, 处理为:
61
+ 从环境变量中查到 threshold, 再将其转换为 float 类型.
62
+ """
63
+ def __init__(self, dtype_map: dict = None, environment: EnvironmentManager = None):
64
+ self.dtype_map = dtype_map or _DEFAULT_DTYPE_MAP
65
+ self.environment = environment or os.environ
66
+
67
+ def sanitize_by_filename(self, filename: str):
68
+ with open(filename, 'r', encoding='utf-8') as f:
69
+ js = json.load(f)
70
+
71
+ return self.sanitize_by_json(js)
72
+
73
+ def sanitize_by_json(self, js):
74
+ js = traverse(
75
+ js,
76
+ callback=self.sanitize,
77
+ environment=self.environment
78
+ )
79
+ return js
80
+
81
+ def sanitize(self, string, environment):
82
+ """支持 $ 符开始的, 环境变量配置"""
83
+ if isinstance(string, str) and string.startswith('$'):
84
+ dtype, key = string[1:].split(':')
85
+ dtype = self.dtype_map[dtype]
86
+
87
+ value = environment.get(key)
88
+ if value is None:
89
+ raise AssertionError('environment not exist. key: {}'.format(key))
90
+
91
+ value = dtype(value)
92
+ result = value
93
+ else:
94
+ result = string
95
+ return result
96
+
97
+
98
+ def demo1():
99
+ import json
100
+
101
+ from project_settings import project_path
102
+
103
+ environment = EnvironmentManager(
104
+ path=os.path.join(project_path, 'server/callbot_server/dotenv'),
105
+ env='dev',
106
+ )
107
+ init_scenes = environment.get(key='init_scenes', dtype=json.loads)
108
+ print(init_scenes)
109
+ print(environment._environ)
110
+ return
111
+
112
+
113
+ if __name__ == '__main__':
114
+ demo1()
toolbox/os/other.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import inspect
3
+
4
+
5
+ def pwd():
6
+ """你在哪个文件调用此函数, 它就会返回那个文件所在的 dir 目标"""
7
+ frame = inspect.stack()[1]
8
+ module = inspect.getmodule(frame[0])
9
+ return os.path.dirname(os.path.abspath(module.__file__))