Spaces:
Sleeping
Sleeping
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, dotenv_values | |
from flask import Flask, jsonify, request | |
from python_run_cmd import run_cmd | |
from ycecream import y | |
def run_duck2api(): | |
try: | |
run_cmd("./duck2api") | |
except Exception as exc: | |
y(exc) | |
Thread(target=run_duck2api).start() | |
y.configure(sln=1) | |
load_dotenv() | |
y(dotenv_values()) | |
# ./duck2api starts at 8088 specified in .env (default 8080) | |
PORT = os.getenv("SERVER_PORT") | |
if not PORT: | |
PORT = 8080 | |
y(PORT) | |
app = Flask(__name__) | |
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 | |
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__": | |
y(" -- ") | |
app.run(port=5000, debug=True) | |
y(" -end- ") | |