xiaolv's picture
Duplicate from xiaolv/claude2_xiaolv_api
9f5e7e6
raw
history blame
4.34 kB
import json, requests
import gradio as gr
def request_to_v2(message, cookie, user_id, channel_id,context=[]):
timeout = 5*60 #5分钟不回复,显示超时
context = [message]
headers = {
# ':Authority': 'claude.ai',
# ':Method': 'POST',
# ':Path': '/api/append_message',
# ':Scheme': 'https',
'Content-Type': 'application/json',
'Origin': 'https://claude.ai',
'Referer': f'https://claude.ai/chat/{channel_id}',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
'Cookie': cookie,
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
# 'Accept-Encoding': 'gzip, deflate, br',
'Accept': 'text/event-stream, text/event-stream',
'Sec-Ch-Ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
'Sec-Ch-Ua-Mobile': '?0',
'Sec-Ch-Ua-Platform': '"Windows"',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'Connection': 'keep-alive',
}
post_msg_url = 'https://claude.ai/api/append_message'
post_msg_data = {
"completion":{
"incremental":True,
"prompt": message,
"timezone":"Asia/Shanghai",
"model":"claude-2"
},
"organization_uuid": user_id,
"conversation_uuid": channel_id,
"text": message,
"attachments": []
}
post_msg_data = json.dumps(post_msg_data)
# print(post_msg_data)
try:
response = requests.post(post_msg_url, headers=headers, data=post_msg_data, verify=False, stream=False,timeout = timeout)
bots = ""
print("a"*100)
for data in response.iter_lines():
if data:
# 将字节字符串转换为字符串
data_str = data.decode('utf-8')
# 删除开头的 "data: " 部分
data_str = data_str.replace("data: ", "")
data_json = json.loads(data_str)
# print(data_json)
bots += data_json["completion"]
print(bots)
context += [bots]
responses = [(u, b) for u, b in zip(context[::2], context[1::2])]
return responses, context
except Exception as e:
print(">>>>>> 查询失败")
print(e)
response =">>>>>> 查询失败\n报错信息为:"+ str(e)
context += [response]
responses = [(u, b) for u, b in zip(context[::2], context[1::2])]
return responses, context
with gr.Blocks() as dialog_app:
gr.HTML("""<h1 align="center">Claude2-API-xiaolv</h1>""")
with gr.Tab("Claude2 API xiaolv"):
gr.Markdown("""
## 需要传入的参数有:
1.cookie:intercom-device-id-lupk8zyo=.......
2.user_id:对应 organization_uuid
3.channel_id:对应 conversation_uuid
""")
with gr.Row():
with gr.Column(scale=0.4):
cookies = gr.Textbox(lines=2, label="输入cookies")
user_id = gr.Textbox(lines=2, label="输入user_id/organization_uuid")
channel_id = gr.Textbox(lines=2, label="输入channel_id/conversation_uuid")
# chatbot = gr.Chatbot()
with gr.Column(scale=0.6):
chatbot = gr.Chatbot([])
state = gr.State([])
with gr.Row():
inputs = gr.Textbox(
label="输入问题",
placeholder="请输入你的文本,确保已经正确填入cookies、user_id、channel_id"
)
inputs.submit(request_to_v2, [inputs, cookies, user_id,channel_id,state], [chatbot, state])
send = gr.Button("发送请求.....")
send.click(request_to_v2, [inputs, cookies, user_id,channel_id,state], [chatbot, state], api_name="xiaolvgpt", show_progress=True)
gr.Markdown("""
清除历史记录是,请输入:```/resrt```""")
# 为网站设置密码防止滥用
# dialog_app.launch(auth=("admin", "2240560729"),show_error=True,show_api=True,share=True)
# dialog_app.launch(auth=("admin", "2240560729"),show_error=True)
dialog_app.launch(show_error=True)
# dialog_app.launch(show_error=True,show_api=True,share=True)