Skip to content

Commit 17c3a0f

Browse files
committed
Add is_api_key at the query parameter for system prompt
1 parent ffff977 commit 17c3a0f

2 files changed

Lines changed: 24 additions & 10 deletions

File tree

src/app/api/helper/get_system_prompt.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66

77
_system_prompts_cache = TTLCache(maxsize=100, ttl=3) # 5 minutes TTL
88

9-
async def get_system_prompt(model: str, usage: str) -> str:
9+
async def get_system_prompt(model: str, usage: str, is_api_key: bool = False) -> str:
1010
"""
1111
Get the system prompt for the model and usage.
1212
"""
1313
try:
14-
cached_prompts = _system_prompts_cache.get(f"prompt-{model}-{usage}")
14+
cached_prompts = _system_prompts_cache.get(f"prompt-{model}-{usage}-{is_api_key}")
1515
if cached_prompts is not None:
1616
log.info("Retrieved system prompts from cache")
1717
return cached_prompts
@@ -20,7 +20,7 @@ async def get_system_prompt(model: str, usage: str) -> str:
2020
api_key = get_settings().PANDA_APP_SERVER_TOKEN
2121
client = httpx.AsyncClient()
2222
response = await client.get(
23-
f"{base_url}/system-prompt?model={model}&usage={usage}",
23+
f"{base_url}/system-prompt?model={model}&usage={usage}&is_api_key={is_api_key}",
2424
headers={"X-API-Key": f"{api_key}"}
2525
)
2626

@@ -34,7 +34,7 @@ async def get_system_prompt(model: str, usage: str) -> str:
3434
else:
3535
log.error(f"Failed to get system prompt for model {model} and usage {usage}", response.text)
3636
raise HTTPException(status_code=500, detail="Failed to get system prompt")
37-
_system_prompts_cache[f"prompt-{model}-{usage}"] = response.json()["system_prompt"]
37+
_system_prompts_cache[f"prompt-{model}-{usage}-{is_api_key}"] = response.json()["system_prompt"]
3838
return response.json()["system_prompt"]
3939
except Exception as e:
4040
log.error(f"Error getting system prompt for model {model} and usage {usage}: {str(e)}")

src/app/api/helper/request_llm.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,14 @@
1414
LLMSuccessResponse = Union[Dict[str, Any], List[Any]]
1515
THRESHOLD = 0.6
1616

17-
async def arequest_llm(request_body: str, stream: bool = True, vllm_url: str = get_settings().VLLM_URL, user_id: str = None, use_vector_db: bool = False) -> Union[httpx.Response, JSONResponse, LLMSuccessResponse]:
17+
async def arequest_llm(
18+
request_body: str,
19+
stream: bool = True,
20+
vllm_url: str = get_settings().VLLM_URL,
21+
user_id: str | None = None,
22+
is_api_key: bool = False,
23+
use_vector_db: bool = False
24+
) -> Union[httpx.Response, JSONResponse, LLMSuccessResponse]:
1825
"""
1926
Request LLM.
2027
- Returns httpx.Response if stream=True and status=200 (for caller to handle streaming).
@@ -25,7 +32,7 @@ async def arequest_llm(request_body: str, stream: bool = True, vllm_url: str = g
2532
response: Optional[httpx.Response] = None
2633

2734
# Add system prompt to the request body
28-
request_body = await _add_system_prompt(request_body)
35+
request_body = await _add_system_prompt(request_body, is_api_key)
2936

3037
# Apply vector DB if enabled
3138
if use_vector_db:
@@ -80,7 +87,14 @@ async def arequest_llm(request_body: str, stream: bool = True, vllm_url: str = g
8087
await client.aclose()
8188

8289

83-
def request_llm(request_body: str, stream: bool = True, vllm_url: str = get_settings().VLLM_URL) -> Union[httpx.Response, JSONResponse, LLMSuccessResponse]:
90+
def request_llm(
91+
request_body: str,
92+
stream: bool = True,
93+
vllm_url: str = get_settings().VLLM_URL,
94+
user_id: str | None = None,
95+
is_api_key: bool = False,
96+
use_vector_db: bool = False
97+
) -> Union[httpx.Response, JSONResponse, LLMSuccessResponse]:
8498
"""
8599
Request LLM (Synchronous version).
86100
- Returns httpx.Response if stream=True and status=200 (for caller to handle streaming).
@@ -91,7 +105,7 @@ def request_llm(request_body: str, stream: bool = True, vllm_url: str = get_sett
91105
response: Optional[httpx.Response] = None
92106

93107
# Add system prompt to the request body
94-
request_body = asyncio.run(_add_system_prompt(request_body))
108+
request_body = asyncio.run(_add_system_prompt(request_body, is_api_key))
95109

96110
try:
97111
headers = { "Content-Type": "application/json" }
@@ -141,10 +155,10 @@ def request_llm(request_body: str, stream: bool = True, vllm_url: str = get_sett
141155
if client and not client.is_closed and not is_streaming_success:
142156
client.close()
143157

144-
async def _add_system_prompt(request_body: str) -> str:
158+
async def _add_system_prompt(request_body: str, is_api_key: bool) -> str:
145159
"""Add a system prompt to the messages."""
146160
request_body = json.loads(request_body)
147-
default_prompt = await get_system_prompt(request_body["model"], "default")
161+
default_prompt = await get_system_prompt(request_body["model"], "default", is_api_key)
148162
if default_prompt:
149163
request_body["messages"] = [{"role": "system", "content": default_prompt.format(current_date=datetime.now().strftime("%Y-%m-%d %H:%M:%S"))}] + request_body["messages"]
150164
return json.dumps(request_body)

0 commit comments

Comments
 (0)