Wie füge ich den API -Schlüssel für Deepseek hinzu, das auf meinem Server installiert ist, damit andere diesen Dienst nuPython

Python-Programme
Anonymous
 Wie füge ich den API -Schlüssel für Deepseek hinzu, das auf meinem Server installiert ist, damit andere diesen Dienst nu

Post by Anonymous »

Ich habe Deepseek-R1: 7B und 1,5B auf meinem CentOS7.9-Server mit OLLAMAIS installiert, und ich kann es für den Befehl und den Win11-Client wie Cherry Studio verwenden, indem ich API-URL wie http: // my-ip: 8088 mithilfe von API-URL verwenden kann Verwenden Sie Nginx, um die Ursprungs -URL http://127.0.0.1:11434/./p>
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
< BR /> Was ich ausprobiert habe: Ich habe den API -Schlüssel, das Ablaufdatum, das Benutzer -IP in eine TXT -Datei geschrieben, da nur weniger als 10 Personen diesen Dienst verwenden. < /p>

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 () 
funktioniert. Flask Service mit einem falschen API -Schlüssel, die Fehlermeldung in Cherry Studio angezeigt wird, was bedeutet, dass der Validierungsteil funktioniert. In Cherrystudio kann auch keine Fehlermeldung. NICHT den Chat mit Deepseek fortsetzen. < /P>

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)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post