fix: correct LM Studio URL parsing and uvicorn port binding (fixes #394)
- lm_studio_fn: use urlparse to extract port from server_address so that addresses with an http:// prefix (e.g. http://127.0.0.1:1234, as documented in README) no longer break the Docker URL construction. Previously split(":")[1] returned "//127.0.0.1" instead of the port number, producing a malformed URL. Also fix the non-Docker path to avoid prepending http:// when the address already includes a scheme. - api.py: pass the computed port variable to uvicorn.run() instead of the hardcoded literal 7777, so that BACKEND_PORT environment variable is actually honoured when starting the server directly.
This commit is contained in:
+12
-4
@@ -344,13 +344,21 @@ class Provider:
|
||||
Use local lm-studio server to generate text.
|
||||
"""
|
||||
if self.in_docker:
|
||||
# Extract port from server_address if present
|
||||
# Extract port from server_address, handling both "host:port" and "http://host:port"
|
||||
port = "1234" # default
|
||||
if ":" in self.server_address:
|
||||
port = self.server_address.split(":")[1]
|
||||
addr = self.server_address
|
||||
if "://" not in addr:
|
||||
addr = f"http://{addr}"
|
||||
parsed_addr = urlparse(addr)
|
||||
if parsed_addr.port:
|
||||
port = str(parsed_addr.port)
|
||||
url = f"{self.internal_url}:{port}"
|
||||
else:
|
||||
url = f"http://{self.server_ip}"
|
||||
# Normalize the address to ensure it has a scheme prefix
|
||||
addr = self.server_ip
|
||||
if "://" not in addr:
|
||||
addr = f"http://{addr}"
|
||||
url = addr
|
||||
route_start = f"{url}/v1/chat/completions"
|
||||
payload = {
|
||||
"messages": history,
|
||||
|
||||
Reference in New Issue
Block a user