File size: 2,290 Bytes
f1a48f0 |
1 2 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
'''
1. 原生的ChatGPT的中文输出没问题,但是llama index的版本中文输出有问题,而且也可以“继续这个回答”。
1. 可以在terminal中同时运行2个不同版本的ChatGPT,一个原生,一个定制的。python3 xxx.py。
'''
import openai
import gradio as gr
import os
## 这里是huggingface的secret里面存放当前可以用的api key。
openai.api_key = os.environ['my_api_key']
messages = [
{"role": "system", "content": "You are a helpful and kind AI Assistant."},
]
def chatbot(input):
history = []
try:
if input:
## no streaming version.
# messages.append({"role": "user", "content": input})
# print(input)
# chat = openai.ChatCompletion.create(
# model="gpt-3.5-turbo", messages=messages
# )
# reply = chat.choices[0].message.content
# messages.append({"role": "assistant", "content": reply})
## streaming version. typewriter effect, word by word output.
messages.append({"role": "user", "content": input})
for resp in openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages, stream=True, max_tokens=2048):
# sys.stdout.write(str(resp['choices'][0]['delta'].get('content'))) #! 这个方式仅在terminal中是working的。
# sys.stdout.flush()
#! 以下内容在Gradio中是working的。
answer = str(resp['choices'][0]['delta'].get('content'))
if answer != "None":
history.append(answer)
result = "".join(history).strip() #* working!
yield result
except Exception as e:
print(e)
pass
return None
## 如果要优化显示效果,参见: https://gradio.app/theming-guide/
try:
inputs = gr.inputs.Textbox(lines=5, label="Prompt提示词")
outputs = gr.outputs.Textbox(label="ChatGPT")
interface = gr.Interface(fn=chatbot, inputs=inputs, outputs=outputs, title="石博士的极简版ChatGPT", description="请输入你的提示词",theme=gr.themes.Monochrome(), height=300)
interface.launch()
except Exception as e:
print(e) |