fix: AIUI proxy graceful error without API key, deploy proxy parity
Claude proxy no longer crashes when ANTHROPIC_API_KEY is not set. Instead serves a 401 with a helpful message telling users to configure their API key in Settings. Fixes blank AIUI on fresh installs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
843037af47
commit
f84194d9c6
@ -2181,6 +2181,9 @@ class Handler(http.server.BaseHTTPRequestHandler):
|
|||||||
m = data.get("model", "")
|
m = data.get("model", "")
|
||||||
if m in MODEL_MAP: data["model"] = MODEL_MAP[m]
|
if m in MODEL_MAP: data["model"] = MODEL_MAP[m]
|
||||||
body = json.dumps(data).encode()
|
body = json.dumps(data).encode()
|
||||||
|
if not API_KEY:
|
||||||
|
err = json.dumps({"type":"error","error":{"type":"auth_error","message":"AIUI not configured. Set your Anthropic API key in Settings > AIUI to enable AI chat."}}).encode()
|
||||||
|
self.send_response(401); self.send_header("Content-Type","application/json"); self.send_header("Content-Length",str(len(err))); self.end_headers(); self.wfile.write(err); return
|
||||||
headers = {"Content-Type":"application/json","x-api-key":API_KEY,"anthropic-version":"2023-06-01","anthropic-dangerous-direct-browser-access":"true"}
|
headers = {"Content-Type":"application/json","x-api-key":API_KEY,"anthropic-version":"2023-06-01","anthropic-dangerous-direct-browser-access":"true"}
|
||||||
for h in ["anthropic-version","anthropic-beta"]:
|
for h in ["anthropic-version","anthropic-beta"]:
|
||||||
if self.headers.get(h): headers[h] = self.headers[h]
|
if self.headers.get(h): headers[h] = self.headers[h]
|
||||||
@ -2210,7 +2213,7 @@ class Handler(http.server.BaseHTTPRequestHandler):
|
|||||||
self.send_response(200); self.send_header("Content-Type","application/json"); self.end_headers(); self.wfile.write(b'{"status":"ok"}')
|
self.send_response(200); self.send_header("Content-Type","application/json"); self.end_headers(); self.wfile.write(b'{"status":"ok"}')
|
||||||
else: self.send_response(404); self.end_headers()
|
else: self.send_response(404); self.end_headers()
|
||||||
def log_message(self, fmt, *args): pass
|
def log_message(self, fmt, *args): pass
|
||||||
if not API_KEY: print("ERROR: ANTHROPIC_API_KEY not set — configure via setup-aiui-server.sh"); sys.exit(1)
|
if not API_KEY: print("WARNING: ANTHROPIC_API_KEY not set — AIUI will return setup instructions")
|
||||||
server = http.server.HTTPServer(("127.0.0.1", PORT), Handler)
|
server = http.server.HTTPServer(("127.0.0.1", PORT), Handler)
|
||||||
print(f"Claude API proxy on port {PORT}")
|
print(f"Claude API proxy on port {PORT}")
|
||||||
server.serve_forever()
|
server.serve_forever()
|
||||||
|
|||||||
@ -687,6 +687,9 @@ class Handler(http.server.BaseHTTPRequestHandler):
|
|||||||
m = data.get("model", "")
|
m = data.get("model", "")
|
||||||
if m in MODEL_MAP: data["model"] = MODEL_MAP[m]
|
if m in MODEL_MAP: data["model"] = MODEL_MAP[m]
|
||||||
body = json.dumps(data).encode()
|
body = json.dumps(data).encode()
|
||||||
|
if not API_KEY:
|
||||||
|
err = json.dumps({"type":"error","error":{"type":"auth_error","message":"AIUI not configured. Set your Anthropic API key in Settings > AIUI to enable AI chat."}}).encode()
|
||||||
|
self.send_response(401); self.send_header("Content-Type","application/json"); self.send_header("Content-Length",str(len(err))); self.end_headers(); self.wfile.write(err); return
|
||||||
headers = {"Content-Type":"application/json","x-api-key":API_KEY,"anthropic-version":"2023-06-01","anthropic-dangerous-direct-browser-access":"true"}
|
headers = {"Content-Type":"application/json","x-api-key":API_KEY,"anthropic-version":"2023-06-01","anthropic-dangerous-direct-browser-access":"true"}
|
||||||
for h in ["anthropic-version","anthropic-beta"]:
|
for h in ["anthropic-version","anthropic-beta"]:
|
||||||
if self.headers.get(h): headers[h] = self.headers[h]
|
if self.headers.get(h): headers[h] = self.headers[h]
|
||||||
@ -716,7 +719,7 @@ class Handler(http.server.BaseHTTPRequestHandler):
|
|||||||
self.send_response(200); self.send_header("Content-Type","application/json"); self.end_headers(); self.wfile.write(b"{\"status\":\"ok\"}")
|
self.send_response(200); self.send_header("Content-Type","application/json"); self.end_headers(); self.wfile.write(b"{\"status\":\"ok\"}")
|
||||||
else: self.send_response(404); self.end_headers()
|
else: self.send_response(404); self.end_headers()
|
||||||
def log_message(self, fmt, *args): pass
|
def log_message(self, fmt, *args): pass
|
||||||
if not API_KEY: print("ERROR: ANTHROPIC_API_KEY not set"); sys.exit(1)
|
if not API_KEY: print("WARNING: ANTHROPIC_API_KEY not set — AIUI will return setup instructions")
|
||||||
server = http.server.HTTPServer(("127.0.0.1", PORT), Handler)
|
server = http.server.HTTPServer(("127.0.0.1", PORT), Handler)
|
||||||
print(f"Claude API proxy on port {PORT}")
|
print(f"Claude API proxy on port {PORT}")
|
||||||
server.serve_forever()
|
server.serve_forever()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user