-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
96 lines (79 loc) · 2.76 KB
/
app.py
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
from flask import Flask, request, Response, jsonify, render_template, send_from_directory
import requests
import json
import os
import dotenv
dotenv.load_dotenv()
openai_api_base_url = os.environ['OPENAI_API_BASE_URL']
openai_api_key = os.environ['OPENAI_API_KEY']
prompt = os.environ['PROMPT']
app = Flask(__name__)
driver_messages = []
def find_driver_message(driver) -> list:
for message in driver_messages:
if message['driver'] == driver:
# 判断内容是否大于8000字符
if len(message['messages']) < 8000:
return message['messages']
message = {
'driver': driver,
'messages': [
{
'role': 'system',
'content': prompt
}
]
}
driver_messages.append(message)
return message['messages']
def save_driver_message(driver, res_message):
for message in driver_messages:
if message['driver'] == driver:
message['messages'].append(res_message)
print('res message: ', res_message)
return
def send_text_to_gpt(messages):
while True:
url = f'{openai_api_base_url}/chat/completions'
payload = json.dumps({
"model": "gpt-3.5-turbo",
"messages": messages,
"stream": False
}, ensure_ascii=False)
headers = {
'Authorization': f'Bearer {openai_api_key}',
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
'Content-Type': 'application/json'
}
print('req: ', payload)
res = requests.post(url=url, data=payload.encode('utf-8'), headers=headers, verify=False)
print(res.text)
if 'error' in res.text:
print("正在重试中...")
continue
return res.json()['choices'][0]['message']
@app.route('/v1/chat', methods=['POST'])
def chat():
args = request.get_json()
print('接收到用户输入:', args)
driver = args['driver']
text = args['text']
messages = find_driver_message(driver)
messages.append({
'role': 'user',
'content': text
})
res_message_item = send_text_to_gpt(messages)
save_driver_message(driver, res_message_item)
content = res_message_item['content']
# 创建一个Response对象,设置内容为字符串"我很好",编码为UTF-8
response_content = content
# response_content = "哈哈哈"
response = Response(response_content, status=200, content_type='text/plain; charset=utf-8')
return response
if __name__ == '__main__':
# 判断环境变量是否都设置
if not all([openai_api_base_url, openai_api_key, prompt]):
print('环境变量未设置')
exit(1)
app.run(host='0.0.0.0', port=3026, debug=True)