Make server API endpoints accept client as query param

- The chat, search and update API will accept client as request param.
- This will allow logging the client from which these APIs was called.
This commit is contained in:
Debanjum Singh Solanky
2023-06-05 23:57:08 +05:30
parent 8617cf1389
commit 168c11cea7
2 changed files with 10 additions and 6 deletions

View File

@@ -70,6 +70,7 @@ def search(
r: Optional[bool] = False,
score_threshold: Optional[Union[float, None]] = None,
dedupe: Optional[bool] = True,
client: Optional[str] = None,
):
results: List[SearchResponse] = []
if q is None or q == "":
@@ -181,14 +182,16 @@ def search(
# Only log telemetry if query is new and not a continuation of previous query
if state.previous_query is None or state.previous_query not in user_query:
state.telemetry += [log_telemetry(telemetry_type="api", api="search", app_config=state.config.app)]
state.telemetry += [
log_telemetry(telemetry_type="api", api="search", client=client, app_config=state.config.app)
]
state.previous_query = user_query
return results
@api.get("/update")
def update(t: Optional[SearchType] = None, force: Optional[bool] = False):
def update(t: Optional[SearchType] = None, force: Optional[bool] = False, client: Optional[str] = None):
try:
state.search_index_lock.acquire()
state.model = configure_search(state.model, state.config, regenerate=force, t=t)
@@ -207,13 +210,13 @@ def update(t: Optional[SearchType] = None, force: Optional[bool] = False):
else:
logger.info("📬 Processor reconfigured via API")
state.telemetry += [log_telemetry(telemetry_type="api", api="update", app_config=state.config.app)]
state.telemetry += [log_telemetry(telemetry_type="api", api="update", client=client, app_config=state.config.app)]
return {"status": "ok", "message": "khoj reloaded"}
@api.get("/chat")
def chat(q: Optional[str] = None):
def chat(q: Optional[str] = None, client: Optional[str] = None):
if (
state.processor_config is None
or state.processor_config.conversation is None
@@ -277,6 +280,6 @@ def chat(q: Optional[str] = None):
conversation_log=meta_log.get("chat", []),
)
state.telemetry += [log_telemetry(telemetry_type="api", api="chat", app_config=state.config.app)]
state.telemetry += [log_telemetry(telemetry_type="api", api="chat", client=client, app_config=state.config.app)]
return {"status": status, "response": gpt_response, "context": compiled_references}

View File

@@ -3,11 +3,11 @@ from __future__ import annotations # to avoid quoting type hints
from collections import OrderedDict
import datetime
from importlib import import_module
from importlib.metadata import version
import logging
from os import path
from pathlib import Path
import platform
import requests
import sys
from time import perf_counter
import torch
@@ -184,6 +184,7 @@ def log_telemetry(telemetry_type: str, api: str = None, client: str = None, app_
request_body = {
"telemetry_type": telemetry_type,
"server_id": get_server_id(),
"server_version": version("khoj-assistant"),
"os": platform.system(),
"timestamp": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
}