From bd99fff6af571e93f1ab57347539c752f7dade19 Mon Sep 17 00:00:00 2001 From: Joel Klabo Date: Mon, 2 Mar 2026 07:36:45 -0800 Subject: [PATCH 1/2] Fix URL encoding for prompt names containing slashes --- promptlayer/utils.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/promptlayer/utils.py b/promptlayer/utils.py index 488814c..8ff6773 100644 --- a/promptlayer/utils.py +++ b/promptlayer/utils.py @@ -323,6 +323,7 @@ async def _post_workflow_id_run( _url_template: str = WORKFLOW_RUN_URL_TEMPLATE, ): url = _url_template.format(base_url=base_url, workflow_id=workflow_id) + prompt_name = urllib.parse.quote(prompt_name) payload = { "input_variables": input_variables, "metadata": metadata, @@ -893,6 +894,7 @@ async def apromptlayer_track_prompt( throw_on_error: bool = True, ) -> bool: url = f"{base_url}/library-track-prompt" + prompt_name = urllib.parse.quote(prompt_name) payload = { "request_id": request_id, "prompt_name": prompt_name, @@ -974,6 +976,7 @@ async def apromptlayer_track_metadata( metadata: Dict[str, Any], ) -> bool: url = f"{base_url}/library-track-metadata" + prompt_name = urllib.parse.quote(prompt_name) payload = { "request_id": request_id, "metadata": metadata, @@ -1052,6 +1055,7 @@ async def apromptlayer_track_score( score_name: Optional[str], ) -> bool: url = f"{base_url}/library-track-score" + prompt_name = urllib.parse.quote(prompt_name) data = { "request_id": request_id, "score": score, @@ -1152,6 +1156,7 @@ def __init__(self, generator, api_request_arguments, api_key, base_url): self.api_request_arugments = api_request_arguments self.api_key = api_key self.base_url = base_url + prompt_name = urllib.parse.quote(prompt_name) def __iter__(self): return self @@ -2364,6 +2369,7 @@ def anthropic_bedrock_request( aws_region = function_kwargs.pop("aws_region", None) aws_session_token = function_kwargs.pop("aws_session_token", None) base_url = function_kwargs.pop("base_url", None) + prompt_name = urllib.parse.quote(prompt_name) cache_key = f"anthropic_bedrock:{aws_access_key or ''}:{aws_region or ''}:{base_url or ''}" client = _get_cached_client( @@ -2398,6 +2404,7 @@ async def aanthropic_bedrock_request( aws_region = function_kwargs.pop("aws_region", None) aws_session_token = function_kwargs.pop("aws_session_token", None) base_url = function_kwargs.pop("base_url", None) + prompt_name = urllib.parse.quote(prompt_name) cache_key = f"async_anthropic_bedrock:{aws_access_key or ''}:{aws_region or ''}:{base_url or ''}" client = _get_cached_client( From 2e2f0c1a3aec07c4e8b498db4775e3fff8f416ef Mon Sep 17 00:00:00 2001 From: Joel Klabo Date: Mon, 2 Mar 2026 22:50:19 -0800 Subject: [PATCH 2/2] Fix: apply URL encoding to prompt_name to handle slashes --- promptlayer/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/promptlayer/utils.py b/promptlayer/utils.py index 8ff6773..18c2efb 100644 --- a/promptlayer/utils.py +++ b/promptlayer/utils.py @@ -1576,7 +1576,7 @@ def get_prompt_template( if params: json_body = {**json_body, **params} response = _get_requests_session().post( - f"{base_url}/prompt-templates/{quote(prompt_name, safe='')}", + f"{base_url}/prompt-templates/{quote(urllib.parse.quote(prompt_name), safe='')}", headers={"X-API-KEY": api_key}, json=json_body, ) @@ -1628,7 +1628,7 @@ async def aget_prompt_template( json_body.update(params) async with _make_httpx_client() as client: response = await client.post( - f"{base_url}/prompt-templates/{quote(prompt_name, safe='')}", + f"{base_url}/prompt-templates/{quote(urllib.parse.quote(prompt_name), safe='')}", headers={"X-API-KEY": api_key}, json=json_body, )