Der Deepseek -Dienst, der jetzt auf meinem Server installiert ist Studio verwendet die API -URL. /> Ich möchte den Deepseek -Service mit API -Schlüssel (bereits in TXT -Dateien unten) anbieten, die jetzt nicht für Benutzer im Client wie Cherrystudio verwendet werden. < /p>
- API URL: http: // my-ip: 8088
- API-Schlüssel: Key-xxyy11 # Unterstützt jetzt nicht
Code: Select all
$ head Api_key.txt
key-xxyy11,2025/2/24,10.12.100.200
key-xxyy22,2025/3/24,10.12.200.201
< /code>
Der folgende Code ignoriert IP -Informationen beim Überprüfen von API -Tasten, was meiner Meinung nach später einfach zu implementieren ist. Nachfolgend auf dem Server kann ich die Modellnamen in Cherrybox erhalten, was bedeutet, dass die Funktion getModels ()
Code: Select all
from flask import Flask, request, jsonify, Response, stream_with_context
import datetime
import csv
import requests
app = Flask(__name__)
# load API key info
def load_api_keys():
api_keys = {}
with open('/path/to/Api_key.txt', mode='r') as file:
reader = csv.reader(file)
for row in reader:
api_keys[row[0]] = row[1]
return api_keys
# get model name list: OK
@app.route('/deepseek/models', methods=['GET'])
def getModels():
url = "http://127.0.0.1:11434/v1/models"
headers = {
#"Authorization": "Bearer sk-test2",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
json_response = response.json()
else:
json_response={"Error":"get model list error from deepseek"}
return jsonify(json_response), response.status_code
# chat with deepseek, if API key is valid. Not work
@app.route('/deepseek/chat/completions', methods=['POST'])
def chat():
print("[0]>> begin")
api_keys = load_api_keys()
api_key = request.headers.get('Authorization').split(" ")[1]
if api_key in api_keys:
expiry_date = datetime.datetime.strptime(api_keys[api_key], "%Y/%m/%d")
if expiry_date >= datetime.datetime.now():
# how to call DeepSeek service as if calling the service directly?
#prompt = request.json.get('prompt')
prompt = request.json.get('messages')
print("[1]>> prompt=", prompt)
base_url = "http://127.0.0.1:11434/v1/chat/completions"
headers = {
"Authorization": "Bearer sk-test2",
"Content-Type": "application/json"
}
data = {
"model": "deepseek-r1:1.5b",
"messages": [
{
"role": "user",
"content": prompt #"Hello"
}
],
"stream": True
}
# Send the request to DeepSeek API
response = requests.post(base_url, headers=headers, json=data)
if response.status_code == 200:
return jsonify(response.json()), 200
else:
error_message = response.json() if response.content else {'error': 'Unknown server error'}
return jsonify(error_message), response.status_code
else:
return jsonify({"error": "API key has expired."}), 403
else:
return jsonify({"error": "Invalid API key."}), 403
if __name__ == '__main__':
print("init: 01")
app.run(host='0.0.0.0', port=8089, debug=True)