|
import gradio as gr |
|
import os |
|
import openai |
|
|
|
|
|
openai.api_key = os.getenv("KEY") |
|
|
|
|
|
|
|
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 '脱口秀主题'" |
|
|
|
history = {} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def chat(p, qid, uid): |
|
|
|
global history |
|
if uid in history: |
|
msgs = history[uid] |
|
else: |
|
msgs = [] |
|
|
|
response = callapi(p, msgs) |
|
history[uid] = msgs + [[p, response]] |
|
return ["text", response] |
|
|
|
|
|
def callapi(p, msgs): |
|
if (len(msgs) > 8): |
|
msgs = msgs[-8:] |
|
|
|
data = [{"role":"system", "content":prompt}] |
|
for m in msgs: |
|
data = data + [ |
|
{"role":"user", "content":m[0]}, |
|
{"role":"assistant", "content":m[1]} |
|
] |
|
data = data + [{"role":"user", "content":p}] |
|
response = openai.ChatCompletion.create( |
|
model="gpt-3.5-turbo", |
|
messages= data |
|
) |
|
print(response) |
|
response = response["choices"][0]["message"]["content"] |
|
while response.startswith("\n"): |
|
response = response[1:] |
|
return response |
|
|
|
iface = gr.Interface(fn=chat, |
|
inputs=["text", "text", "text"], |
|
outputs=["text", "text"], |
|
description="""这是一个极其简单的示范程序,用唐三藏的语气来和你对话。 |
|
已添加多轮对话的极简示范,能将该 uid 的最近八条消息一起发给openai。本实现是内存中的,一旦重启即被清空。如需可持久的多轮对话,需要改用数据库等方式。 |
|
注意: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) |
|
[对话测试](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) |
|
""") |
|
iface.launch() |