0xAnders Elfe commited on
Commit
075f738
·
0 Parent(s):

Duplicate from baixing/hackathon_chatbot_openai_api

Browse files

Co-authored-by: ElfeXu <[email protected]>

.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: hackathon chatbot openai api
3
+ emoji: 🐨
4
+ colorFrom: red
5
+ colorTo: gray
6
+ sdk: gradio
7
+ sdk_version: 3.20.1
8
+ app_file: app.py
9
+ pinned: false
10
+ license: cc-by-4.0
11
+ duplicated_from: baixing/hackathon_chatbot_openai_api
12
+ ---
13
+
14
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import os
3
+ import openai
4
+
5
+ # 请记得要把 api 的 key 放到 settings 下面的 Repository Secrets 里。
6
+ openai.api_key = os.getenv("KEY")
7
+
8
+
9
+ # 如果你只打算通过 prompt 来定制机器人的行为,只需要修改这段 prompt 就够了。
10
+ prompt = "I want you to act as a stand-up comedian. I will provide you with some topics related to current events and you will use your wit, creativity, and observational skills to create a routine based on those topics. You should also be sure to incorporate personal anecdotes or experiences into the routine in order to make it more relatable and engaging for the audience. My first request is '脱口秀主题'"
11
+
12
+ history = {}
13
+
14
+ # 修改本函数,来实现你自己的 chatbot
15
+ # p: 对机器人说话的内容
16
+ # qid: 当前消息的唯一标识。例如 `'bxqid-cManAtRMszw...'`。由平台生成并传递给机器人,以便机器人区分单个问题(写日志、追踪调试、异步回调等)。同步调用可忽略。
17
+ # uid: 用户的唯一标识。例如`'bxuid-Aj8Spso8Xsp...'`。由平台生成并传递给机器人,以便机器人区分用户。可被用于实现多轮对话的功能。
18
+ # 返回值:[type, content]
19
+ # 详见 https://huggingface.co/spaces/baixing/hackathon_test/blob/main/bot-api.md
20
+ def chat(p, qid, uid):
21
+ # 找出该 uid 对应的历史对话
22
+ global history
23
+ if uid in history:
24
+ msgs = history[uid]
25
+ else:
26
+ msgs = []
27
+
28
+ response = callapi(p, msgs)
29
+ history[uid] = msgs + [[p, response]]
30
+ return ["text", response]
31
+
32
+
33
+ def callapi(p, msgs):
34
+ if (len(msgs) > 8): #简单 hard-code 8 回合对话。如果需要更精准的,应该计算 token 数
35
+ msgs = msgs[-8:]
36
+
37
+ data = [{"role":"system", "content":prompt}]
38
+ for m in msgs:
39
+ data = data + [
40
+ {"role":"user", "content":m[0]},
41
+ {"role":"assistant", "content":m[1]}
42
+ ]
43
+ data = data + [{"role":"user", "content":p}]
44
+ response = openai.ChatCompletion.create(
45
+ model="gpt-3.5-turbo",
46
+ messages= data
47
+ )
48
+ print(response)
49
+ response = response["choices"][0]["message"]["content"]
50
+ while response.startswith("\n"):
51
+ response = response[1:]
52
+ return response
53
+
54
+ iface = gr.Interface(fn=chat,
55
+ inputs=["text", "text", "text"],
56
+ outputs=["text", "text"],
57
+ description="""这是一个极其简单的示范程序,用唐三藏的语气来和你对话。
58
+ 已添加多轮对话的极简示范,能将该 uid 的最近八条消息一起发给openai。本实现是内存中的,一旦重启即被清空。如需可持久的多轮对话,需要改用数据库等方式。
59
+ 注意:duplicate 本项目后,需要将你自己的 openai apikey 设置到 settings 的 Repository Secrets 里,否则运行会报错。[了解详情](https://huggingface.co/spaces/baixing/hackathon_chatbot_openai_api/blob/main/%E6%B7%BB%E5%8A%A0%20secret%20%E7%9A%84%E6%96%B9%E6%B3%95.jpg)
60
+ [对话测试](https://huggingface.co/spaces/BaixingAI/hackathon_test) [参考文档](https://huggingface.co/spaces/baixing/hackathon_test/blob/main/bot-api.md) [Q & A](https://huggingface.co/spaces/baixing/hackathon_test/blob/main/qna.md)
61
+ """)
62
+ iface.launch()
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ openai==0.27.0
/346/267/273/345/212/240 secret /347/232/204/346/226/271/346/263/225.jpg ADDED