Spaces:
Sleeping
Sleeping
File size: 2,717 Bytes
9942045 ffa1ff4 6f8b8b6 ffa1ff4 bebb80b 6f8b8b6 bebb80b 9942045 6ec79ba 2160552 ffa1ff4 9942045 6ec79ba 2160552 6ec79ba 2160552 6ec79ba ffa1ff4 9942045 436dfc5 9942045 ffa1ff4 6ec79ba 6f8b8b6 9942045 6f8b8b6 9942045 6f8b8b6 6ec79ba ffa1ff4 9942045 69ddcdf 3fecea6 ffa1ff4 3fecea6 ffa1ff4 6ec79ba ffa1ff4 69ddcdf 3fecea6 6f8b8b6 9942045 6f8b8b6 9942045 ffa1ff4 3fecea6 ffa1ff4 3fecea6 ffa1ff4 6ec79ba bebb80b |
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 |
r"""
Refer to https://linux.do/t/topic/120588/5.
# flask 糊接口
#
# curl -sS --location http://127.0.0.1:5000/hf/v1/chat/completions -H "Content-Type: application/json" --data "{\"model\": \"gpt-.5-turbo\", \"messages\": [{\"role\": \"user\", \"content\": \"Say this is a test!\"}], \"stream\": false}"
# --data '{"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Say this is a test!"}], "stream": false}'
curl https://mikeee-duck2api.hf.space/hf/v1/chat/completions -H "Content-Type: application/json" --data "{\"model\": \"gpt-3.5-turbo\", \"messages\": [{\"role\": \"user\", \"content\": \"Say this is a test!\"}], \"stream\": false}"
"""
import os
from threading import Thread
import requests
from dotenv import load_dotenv
from flask import Flask, jsonify, request
from python_run_cmd import run_cmd
from ycecream import y
def run_duck2api():
run_cmd("./duck2api")
Thread(target=run_duck2api).start()
y.configure(sln=1)
load_dotenv()
PORT = os.getenv("PORT")
if not PORT:
PORT = 8088
PORT = 5000
y(PORT)
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def landing():
y(request.url)
y(request.path)
if request.path.startswith("/hf"):
url = f"http://127.0.0.1:{PORT}{request.path[3:]}"
else:
url = f"http://127.0.0.1:{PORT}{request.path}"
response = requests.get(url)
return response.text
@app.route("/hf/v1/chat/completions", methods=["POST"])
def my_endpoint():
# url = "https://api.anakin.ai/v1/apps/1344/chatbot/chat"
# url = "http://acone:{PORT}/v1/chat/completions"
# url = f"http://127.0.0.1:{PORT}/v1/chat/completions"
y(request)
# y(request.host)
y(request.host_url)
# y(request.path)
# y(request.full_path)
# y(request.json)
# y(dir(request))
headers = {
"Content-Type": "application/json",
# 'Authorization': 'Bearer ANAKINAI_API_ACCESS_TOKEN'
}
# remove prefix /hf
y(request.url)
y(request.path)
if request.path.startswith("/hf"):
url = f"http://127.0.0.1:{PORT}{request.path[3:]}"
else:
url = f"http://127.0.0.1:{PORT}{request.path}"
y(url)
try:
response = requests.post(url, headers=headers, json=request.json)
except Exception as exc:
y(exc)
err_msg = str(exc)
# raise
y(response.json())
if response.status_code == 200:
return jsonify(response.json())
return jsonify(
{
"error": {
"message": f"An error occurred: {err_msg}",
"type": "server_error",
"code": 500,
}
}
)
if __name__ == "__main__":
app.run(port=5000, debug=True)
|