xiaolv commited on
Commit
eb66930
0 Parent(s):

Duplicate from xiaolv/claude2_xiaolv_api_updata

Browse files
Files changed (5) hide show
  1. .gitattributes +34 -0
  2. README.md +14 -0
  3. app.py +211 -0
  4. gitattributes.txt +34 -0
  5. requirements.txt +14 -0
.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: New-Bing-with Your Cookies
3
+ emoji: 🐨
4
+ colorFrom: green
5
+ colorTo: pink
6
+ sdk: gradio
7
+ sdk_version: 3.23.0
8
+ app_file: app.py
9
+ pinned: false
10
+ license: other
11
+ duplicated_from: xiaolv/claude2_xiaolv_api_updata
12
+ ---
13
+
14
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json, requests
2
+ import gradio as gr
3
+ import uuid
4
+ import time
5
+ import random
6
+
7
+
8
+ # 创建新的聊天频道
9
+ def generate_uuid():
10
+ random_uuid = uuid.uuid4()
11
+ random_uuid_str = str(random_uuid)
12
+ formatted_uuid = f"{random_uuid_str[0:8]}-{random_uuid_str[9:13]}-{random_uuid_str[14:18]}-{random_uuid_str[19:23]}-{random_uuid_str[24:]}"
13
+ return formatted_uuid
14
+
15
+
16
+ # Deletes the conversation
17
+ def delete_conversation(user_id,channel_id,cookie):
18
+ url = f"https://claude.ai/api/organizations/{user_id}/chat_conversations/{channel_id}"
19
+
20
+ payload = json.dumps(f"{channel_id}")
21
+ headers = {
22
+ '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 Edg/114.0.1823.82',
23
+ 'Accept-Language': 'en-US,en;q=0.5',
24
+ 'Content-Type': 'application/json',
25
+ 'Content-Length': '38',
26
+ 'Referer': 'https://claude.ai/chats',
27
+ 'Origin': 'https://claude.ai',
28
+ 'Sec-Fetch-Dest': 'empty',
29
+ 'Sec-Fetch-Mode': 'cors',
30
+ 'Sec-Fetch-Site': 'same-origin',
31
+ 'Connection': 'keep-alive',
32
+ 'Cookie': f'{cookie}',
33
+ 'TE': 'trailers'
34
+ }
35
+
36
+ response = requests.delete(url, headers=headers, data=payload)
37
+ # Returns True if deleted or False if any error in deleting
38
+ if response.status_code == 204:
39
+ return True
40
+ else:
41
+ return False
42
+
43
+ def create_new_chat(user_id,cookie):
44
+ url = f"https://claude.ai/api/organizations/{user_id}/chat_conversations"
45
+ uuid = generate_uuid()
46
+
47
+ payload = json.dumps({"uuid": uuid, "name": ""})
48
+ headers = {
49
+ '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 Edg/114.0.1823.82',
50
+ 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
51
+ 'Referer': 'https://claude.ai/chats',
52
+ 'Content-Type': 'application/json',
53
+ 'Origin': 'https://claude.ai',
54
+ 'Connection': 'keep-alive',
55
+ 'Cookie': cookie,
56
+ 'Sec-Fetch-Dest': 'empty',
57
+ 'Sec-Fetch-Mode': 'cors',
58
+ 'Sec-Fetch-Site': 'same-origin',
59
+ }
60
+
61
+ # response = requests.request("POST", url, headers=headers, data=payload)
62
+ # 使用代理,解决国内网络不能访问问题
63
+ # response = request("POST", url, headers=headers, data=payload, proxies=proxies)
64
+ response = requests.post(url, headers=headers, data=payload)
65
+ print(f"新的对话页面:{response.json()}")
66
+
67
+ # Returns JSON of the newly created conversation information
68
+ return response.json()
69
+
70
+ def request_to_v2(message, cookie, user_id,context=[]):
71
+
72
+ response_json = create_new_chat(user_id,cookie)
73
+ channel_id = response_json.get('uuid',"")
74
+ print(channel_id)
75
+
76
+
77
+ timeout = 5*60 #5分钟不回复,显示超时
78
+ context = [message]
79
+ headers = {
80
+ # ':Authority': 'claude.ai',
81
+ # ':Method': 'POST',
82
+ # ':Path': '/api/append_message',
83
+ # ':Scheme': 'https',
84
+ 'Content-Type': 'application/json',
85
+ 'Origin': 'https://claude.ai',
86
+ 'Referer': f'https://claude.ai/chat/{channel_id}',
87
+ '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',
88
+ 'Cookie': cookie,
89
+ 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
90
+ # 'Accept-Encoding': 'gzip, deflate, br',
91
+ 'Accept': 'text/event-stream, text/event-stream',
92
+ 'Sec-Ch-Ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"',
93
+ 'Sec-Ch-Ua-Mobile': '?0',
94
+ 'Sec-Ch-Ua-Platform': '"Windows"',
95
+ 'Sec-Fetch-Dest': 'empty',
96
+ 'Sec-Fetch-Mode': 'cors',
97
+ 'Sec-Fetch-Site': 'same-origin',
98
+ 'Connection': 'keep-alive',
99
+ }
100
+ post_msg_url = 'https://claude.ai/api/append_message'
101
+ post_msg_data = {
102
+ "completion":{
103
+ "incremental":True,
104
+ "prompt": message,
105
+ "timezone":"Asia/Shanghai",
106
+ "model":"claude-2"
107
+ },
108
+ "organization_uuid": user_id,
109
+ "conversation_uuid": channel_id,
110
+ "text": message,
111
+ "attachments": []
112
+ }
113
+ post_msg_data = json.dumps(post_msg_data)
114
+ # print(post_msg_data)
115
+
116
+ response = {
117
+ "status_code":-1,
118
+ "text":"报错啦"
119
+ }
120
+
121
+ try:
122
+ print(f"输入的问题:{message}")
123
+ response = requests.post(post_msg_url, headers=headers, data=post_msg_data, verify=False, stream=False,timeout = timeout)
124
+ bots = ""
125
+ print("a"*100)
126
+ for data in response.iter_lines():
127
+ if data:
128
+ # 将字节字符串转换为字符串
129
+ data_str = data.decode('utf-8')
130
+ # 删除开头的 "data: " 部分
131
+ data_str = data_str.replace("data: ", "")
132
+ data_json = json.loads(data_str)
133
+ # print(data_json)
134
+ bots += data_json["completion"]
135
+ print(bots)
136
+ context += [bots]
137
+ responses = [(u, b) for u, b in zip(context[::2], context[1::2])]
138
+ return responses, context
139
+
140
+ except Exception as e:
141
+ print(">>>>>> 查询失败")
142
+ print(e)
143
+ print(response.text)
144
+
145
+ response =">>>>>> 查询失败\n报错信息为:"+ str(e) + f"\n response信息:\n错误代码:{response.status_code}\n错误信息{response.text}"
146
+ context += [response]
147
+ responses = [(u, b) for u, b in zip(context[::2], context[1::2])]
148
+
149
+ return responses, context
150
+
151
+ finally:
152
+ time.sleep(random.uniform(1,2))
153
+ ds = delete_conversation(user_id,channel_id,cookie)
154
+ if ds:
155
+ print(f"成功删除")
156
+ else:
157
+ print(f"删除失败")
158
+
159
+ print("*-"*100)
160
+
161
+
162
+
163
+ with gr.Blocks() as dialog_app:
164
+ gr.HTML("""<h1 align="center">Claude2-API-xiaolv-第2版-单轮对话</h1>""")
165
+ with gr.Tab("Claude2 API xiaolv"):
166
+ gr.Markdown("""
167
+ ## 需要传入的参数有:
168
+ 1.cookie:intercom-device-id-lupk8zyo=8888
169
+ 2.user_id:对应 organization_uuid
170
+ ## 特点:
171
+ 1. 根据传入的cookie 和 user_id 自动创建一个新的聊天频道(conversation_uuid/channel_id);
172
+ 2. 在新的聊天聊天频道进行对话;
173
+ 3. 请求放回后,自动删除新的聊天频道,避免频繁调用导致页面太多记录。
174
+ 4. 模型只能进行一次聊天,对于特定场景比较有用,防止模型记住历史数据,影响模型对实际数据的输出额判断。
175
+ """)
176
+ gr.HTML(
177
+ """5.如果想多轮对话的话,可以参考以下这个地址:<a href="https://huggingface.co/spaces/xiaolv/claude2_xiaolv">Claude2-API-xiaolv-第1版-多轮对话</a>如果喜欢请给个 💖 。"""
178
+ )
179
+
180
+
181
+ with gr.Row():
182
+ with gr.Column(scale=0.4):
183
+ cookies = gr.Textbox(lines=2, label="输入cookies")
184
+ user_id = gr.Textbox(lines=2, label="输入user_id/organization_uuid")
185
+ # channel_id = gr.Textbox(lines=2, label="输入channel_id/conversation_uuid")
186
+ # chatbot = gr.Chatbot()
187
+ with gr.Column(scale=0.6):
188
+ chatbot = gr.Chatbot([])
189
+
190
+ state = gr.State([])
191
+
192
+ with gr.Row():
193
+ inputs = gr.Textbox(
194
+ label="输入问题",
195
+ placeholder="请输入你的文本,确保已经正确填入cookies、user_id"
196
+ )
197
+ inputs.submit(request_to_v2, [inputs, cookies, user_id,state], [chatbot, state])
198
+ send = gr.Button("发送请求.....")
199
+ send.click(request_to_v2, [inputs, cookies, user_id,state], [chatbot, state], api_name="xiaolvgpt", show_progress=True)
200
+
201
+
202
+ gr.Markdown("""
203
+ 清除历史记录是,请输入:```/resrt```""")
204
+
205
+ # 为网站设置密码防止滥用
206
+ # dialog_app.launch(auth=("admin", "2240560729"),show_error=True,show_api=True,share=True)
207
+ # dialog_app.launch(auth=("admin", "2240560729"),show_error=True)
208
+ dialog_app.launch(show_error=True)
209
+ # dialog_app.launch(show_error=True,show_api=True,share=True)
210
+
211
+
gitattributes.txt 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
requirements.txt ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ uuid
2
+ aiohttp
3
+ BingImageCreator
4
+ certifi
5
+ httpx
6
+ prompt_toolkit
7
+ requests
8
+ rich
9
+ gradio
10
+ requests
11
+ websockets
12
+ log2d
13
+
14
+