Myaptla Akim commited on
Commit
42b9643
0 Parent(s):

Duplicate from Akim/claudeAPI

Browse files

Co-authored-by: Akim <[email protected]>

Files changed (5) hide show
  1. .gitattributes +34 -0
  2. Dockerfile +14 -0
  3. README.md +12 -0
  4. requirements.txt +3 -0
  5. webapi_claude.py +60 -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
Dockerfile ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # read the doc: https://huggingface.co/docs/hub/spaces-sdks-docker
2
+ # you will also find guides on how best to write your Dockerfile
3
+
4
+ FROM python:3.9
5
+
6
+ WORKDIR /code
7
+
8
+ COPY ./requirements.txt /code/requirements.txt
9
+
10
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
11
+
12
+ COPY . .
13
+
14
+ CMD ["python", "webapi_claude.py"]
README.md ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: ClaudeAPI
3
+ emoji: 😻
4
+ colorFrom: indigo
5
+ colorTo: blue
6
+ sdk: docker
7
+ pinned: false
8
+ license: unknown
9
+ duplicated_from: Akim/claudeAPI
10
+ ---
11
+
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ aiohttp
2
+ asyncio
3
+ flask
webapi_claude.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, request, jsonify
2
+ import asyncio
3
+ import aiohttp, os
4
+
5
+
6
+ app = Flask(__name__)
7
+
8
+ async def claude_new_process(prompt):
9
+ headers = {
10
+ "x-api-key": os.environ.get('API_KEY'),
11
+ "content-type": "application/json"
12
+ }
13
+ data = {
14
+ "prompt": prompt,
15
+ "model": "claude-v1.3-100k",
16
+ "max_tokens_to_sample": 1000000, #tokens (any number for the free API)
17
+ "temperature": "0.52", #you know what this is
18
+ "stopsequences": "\n\nHuman: ", #(don't touch)
19
+ }
20
+
21
+ #proxy_url = "8.219.97.248"
22
+ #proxy_port = "80"
23
+ #proxy = f'http://{proxy_url}:{proxy_port}'
24
+
25
+ async with aiohttp.ClientSession() as session:
26
+ async with session.post("https://api.anthropic.com/v1/complete", json=data, headers=headers
27
+ #, proxy=proxy
28
+ ) as response:
29
+
30
+ if response.status == 200:
31
+ #print(response.status, await response.json())
32
+ return 200, await response.json()
33
+ else:
34
+ return response.status, "error"
35
+
36
+ @app.route('/api/claude', methods=['POST'])
37
+ def api_claude_new_process():
38
+ prompt = request.json['prompt']
39
+ key = request.json['password']
40
+ print(f"{prompt} {key}")
41
+ if key != os.environ.get('PASSWORD'):
42
+ return jsonify({'error': 'wrong password'}), 403
43
+
44
+ print(f"Called with prompts: {prompt}")
45
+ loop = asyncio.new_event_loop()
46
+ asyncio.set_event_loop(loop)
47
+ status_code, response = loop.run_until_complete(claude_new_process(prompt))
48
+ if status_code == 200:
49
+ print(response)
50
+ return response, 200
51
+ else:
52
+ return jsonify({'error': 'error'}), status_code
53
+
54
+ async def test():
55
+ status, response = await claude_new_process('\n\nHuman: Hello! \n\nGigachad: ')
56
+ print (response['completion'])
57
+
58
+ if __name__ == '__main__':
59
+ #asyncio.run(test())
60
+ app.run(debug=True, port='7860', host='0.0.0.0')