File size: 4,171 Bytes
48d64c3
 
 
 
c391acc
48d64c3
 
 
4d98764
a86f939
 
 
48d64c3
 
 
 
 
dd82a48
9ffe8f1
48d64c3
 
 
 
 
 
 
 
 
 
 
 
dd82a48
48d64c3
 
 
 
 
 
 
 
 
 
 
 
c55c175
9ffe8f1
ec58988
5e77b4d
48d64c3
 
6e62712
 
 
 
 
d9f99cc
5e77b4d
 
ec58988
48d64c3
 
 
5e77b4d
 
48d64c3
5e77b4d
ec58988
 
 
 
48d64c3
 
 
 
fa4def4
48d64c3
fa4def4
 
48d64c3
fa4def4
 
 
 
48d64c3
 
fa4def4
 
 
 
 
 
 
 
 
 
48d64c3
 
 
 
fa4def4
48d64c3
 
 
fa4def4
48d64c3
 
5d1fe9f
fa4def4
48d64c3
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import json, requests
import gradio as gr

def request_to_v2(message, cookie, user_id, channel_id,context=[]):
    
    times = 3
    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)
        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

if __name__ == "__main__":



    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().style():
                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)

    # 为网站设置密码防止滥用
    dialog_app.launch(auth=("admin", "2240560729"),show_error=True,show_api=True, inbrowser=True)